We're glad you're thinking about contributing to this project! We welcome all friendly contributions, including:
- bug reports
- comments and suggestions
- feature requests
- bug fixes
- feature implementations and enhancements
- documentation updates and additions
To ensure a welcoming environment, we follow the Contributor Covenant Code of Conduct and expect contributors to do the same.
Before making a contribution, please familiarize yourself with this document, as well as our LICENCE and README.
We use GitHub issues to track bug reports, comments, suggestions, questions, and feature requests.
Before submitting a new issue, please check to make sure a similar issue isn't already open. If one is, contribute to that issue thread with your feedback.
When submitting a bug report, please try to provide as much detail as possible. This may include:
- steps to reproduce the problem
- screenshots demonstrating the problem
- the full text of error messages
- relevant outputs
- any other information you deem relevant
Please note that the GitHub issue tracker is public; any issues you submit are immediately visible to everyone. For this reason, do not submit any information that may be considered sensitive.
If you are planning to work on a reported bug, suggestion, or feature request, please comment on the relevant issue to indicate your intent to work on it. If there is no associated issue, please submit a new issue describing the feature you plan to implement or the bug you plan to fix. This reduces the likelihood of duplicated effort and also provides the maintainers an opportunity to ask questions, provide hints, or indicate any concerns before you invest your time.
Code that is contributed to this project should follow these practices:
- Make changes in a personal fork of this repository
- Use descriptive commit messages, referencing relevant issues as appropriate (e.g., "Fixes #555: Update component to...")
- Follow the styles and conventions as enforced by the lint configurations and as evidenced by the existing code
- Prefer self-explanatory code as much as possible, but provide helpful comments for complex expressions and code blocks
- Ensure any user-facing components are accessible (i.e., compliant with Section 508)
- Include unit tests for any new or changed functionality
- Update documentation to reflect any user-facing changes
Before submitting a Pull Request for a code contribution:
- Rebase on master if your code is out of synch with master
- If you need help with this, submit your Pull Request without rebasing and indicate you need help
- Build the code (if applicable) and ensure there are no new warnings or errors
- Run the tests and ensure that all tests pass
- Run the linter and ensure that there are no linter warnings or errors
For details on how to build, test, and lint, see the individual project README files.
Pull requests should include a summary of the work, as well as any specific guidance regarding how to test or invoke the code.
When project maintainers review the pull request, they will:
- Verify the contribution is compatible with the project's goals and mission
- Run the project's unit tests and linters to ensure there are no violations
- Deploy the code locally to ensure it works as expected
- Review all code changes in detail, looking for:
- potential bugs, regressions, security issues, or unintended consequences
- edge cases that may not be properly handled
- application of generally accepted best practices
- adequate unit tests and documentation
Congratulations! Your code will be merged by a maintainer into the project's master branch!
If the review process uncovers any issues or concerns, a maintainer will communicate them via a Pull Request comment. In most cases, the maintainer will also suggest changes that can be made to address those concerns and eventually have the Pull Request accepted. If this happens:
- address any noted issues or concerns
- rebase (if necessary) and push your code again (may require a force push if you rebased)
- comment on the Pull Request indicating it is ready for another review
All contributions to this project will be released under the Apache 2.0 license. By submitting a pull request, you are agreeing to comply with this license. As indicated by the license, you are also attesting that you are the copyright owner, or an individual or Legal Entity authorized to submit the contribution on behalf of the copyright owner.