Title: Contributing
## Contributing to libcloud ##
This pages explains how you can contribute to the libcloud project.
Keep in mind that all kind of contributions are welcome (ideas, code, tests, documentation, examples, ...).
Process
1. Start a discussion on the [mailing list](devinfo.html) (this step is optional and only required if you want to implement big feature or a change)
1. Open a new issue on the [bug tracker](https://issues.apache.org/jira/browse/LIBCLOUD) (Jira)
2. Fork libcloud [github git repository](https://github.com/apache/libcloud)* and make your changes
1. Create a new branch for your changes:`git checkout -b jira_issue_id_change_name`
2. Make your changes
3. Write tests for your modifications and make sure that all the tests still pass. For more informations about running the tests refer to the [Testing](/testing.html) page.
3. Create a patch with your changes
1. git (format-patch): `git format-patch --no-prefix --stdout trunk > patch_name.patch`
2. git (diff): `git diff --no-prefix trunk your_branch > patch_name.patch`
3. svn: `svn diff > patch_name.patch`
4. Attach patch to the ticket you have created
5. Wait for your patch to be reviewed and / or accepted
Things To Keep In Mind
* Any non-trivial change must contain tests
* All the functions and methods must contain [pydoc](http://codespeak.net/~mwh/pydoctor/) docstrings which are used to generate API documentation. You can find a lot of examples of docstrings in the existing code e.g. - `libcloud/compute/base.py`
*Note: If you want you can also use SVN repository, but git and github make branching and contributing a bit easier.*
Style Guide
1. We follow [PEP8 Python Style Guide](http://www.python.org/dev/peps/pep-0008/)
2. Use 4 spaces for a tab
3. Make sure edited file doesn't contain any trailing whitespace
You can verify that your modifications don't break any rules by running the `pep8` script - `pep8 libcloud/edited_file.py`.