How to Contribute

⚠️ This wiki is community-maintained. The wiki should NOT be considered "word of comma". Edit suggestions are welcome and encouraged!

First Steps to Contributing to OpenPilot

  • Know Python / C++ (depends on which part of OP you want to contribute to)
  • Learn Git and Github Pull Requests
  • Read through comma's blog posts related to development: https://blog.comma.ai/
  • Read the openpilot CONTRIBUTING.md file
  • Look at the issues page on Github (Particularly the "good first issue" label: https://github.com/commaai/openpilot/labels/good%20first%20issue)
  • Read through the code and understand the architecture
  • Search Discord with any questions you think of before asking (as per #guidelines )
  • If you're not into coding, join the comma pencil movement! You can help comma train their driving model by annotating driving data. Join the Discord and check out the pinned messages in the #comma-pencil channel!




📘

For the most up to date document refer to openpilot repo on Github

Found in openpilot/docs/CONTRIBUTING.md

Our software is open source so you can solve your own problems without needing help from others. And if you solve a problem and are so kind, you can upstream it for the rest of the world to use. Check out our post about externalization. Development activity is coordinated through our GitHub Issues, GitHub Discussions, and Discord.

Getting Started




What Contributions Are We Looking For?

openpilot's priorities are safety, stability, quality, and features, in that order. openpilot is part of comma's mission to solve self-driving cars while delivering shippable intermediaries, and all development is towards that goal.

What gets merged?

The probability of a pull request being merged is a function of its value to the project and the effort it will take us to get it merged.
If a PR offers some value but will take lots of time to get merged, it will be closed.
Simple, well-tested bug fixes are the easiest to merge, and new features are the hardest to get merged.

All of these are examples of good PRs:

What doesn't get merged?

  • arbitrary style changes: code is art, and it's up to the author to make it beautiful
  • 500+ line PRs: clean it up, break it up into smaller PRs, or both
  • PRs without a clear goal: every PR must have a singular and clear goal
  • UI design changes: we do not have a good review process for this yet
  • New features: We believe openpilot is mostly feature-complete, and the rest is a matter of refinement and fixing bugs. As a result of this, most feature PRs will be immediately closed, however the beauty of open source is that forks can and do offer features that upstream openpilot doesn't.

First contribution

Check out any good first issue to get started.

What do I need to contribute?

A lot of openpilot work requires only a PC, and some requires a comma device.
Most car-related contributions require access to that car, plus a comma device installed in the car.




Pull Requests

Pull requests should be against the master branch. If you're unsure about a contribution, feel free to open a discussion, issue, or draft PR to discuss the problem you're trying to solve.

A good pull request has all of the following:

  • a clearly stated purpose
  • every line changed directly contributes to the stated purpose
  • verification, i.e. how did you test your PR?
  • justification
    • if you've optimized something, post benchmarks to prove it's better
    • if you've improved your car's tuning, post before and after plots
  • passes the CI tests




Contributing without Code

  • Report bugs in GitHub issues.
  • Report driving issues in the #driving-feedback Discord channel.
  • Consider opting into driver camera uploads to improve the driver monitoring model.
  • Connect your device to Wi-Fi regularly, so that we can pull data for training better driving models.
  • Run the nightly branch and report issues. This branch is like master but it's built just like a release.
  • Annotate images in the comma10k dataset.