How to Contribute

We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.

Contributor License Agreement

Contributions to this project must be accompanied by a Contributor License Agreement. You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the Apache 2.0 license; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the Apache 2.0 license; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it) is maintained indefinitely
    and may be redistributed consistent with this project or the open
    source license(s) involved.

You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again.


The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Home Assistant CLA, which was in turn derived from the Linux Developer Certificate Of Origin, but modified to explicitly use the Apache 2.0 license and not mention sign-off.

Code reviews

All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Please follow these best practices:

Semantic Releases adheres to the Semantic Release conventions. All package releases (to npm, pypi, docker) are completely automated in the Continuous Integration and Deployment scripts, which trigger on every Pull Request and commit to a project master branch.

Community Guidelines

This project follows Google's Open Source Community Guidelines.

Setup Your Development Environment

Now that you are familiar with the contribution guidelines, you are ready to start coding. Follow this guide to set up your dev environment.