The Stable Maintainer Role
Goals
- Have stable maintainers
- Work out what their role is
- Document the master maintainer and stable maintainer roles
- Make sure Nick doesn't have to do stable maintainer all the time
Current Process
Initial merge:
- Find merge_ready tickets
- Look at it all (each ticket? the list of tickets?)
- Check CI
- Can we automate checking CI?
- Check the ticket and branch targets
- Can we automate checking the branch target?
- If the target is master, do a merge to master.
- If the target is an earlier release, and it is a trivial fix, do a merge to the target.
- If it is a non-trivial backport, do a merge to master, and mark for backport.
Backport merge:
- Work out how severe it is, how risky it is, and how tested it is.
- If we decide to backport to a release, do a merge to that release.
Doing a merge:
- Read the code.
- Merge the branch.
- Merge forward if needed.
- If it is not marked for backport, close the ticket, and the pull request.
- GitHub closes pull requests, unless we have changed the commits before merge. How can we automate manual closes?
Doing a release:
- If we have an active alpha series, put out an alpha every few weeks.
- Put out a stable release every 1-2 months.
- Put out oldstable and LTS releases as needed.
Evaluating backports:
- Ideal backports are:
- high-severity,
- low-risk,
- low-complexity,
- tested in multiple alphas, including Tor Browser and Debian.
- The most difficult backports are security fixes:
- high-severity,
- high-risk,
- untested.
Proposals
- Always merge to master first (no trivial backports)
- Avoid last-minute, high-risk backports. Always backport to the branch a few weeks before the release.
- Always backport to version x, and all later versions. If needed, backport to version y later (y < x).
- Make consistent decisions
- Have a 3-person rule: coder, reviewer, and master-merger must be different people.
- Stable maintainers can be any one of the 3.
- Always check CI on branches pre-merge, and pre-push to git.torproject.org
- Unless the commits are exactly the same in pre-merge and pre-push
- Proposed merger roles: | Release | Timing | nickm | dgoulet | asn | teor | |------------|--------------------------|-----------|------------|----------------|---------| | master | at least once per week | primary | HS, Kist | HS, Guards, PT | ? | | backports | about once every 2 weeks | secondary | (as above) | (as above) | primary |
The list of subsystems that dgoulet and asn maintain are in: https://gitweb.torproject.org/tor.git/tree/doc/HACKING/Maintaining.md#n44
Action Items
- Open tickets for action items
- Update stable maintainer guidelines
- Put a maintainer table on the network team wiki
- Update commit bits in gitolite
- Work out if we can disable merging to unsupported branches
- Work out if we can disable accidentally pushing feature branches
- Work out if we can stop back-merging (merging a branch based on master to an earlier maint branch)
- Using a script?
- Discuss with team: do we want regular stable release dates?
- Update merge role subsystems from subsystems maintainer document? Or just reference that document?