First of all, thanks for the time to contribute. We welcome and appreciate contributions through Pull Requests that are following the GitHub Flow.
- Open a GitHub issue
- Fork the repository on GitHub
- Install the pre-commit hooks
- Update the documentation
- Update the tests
- Update the code
- Create a pull request
- Merge and release
For bug reports or requests please submit an issue in the appropriate repository.
In general, we advise you to open an issue and ask the CODEOWNERS and community any questions before you start working on your contribution.
Fork the repository into your own GitHub account and create a new branch as described in the GitHub Flow.
If the repository you're working on ships with a .pre-commit-config.yaml
, make sure that you install the hooks before
you start working. E.g. pre-commit install
.
We would like to encourage you to update the documentation before updating any code (see Readme Driven Development). This ensures the documentation stays up to date and allows you to think through the problem at a high level before you you start implementing your changes.
We also recommend updating the automated tests before updating any code (see Test Driven Development).
That means that you should add or update a test case, run all tests and verify that the new test fails with a clear error message and then start implementing the code changes to get that test to pass.
The test folder in every repo will have documentation on how to run the tests locally.
At this point, make your code changes and constantly test again your new test case to make sure that everything working properly. Do commit early and often and make useful commit messages.
If a backwards incompatible change cannot be avoided, please make sure to call that out when you submit a pull request, explaining why the change is absolutely necessary.
Create a pull request with your changes. Please make sure to include the following:
- A description of the change, including a link to your GitHub issue.
- Any notes on backwards incompatibility or downtime.
The CODEOWNERS of the repository will review your code and provide feedback. If everything looks good, they will merge the code and release a new version while following the principles of Semantic Versioning (SemVer).