Hi there! We're thrilled that you'd like to contribute to octoDNS. Your help is essential for keeping it great.
Please note that this project adheres to the Contributor Covenant Code of Conduct. By participating in this project you agree to abide by its terms.
If you have questions, or you'd like to check with us before embarking on a major development effort, please open an issue.
This project uses the GitHub Flow. That means that the main branch is stable and new development is done in feature branches. Feature branches are merged into the main branch via a Pull Request.
./script/bootstrapsource env/bin/activate./script/testgit checkout -b my-branch-name./script/lint passes without any warnings./script/format to make sure your changes follow Python's preferred
coding style./script/changelog create ... to add a changelog entry to your PR./script/coverage and open htmlcov/index.html
We will handle updating the version, tagging the release, and releasing the gem. Please don't bump the version or otherwise attempt to take on these administrative internal tasks as part of your pull request.
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
Write thorough tests. No PRs will be merged without 💯% code coverage. More than that tests should be very thorough and cover as many (edge) cases as possible. We're working with DNS here and bugs can have a major impact so we need to do as much as reasonably possible to ensure quality. While 💯% doesn't even begin to mean there are no bugs, getting there often requires close inspection & a relatively complete understanding of the code. More times than not the endeavor will uncover at least minor problems.
Bug fixes require specific tests covering the addressed behavior.
Write or update documentation. If you have added a feature or changed an existing one, please make appropriate changes to the docs. Doc-only PRs are always welcome.
Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
We target Python 3, support for Python 2 has been dropped.
Write a good commit message.
./script/bootstrap
source env/bin/activate
See the script/ if you'd like to run tests and coverage (script/coverage) and coverage (script/lint). After bootstrapping and sourcing the env/ commands in the octodns/cmds/ directory can be run with PYTHONPATH=. ./octodns/cmds/sync.py ...
We can only accept contributions that are compatible with the MIT license.
It's OK to depend on gems licensed under either Apache 2.0 or MIT, but we cannot add dependencies on any gems that are licensed under GPL.
Any contributions you make must be under the MIT license.