diff --git a/docs/contribute.md b/docs/contribute.md index f0a80b161..92b0ef984 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -1,3 +1,85 @@ # Contributing to Nebula -WIP - please check back soon! +Thank you for your interest in contributing to Nebula! +We’re excited to work with the open-source community to build an even better project. +Before submitting your contributions, please take a moment to review our guidelines to ensure a smooth process. + +## Getting Started + +- Set up your development environment: [installation](installation.md) +- Enable [pre-commit](https://pre-commit.com/#install) + + ```shell + # Install pre-commit on your system + pip3 install pre-commit + + # Enable pre-commit for Nebula + cd ~/nebula_ws/src + pre-commit install + ``` + +- Docs are found at [tier4.github.io/nebula](https://tier4.github.io/nebula) + +## How to Contribute + +### About Large Contributions + +For large contributions, i.e. more than a few dozen lines or new features, +[create an issue](https://github.com/tier4/nebula/issues/new) first. +This allows us to give feedback early and allows for discussion about how/if the feature fits into +Nebula. + +Once an issue is ready to be turned into a PR, make sure to comment on the issue that you are currently working on it. +This prevents double work from other community members. + +Do not be afraid to open a draft PR in an early stage of your implementation. +This gives us a chance to spot potential problems early (e.g. line count) and lets us align with you better. + +### What gets merged? + +We are keen on merging PRs that are clear wins for the project: + +- support for popular sensor models +- unit tests +- bug fixes +- robustness improvements, error handling and reporting + +If a PR has value for the project but takes a long time or a lot of effort to review, +we will have to reject it. We will let you know if we think we can handle the scope of your +contribution in the discussion of your issue. + +### What doesn't get merged? + +- 500+ line PRs: split your PR into smaller ones +- PRs without sufficient unit tests: if unit tests are not rigorous enough or have low coverage +- PRs with multiple unrelated changes: split up into multiple PRs +- performance-heavy features: features with latency increases of more than a low single-digit percentage +- style changes +- big refactorings +- features implemented only for some vendors + +## Pull Requests + +Pull requests should be against the `develop` branch. +Hotfix PRs should be against the `master` branch. + +A good PR fulfills all of the following: + +- passes pre-commit +- passes all CI checks +- a single clearly stated goal +- every line changed directly contributes to that goal +- unit tests for added/fixed functionality where applicable +- documentation for added functionality +- a reproducible evaluation / testing method where applicable + - e.g. Rosbags or PCAPs attached + - for performance optimizations, easily runnable benchmarks + +We cannot start a review before pre-commit and CI are passing. + +## Other Ways to Contribute + +Bug reports in GitHub issues: + +- provide logs, PCAPs and videos where possible +- specify the exact version and environment used