How To Contribute
=================

We encourage all collaborations! However, we follow a pull-request work flow to help facilitate a simplified code-review process.
If you would like to contribute, we kindly request that any of your work be done in
a branch. Rules for branching and merging are outlined below:

#. Branches - The scope of your branch should be narrow. Do not make a branch only for changing documentation, and then refactor how task.py works. These should be two totally separate branches.

#. Testing - You should test your branch before making a pull request. Do not make a pull request with untested code.

#. Committing - Use helpful commit messages. Do not use messages like "updates", "bug fix", and "updated a few files" etc. Please make these commit messages at least somewhat helpful. Use lots of commits, do not make 1 bulk commit of all of the changes that you make. This practice makes it hard for others to review.

#. Pull request - When you are ready to make a pull request, please try to itemize all of the changes that you made in at least moderate depth. This will alert everyone reviewing the code of possible things to check to make sure that you didn't break anything.

#. Merging - Do NOT merge your own pull request. Contributors should review each and every pull request before merging into the master branch. Please allow at least a few days before commenting and asking for status. If the depth of changes is deep, please allow at least a few weeks.

#. Master branch - NEVER commit to the master branch directly unless there is a serious bug fix.

If you are unfamiliar with branches in github, please see the link below:

`Working with Branches <https://help.github.com/articles/using-pull-requests/>`_
