# How to Contribute

Contributions are welcome! Not familiar with the codebase yet? No problem!
There are many ways to contribute to open source projects: reporting bugs,
helping with the documentation, spreading the word and of course, adding
new features and patches. 

## Getting Started
  1. Make sure you have a [GitHub](https://github.com/) account.
  2. Open a _new issue_, assuming one does not already exist.
  3. Clearly describe the issue including steps to reproduce when it is a bug.

## Making Changes
  * [Fork](https://help.github.com/articles/fork-a-repo) the repository on GitHub.
  * Create a topic branch from where you want to base your work (this is usually the ``master`` branch).
  * Please avoid working directly on the ``master`` branch.
  * Make commits of logical units (if needed rebase your feature branch before
  submitting it).
  * Check for unnecessary whitespace with ``git diff --check`` before committing.
  * Make sure your commit messages are enough descriptive.
  * If your commit fixes an open issue, reference it in the commit message (#15).
  * Make sure your code conforms to [PEP8](http://www.python.org/dev/peps/pep-0008/).
  * Make sure you have added the necessary tests for your changes.
  * Run all the tests to assure nothing else was accidentally broken.
  * Don't forget to add yourself to _AUTHORS_.

These guidelines also apply when helping with documentation (actually,
for typos and minor additions you might choose to _fork and
edit_).

## Submitting Changes
  1. Push your changes to a topic branch in your fork of the repository.
  2. Submit a [Pull Request](https://help.github.com/articles/creating-a-pull-request).
  3. Wait for maintainer feedback.

## First time contributor?
It's alright. We've all been there. See next chapter.

## Don't know where to start? 
There are usually several TODO comments scattered around the codebase, maybe
check them out and see if you have ideas, or can help with them. Also, check
the _open issues_. And what about documentation?
