We're using a module ownership system similar to what Mozilla has.
The module owner role
Module owners have functional authority and responsibility over their area. Only the respective super reviewer can overrule their decisions, but this should not be necessary in practice.
Responsibilities for module owners
- Review and approve all changes to the module
- Grant or revoke commit access
- Maintain and improve quality
- Set the priority of new issues and reject them if necessary
- Ensure all high priority issues get tackled
One person tends to not be enough to take care of a module. Therefore module owners can designate peers that can also review and approve code, and otherwise help with their responsibilities.
Most modules have a designated super reviewer, who will oversee things at a higher level.
While the module owner will review all changes, certain changes should also be reviewed by the super reviewer, in particular:
- API changes (both public API as well as API between modules)
- Major refactoring
- New subprojects
For these types of changes, the module owner should review first and make sure that all of their comments are addressed, then request a super review.