Table of Contents
We want to make contributing to SuperSonic as easy and transparent as possible. The most helpful ways to contribute are:
- Provide feedback.
- Report bugs. In particular, it’s important to report any crash or correctness bug. We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
- Report issues when the documentation is incomplete or unclear, or an error message could be improved.
- Make feature requests. Let us know if you have a use case that is not well supported, including as much detail as possible.
- Contribute to the SuperSonic ecosystem.
We actively welcome your pull requests.
- Fork the repo and create
your branch from
development
. - Follow the instructions for building from source to set up your environment.
- If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the
make test
suite passes. - Make sure your code lints (see Code Style below).
- If you haven't already, complete the Contributor License Agreement ("CLA").
We want to ease the burden of code formatting using tools. Our code style is simple:
- Python: black and isort.
- C++: Google C++
style with 100
character line length and
camelCaseFunctionNames()
.
We use pre-commit to ensure that code is formatted prior to committing. Before submitting pull requests, please run pre-commit. See the config file for installation and usage instructions.
Other common sense rules we encourage are:
- Prefer descriptive names over short ones.
- Split complex code into small units.
- When writing new features, add tests.
- Make tests deterministic.
- Prefer easy-to-use code over easy-to-read, and easy-to-read code over easy-to-write.