This document contains information about contributing to the project. Please read through if you're ready to start working with us!
You'll need a few things to continue.
git: used to manage the codebasepixi: a package manager- A code editor, like Zed Editor or Visual Studio Code.
- A GitHub account: to see tasks and contribute your ideas
Each of those links will guide you though setting it up. If you need any help, please reach out!
We use git and GitHub to manage our code and track progress on our goals.
Please install git on your computer to make sure everything works right! You may also want the GitHub CLI (gh command) to log in to GitHub, and easily checkout pull requests. We'll mention those later. But, for now, please make sure to install it!
In git terminology, "commits" are logical changes to a project. We make lots of them when developing the Rover's code! Please make sure to "commit early and often" - it'll make reviewing your code much easier! :)
On Rover, we use the Conventional Commits style guide for commit messages. It helps folks know what you're changing. Here are a few examples of good commit messages: 🔥🦾
fix(interfaces/WheelsMsg): typofeat(nav): improve path planningdocs(README): link to launch file tutorial
And some bad commit messages: 😭❌
typoFixed the Navigator Node's path planning by adding a parameter to the ROS 2 node which sho...linked tutorial
We use pull requests (PRs) to separate our work. We've got many members, so we don't usually push to the main branch.
For more info about how to use pull requests, please see this short article. You'll often want to download someone's PR onto your machine - the process of doing this is explained here.
We review each other's pull requests to ensure high-quality work. It helps catch bugs. This article from Project Pythia is great at explaining why and how to do it!
We have automatic checks that run when you make a pull request or push new code. The CI system will "continously integrate" new changes, building and testing them. After they pass, and the review process is complete, we'll merge your code into main!
We've used merge commits before, but we tend to "rebase merge" submitted PRs to keep the commit history clean. This avoids potentially messy and incompatible histories, and helps the repo stay accessible to new members.
- Documentation
- Please document everything you make!
- Python has
"""doc-strings, and Rust has///doc-comments.
- Python has
- Each node/package should have its own
README.mdfile.
- Please document everything you make!
- Testing
- Write tests for the code you make.
- Rust has in-module testing and external testing, while Python only has external testing through Pytest.
- Document the reasons behind tests.
- It won't be clear in several months - we always forget lol
- Adding a doc-string/comment can help a lot!
- Write tests for the code you make.
- Typing
- A lot of people neglect types in Python, but we use
basedpyrightandruffto ensure correct type usage. - Always use the type syntax (like
speed: float = 0.0) in your functions and types. - We check these in CI - we can't merge your PR until it's typed properly.
- A lot of people neglect types in Python, but we use