Expand contributor guidelines
Description
Fix #796 (closed)
Notes for reviewer
-
Still need to update merge request template and sync the two -
wait for changes by @nikolai.morin to land on master to avoid a conflict !771 (merged)
If you want to test the links from the MR template to the docs, they will only work once the MR is merged
-
test all links locally by replacing base URL manually
Closes #796 (closed)
Pre-review checklist for the author before submitting for review
Every developer is encouraged to be familiar with our contributor guidelines.
- MR formalities
-
"WIP" or "Draft" removed from the MR title -
MR title and description help a friendly human understand the problem solved -
MR has a link to the original issue in description -
MR is configured to allow commits from developers with access to push to the target branch -
Sensible notes for the reviewer added to the section above to facilitate review -
Target branch set correctly. Default: master
-
MR assigned to a capable reviewer. Default: @JWhitleyWork -
Splitting the MR into smaller, easier-to-review merge requests was considered
-
-
Code and tests-
Code is properly formatted -
Tests affected by new code pass locally -
Reasonable coverage with unit tests of 90+%; else create a follow-up ticket -
Review any // TODO
item added in the MR that can be addressed without the reviewer's help
-
-
Documentation-
New and modified code has accurate doxygen documentation -
Diagrams are committed
-
Checklist for the reviewer
Only the reviewer is allowed to make changes in this section!
Items not applicable to this MR are crossed out by the reviewer.
-
For new nodes, the checklist is expanded and reviewed -
For a new package, the checklist is expanded and reviewed -
Reviewer crossed out non-applicable items
Checklist
If the MR provides an improvement, don't hesitate to add a
Mark all the items that are done.
Checklist for development
- Basic checks
-
The MR title describes what is being done on the ticket -
All functional code written in C++14, tooling code may be written in Python 3.5+ or Bash -
Commit messages formatted properly
-
-
Code correctness-
The problem/feature is solved (reproducibly) -
The solution is performant enough for the use case in mind -
Any disabled lints inside the code or at the package level are justified -
No 3rd-party license issue
-
-
Open work-
Any added source-code comment about future work refers to a follow-up GitLab issue explicitly; e.g., // TODO #551 refactor code below
-
- Documentation
-
New classes, methods, functions in headers are documented with doxygen-style comments -
If implementation (of a function...) is modified, the doxygen documentation is updated accordingly -
The design article is updated with the implementation -
Drawings are created when needed and committed to git
-
-
Testing-
Code coverage with unit tests does not decrease. Aim for coverage with unit tests of 90+%; else create a follow-up ticket -
Unit tests make sense and cover the business logic and error cases -
For a new ROS2 node, at least the basic launch integration test is included -
Integration tests are sensible and not flaky
-
Checklist for new ROS2 nodes
-
Every nodes is registered as a component -
The naming conventions are followed
Checklist for new package
- Structure
-
The package name and organization into files is sensible -
Core functionality is separated from the ROS2-specific part where reasonable -
There is a design document that explains the package at a high level -
All dependencies are explicitly included in package.xml
with the proper<*depend>
declaration
-
When starting from scratch, new packages should be created with the autoware_auto_create_pkg
macro and they will automatically satisfy the following criteria.
- If an existing package is added to
AutowareAuto
, it should match the output ofautoware_auto_create_pkg
regarding-
same set of linters -
visibility control -
finding build dependencies in cmake
withament_auto_find_build_dependencies()
-
installing with ament_auto_package()
-
Post-review checklist for the author
After receiving approval:
-
Rendered documentation looks as expected -
All checkboxes in the MR checklist are checked or crossed out. Syntax example: 1. [ ] ~~this item crossed out~~
-
Developers were informed about breaking changes on slack in the committers-autoware-auto channel -
Assign MR to maintainer with sufficient rights to merge. Default: @JWhitleyWork