Contributing to Theseus
August 3, 2022 ยท View on GitHub
We want to make contributing to Theseus as easy and transparent as possible.
Developer Guide
- Fork the repo and install with development requirements.
git clone <link_to_fork> && cd theseus pip install -e ".[dev]" - Make a branch from
main. See the workflow model we follow.git checkout -b <username>.<appropriate_branch_name> main - Make small, independent, and well documented commits. If you've changed the API, update the documentation. Add or modify unit tests as appropriate. Follow this code style.
- See pull requests guide when you are ready to have your code reviewed to be merged into
main. It will be included in the next release following this versioning. - See issues for questions, suggestions, and bugs.
- If you haven't already, complete the Contributor License Agreement and see license.
Workflow Model
We follow the Trunk-based model. Small and frequent PR of new features will be merged to main and a tagged release will indicate latest stable version on main history.
Code Style
For Python we use black and isort for linting and code style, and use typing. We also use pre-commit hooks to ensure linting and style enforcement.
pip install pre-commit && pre-commit install && pre-commit run --all-files
Pull Requests
- We encourage more smaller and focused PRs rather than big PRs with many independent changes.
- Use this PR template to submit your code for review. Consider using the draft PR option to gather early feedback.
- Add yourself to the
Assignees, add Mustafa Mukadam and Luis Pineda as reviewers, link to any open issues that can be closed when the PR is merged, and add appropriateLabelsandMilestone. - We expect the PR is ready for final review only if Continuous Integration tests are passing.
- Keep your branch up-to-date with
mainby rebasing as necessary. - We employ
squash-and-mergefor incorporating PRs. Add a brief change summary to the commit message. - After PR is approved and merged into
main, delete the branch to reduce clutter.
Versioning
We use semantic versioning. For core Theseus team member, to prepare a release:
- Update version in init file.
- Make sure all tests are passing.
- Create a release tag with changelog summary using the github release interface.
Issues
We use GitHub issues to track bugs. You can also reach out to us there with questions or suggestions. Please ensure your description is clear by following our templates.
Contributor License Agreement
In order to accept your pull request, we need you to submit a Contributor License Agreement (CLA). You only need to do this once to work on any of Meta's open source projects. Complete your CLA here: https://code.facebook.com/cla
License
By contributing to Theseus, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.