New merging guidelines
Hi everybody! So we have had some issues lately in the review process, that I think many of us are aware of, and mostly come from the fact that review and merging guidelines are designed for a small team where everybody has expertise in everything. As we grow and move towards specialization, I believe we need to give more rights to maintainers, and also respect their knowledge a bit more. So I propose to rework the == Approval requirements ==
section in https://wiki.postmarketos.org/wiki/Rules_for_merging to contain the following:
Before being merged, merge requests should comply with the following approval rules (team member is used to refer to any member of CT and TCs):
- Zero approvals: MRs in any project that are trivial or contain critical fixes that must be deployed immediately
- For projects in https://wiki.postmarketos.org/wiki/Projects that are not pmbootstrap:
- If the project has maintainers, one approval from at least one maintainer
- If the project has no maintainers, one approval from team members
- For pmbootstrap:
- For small MRs that contain fixes or improvements, one approval from any team member
- For MRs that contain new features or substantial changes: two approvals, at least one from a maintainer
- For pmaports (we right now use CODEOWNERS to identify maintainers, when we have our own instance, we will use APKBUILD Maintainer lines and aports-qa-bot):
- Packages under
main
anddevice
:- Simple package upgrade for edge (not stable!) or package maintenance: one approval
- Any other change: two approvals, at least one from a maintainer (if the package has one). If the maintainer has been pinged and is unresponsive or has dropped the project, they shall be removed as maintainer
- Device move to a [redacted]: four approvals and at least one week for review
- Packages under
temp
andmodem
: one approval from any team member
- Packages under
Eagerly looking forward to feedback :D @postmarketos
EDIT: Following Ollie's advise, I'm putting the same information in a table format:
Critical fixes | Trivial MRs | Any other MRs | Move device from category | |
---|---|---|---|---|
pmaports | 1 any approval, notify maintainer | 1 any approval | 1 package maintainer approval + 1 any approval | 1 approval from M + 2 CT + 1 CT/TC/M + minimum 1 week |
pmbootstrap | 1 any approval, notify maintainers (only CT can merge) | 1 maintainer approval | 1 maintainer approval | does not apply |
Other projects with a maintainer | 1 any approval, notify maintainers | 1 any approval | 1 maintainer approval | does not apply |
Other projects without a maintainer | 1 any approval | 1 any approval | 1 any approval, a maintainer shall be sought | does not apply |
any approval references anybody with permission to approve
Approvals from merge request authors do not count. If the maintainer creates a merge request, "1 approval from M" becomes "1 approval from other maintainer, if such maintainer exists, or otherwise 1 any approval"
- Critical fixes:
- some devices don't boot anymore without a specific fix
- edge blog posts
- Trivial MRs:
- typo fixes
- fix broken links
- aport-kind package upgrades in pmaports