# 11. Contributing

Contributions to the library are welcome! Here are some guidelines to follow.

## 11.1. Suggestions

Please make suggestions for additional components or enhancements to the codebase by opening an issue explaining your reasoning clearly.

## 11.2. Bugs

Please submit bug reports by opening an issue explaining the problem clearly using code examples.

## 11.3. Documentation

The documentation source lives in the docs folder. Contributions to the documentation are welcome but should be easy to read and understand.

## 11.4. Commit messages and pull requests

Commit messages should be concise but descriptive, and in the form of a patch description, i.e. instructional not past tense (“Add LED example” not “Added LED example”).

Commits which close (or intend to close) an issue should include the phrase “fix #123” or “close #123” where `#123` is the issue number, as well as include a short description, for example: “Add LED example, close #123”, and pull requests should aim to match or closely match the corresponding issue title.

Copyrights on submissions are owned by their authors (we don’t bother with copyright assignments), and we assume that authors are happy for their code to be released under the project’s license. Do feel free to add your name to the list of contributors in `README.rst` at the top level of the project in your pull request! Don’t worry about adding your name to the copyright headers in whatever files you touch; these are updated automatically from the git metadata before each release.

## 11.5. Backwards compatibility

Since this library reached v1.0 we aim to maintain backwards-compatibility thereafter. Changes which break backwards-compatibility will not be accepted.

## 11.6. Python 2/3

The library is 100% compatible with both Python 2.7 and Python 3 from version 3.2 onwards. Since Python 2 is now past its end-of-life, the 1.6.0 release (2021-03-14) is the last to support Python 2.