mirror of
https://github.com/NixOS/rfcs.git
synced 2025-12-02 15:11:10 +01:00
RFC-0039: unprivileged maintainer team (#39)
RFC-0039: unprivileged maintainer team
This commit is contained in:
parent
ce738bb101
commit
138600bd78
1 changed files with 185 additions and 0 deletions
185
rfcs/0039-unprivileged-maintainer-teams.md
Normal file
185
rfcs/0039-unprivileged-maintainer-teams.md
Normal file
|
|
@ -0,0 +1,185 @@
|
||||||
|
---
|
||||||
|
feature: unprivileged-maintainer-teams
|
||||||
|
start-date: 2019-01-16
|
||||||
|
author: Graham Christensen <graham@grahamc.com>
|
||||||
|
co-authors: zimbatm <zimbatm@zimbatm.com>
|
||||||
|
related-issues: https://github.com/NixOS/ofborg/pull/303
|
||||||
|
---
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
[summary]: #summary
|
||||||
|
|
||||||
|
Package maintainers who are not able to commit directly to Nixpkgs
|
||||||
|
don't have adequate tools to attentively maintain their package.
|
||||||
|
OfBorg requests reviews of maintainers it can identify. GitHub only
|
||||||
|
allows requesting a review of a Collaborator of the repository.
|
||||||
|
|
||||||
|
This RFC bridges that gap, and allows OfBorg to request reviews of
|
||||||
|
maintainers.
|
||||||
|
|
||||||
|
# Motivation
|
||||||
|
[motivation]: #motivation
|
||||||
|
|
||||||
|
The goal of this RFC is to involve package maintainers in reviewing
|
||||||
|
pull requests against their packages. This RFC does not grant
|
||||||
|
maintainers the ability to merge pull requests against their own
|
||||||
|
package.
|
||||||
|
|
||||||
|
Maintainers take a responsibility for their package, and want to know
|
||||||
|
about updates to their package's expression. However, Nixpkgs receives
|
||||||
|
over 1,000 pull requests each month and subscribing to them all is not
|
||||||
|
a reasonable requirement to maintain a package.
|
||||||
|
|
||||||
|
The ideal outcome is package maintainership means a more active role
|
||||||
|
in reviewing and approving changes to Nixpkgs.
|
||||||
|
|
||||||
|
# Detailed design
|
||||||
|
[design]: #detailed-design
|
||||||
|
|
||||||
|
Package maintainers will be a member of a GitHub team, allowing OfBorg
|
||||||
|
to request a review.
|
||||||
|
|
||||||
|
## The Team
|
||||||
|
|
||||||
|
We will create a GitHub team under the NixOS GitHub organization
|
||||||
|
called "Nixpkgs Maintainers" which only grants "read" access to
|
||||||
|
Nixpkgs.
|
||||||
|
|
||||||
|
This team will not grant any privileges to the Nix ecosystem
|
||||||
|
repositories which non-members don't already have. They will not be able to
|
||||||
|
close other people's issues or PRs or push branches. Experimentation
|
||||||
|
and documentation shows this will only grant access to a team
|
||||||
|
discussion board on GitHub.
|
||||||
|
|
||||||
|
Being a member of this team will let the user mark themselves as a
|
||||||
|
public member of the organization. This will show the NixOS logo on
|
||||||
|
their GitHub profile, and people will see "Member" next to their
|
||||||
|
account name when browsing issues.
|
||||||
|
|
||||||
|
In order to be a member, each user will need to enable 2FA on their
|
||||||
|
GitHub account, since [the GitHub organization requires 2FA of all
|
||||||
|
members](https://github.com/NixOS/nixpkgs/issues/42761).
|
||||||
|
|
||||||
|
See
|
||||||
|
https://help.github.com/articles/permission-levels-for-an-organization/
|
||||||
|
for more information about what this will grant.
|
||||||
|
|
||||||
|
## Changes to `maintainers/maintainer-list.nix`
|
||||||
|
|
||||||
|
The existing Nixpkgs maintainer list already contains a structured
|
||||||
|
attribute set of per-maintainer details, including GitHub account
|
||||||
|
names. Automation will sync this list of GitHub handles with the
|
||||||
|
team's membership, automatically adding and removing people to/from
|
||||||
|
the team as the master branch's maintainer list changes.
|
||||||
|
|
||||||
|
GitHub handles can change from one user to another, and so we will
|
||||||
|
change the maintainer list to include the GitHub user *ID* as well as
|
||||||
|
their handle. When syncing, the automation will validate the user ID
|
||||||
|
matches. GitHub User IDs are easily found at
|
||||||
|
`https://api.github.com/users/«username»`.
|
||||||
|
|
||||||
|
If a user ID's GitHub handle changes, the maintainer should remain
|
||||||
|
part of the team under their new handle. The user's entry in
|
||||||
|
`maintainer-list.nix` should be updated to reflect their new handle.
|
||||||
|
|
||||||
|
## Team Automation
|
||||||
|
|
||||||
|
The team must be automatically updated at least once a day to ensure
|
||||||
|
the maintainer list is fresh and up to date. The automation for this
|
||||||
|
will be written in Rust with the hubcaps library. It will run on the
|
||||||
|
NixOS infrastructure with limited credentials, with only sufficient
|
||||||
|
permission to manage the team.
|
||||||
|
|
||||||
|
The automation will fetch a fresh version of Nixpkgs's master branch,
|
||||||
|
extract the maintainer information, and update the team. It will
|
||||||
|
support a dry-run option.
|
||||||
|
|
||||||
|
New members of the team will receive an invitation to join the GitHub
|
||||||
|
organization.
|
||||||
|
|
||||||
|
## Changes to Reviewer/Maintainer Behavior
|
||||||
|
|
||||||
|
Reviewers and maintainers should use GitHub's review tools (Approve,
|
||||||
|
Request Changes, etc.) to clearly communicate their feedback about the
|
||||||
|
pull request.
|
||||||
|
|
||||||
|
## OfBorg changes
|
||||||
|
|
||||||
|
OfBorg will identify PRs which are approved by their maintainers, and
|
||||||
|
add a special label `approved-by-maintainer`.
|
||||||
|
|
||||||
|
## Roll-Out Plan
|
||||||
|
|
||||||
|
1. Write an explanatory post on Discourse about the what-and-why of
|
||||||
|
this plan.
|
||||||
|
2. Select a small group of maintainers who are not committers to be
|
||||||
|
part of the first round, and manually run the tooling, and pause
|
||||||
|
half a week to see what changes.
|
||||||
|
3. Automate the tooling on the infrastructure.
|
||||||
|
4. Expand the group to one quarter of the maintainers, and pause a
|
||||||
|
half a week to gauge response.
|
||||||
|
5. Expand the group to one half of the maintainers and wait one week.
|
||||||
|
6. Expand the group to all of the maintainers.
|
||||||
|
|
||||||
|
If we receive no major feedback or problems during the rollout, we
|
||||||
|
will continue to 100%.
|
||||||
|
|
||||||
|
# Drawbacks
|
||||||
|
[drawbacks]: #drawbacks
|
||||||
|
|
||||||
|
- Putting each maintainer in a read only team will display
|
||||||
|
maintainers as "member", without specifying which team they are a
|
||||||
|
member of. This gives the impression of authority which maintainers
|
||||||
|
don't already receive. This is a pro and a con.
|
||||||
|
|
||||||
|
- A mistake in the automation, or in the admin panel of GitHub could
|
||||||
|
grant the team write access to Nix ecosystem repositories.
|
||||||
|
|
||||||
|
- Package maintainers who do not wish to have a GitHub account will
|
||||||
|
not benefit from this change.
|
||||||
|
|
||||||
|
- Package maintainers who do have a GitHub account, but do not wish
|
||||||
|
to use 2 factor authentication will not benefit from this change.
|
||||||
|
|
||||||
|
- Someone who is banned from the NixOS GitHub organization is not
|
||||||
|
allowed to be a package maintainer.
|
||||||
|
|
||||||
|
# Alternatives
|
||||||
|
[alternatives]: #alternatives
|
||||||
|
|
||||||
|
Mentioning people in GitHub comments is the main alternative. This has
|
||||||
|
the major down-side of not receiving the support of [GitHub's UI
|
||||||
|
for requested reviews](https://github.com/pulls/review-requested).
|
||||||
|
|
||||||
|
|
||||||
|
# Resolved questions
|
||||||
|
[resolved]: #resolved-questions
|
||||||
|
|
||||||
|
- Is it possible for the automation to spam a user who doesn't want
|
||||||
|
to be part of the team with invitations?
|
||||||
|
No.
|
||||||
|
|
||||||
|
# Unresolved questions
|
||||||
|
[unresolved]: #unresolved-questions
|
||||||
|
|
||||||
|
- Do maintainers want to be part of this team?
|
||||||
|
- Will the requirement of 2FA cause a significant number of people to
|
||||||
|
not want to participate?
|
||||||
|
- How will we handle people who have been invited, but have not
|
||||||
|
accepted the invitation?
|
||||||
|
|
||||||
|
# Future work
|
||||||
|
[future]: #future-work
|
||||||
|
|
||||||
|
- Writing the automation program.
|
||||||
|
- Adding UIDs to every maintainer.
|
||||||
|
- Creating the GitHub team
|
||||||
|
- Updating the NixOS Org Configurations repository to run the
|
||||||
|
automation with credentials on an automated basis.
|
||||||
|
|
||||||
|
# Future Potential RFCs
|
||||||
|
The following topics are explictly _not_ part of this RFC.
|
||||||
|
|
||||||
|
- Allowing maintainers to merge pull requests against their packages
|
||||||
|
without having commit access.
|
||||||
|
- Requiring all maintainers to have a GitHub account with 2FA.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue