.. _contributing:

============
Contributing
============

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

Suggestions
===========

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

Bugs
====

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

Documentation
=============

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

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.

Backwards compatibility
=======================

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

Python 2/3
==========

The library is 100% compatible with both Python 2 and 3. We intend to drop
Python 2 support in 2020 when Python 2 reaches `end-of-life`_.

.. _docs: https://github.com/RPi-Distro/python-gpiozero/tree/master/docs
.. _issue: https://github.com/RPi-Distro/python-gpiozero/issues
.. _end-of-life: http://legacy.python.org/dev/peps/pep-0373/
