Contributing#
We welcome contributions to the Robot Control Stack!
Development Setup#
Clone the repository.
Install dependencies (see Getting Started).
Development Tools#
Install the development dependencies:
# from root directory
pip install -ve '.[dev]' --no-build-isolation
We provide a Makefile with several useful commands for development.
Python#
Formatting:
make pyformatUses
isortandblackto format code.Linting:
make pylintRuns
ruffandmypy.Testing:
make pytestRuns the test suite.
Type Stubs:
make stubgenGenerates Python type stubs for the C++ bindings.
C++#
Formatting:
make cppformatUses
clang-formatto format C++ code.Linting:
make cpplintRuns
clang-tidy.
General#
Commit:
make commitUses
commitizento help you create conventional commits.
Code Style#
Python: We use
rufffor linting and formatting.C++: We use
clang-formatandclang-tidy.
Commit Messages#
We follow the Conventional Commits specification. This allows us to automatically generate changelogs and determine semantic versioning.
Format: <type>[optional scope]: <description>
Types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (white-space, formatting, etc)refactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependenciesci: Changes to our CI configuration files and scriptschore: Other changes that don’t modify src or test files
Examples:
feat(fr3): add support for new gripperfix(sim): fix collision detection bugdocs: update installation instructions
See conventionalcommits.org for more details.
Pull Requests#
Fork the repo and create a new branch for your feature or fix.
Make your changes and commit them using the conventional commit format.
Push your branch and open a Pull Request.
Ensure all CI checks pass.