The following are guidelines and suggestions for contributing to Algorithmiq's repositories.
Please see our GitHub organization page for a brief overview of our projects.
Questions come up. We strive to have helpful documentation, but it's unlikely to have all the answers. If you have a question, please search the documentation and the GitHub issues for answers. If you can not find the answer then feel free to open a GitHub issue with the question, using the "Question" template.
We use GitHub's issue feature for bug tracking in our repositories. If you think you have found a bug please first search the issues to see if it has already been reported. If not, feel free to open a new issue using the "Bug report" template.
We're happy to consider implementing new features. Just be aware: we may have other, more pressing priorities to attend to first. Like bugs, we use GitHub's issue feature for tracking feature requests. Please do a quick search to make sure someone else hasn't already suggested the feature before opening a new issue using the "Feature request" template.
If you want to contribute code to an Algorithmiq project go ahead and open a pull request (PR). We recommend you first create a draft PR explaining what you are going to do. This gives our team a chance to provide feedback and help throughout the process. We welcome contributions to any part of our projects, not just source code.
Please make sure your PR follows our coding conventions.
This section describes how to get your contributions merged into our repositories. The procedure for contributing code is exactly the same for the core development team and for external contributors:
- Maintainers do not push directly to the
main
branch of any repository. - Maintainers do not review their own patches.
- Approval of one or more maintainers is sufficient for trivial patches, such as typos and trivial bugfixes.
- For any patch that is not trivial, two maintainers need to review and approve the patch.
Finally, we do not require any formal copyright assignment or contributor license agreement. Any contributions intentionally sent upstream are presumed to be offered under terms of the choose license
- Make sure you have a GitHub account.
- On your local machine, clone the repository.
- Add some really awesome code to your local copy of the repository. It's usually a good idea to make changes on a branch with the branch name relating to the feature you are going to add.
- When you are ready for others to examine and comment on your new feature, navigate to the repository GitHub page and open a Draft pull request (PR). Note that after you launch a PR from one of your branches, all subsequent commits to that branch will be added to the open pull request automatically. Each commit added to the PR will be validated for mergeability, compilation and test suite compliance; the results of these tests will be visible on the PR page.
- If you're providing a new feature, you must add test cases and documentation.
- When the code is ready to go, make sure you run the full or relevant portion of the test suite on your local machine to check that nothing is broken.
- When you are confident your code is ready to be considered for merging, remove the Draft status from your pull request.
The code will not be merged until:
- the continuous integration passes, and
- multiple core developers give "Approved" reviews.
- General GitHub documentation
- PR best practices
- A guide to contributing to software packages
- Thinkful PR example
All interactions with the Algorithmiq organization are governed by our Code of Conduct.
This file is based heavily on Atom's CONTRIBUTING.md and XCFun's CONTRIBUTING.md.