Proposal: Core subsystem Code Owner teams + Collaborator → Maintainer
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 694
- Forks
- 142
- PR merge metrics
- No merged PRs in 30d
Description
I've tried to distill the great feedback from the node summit session a couple weeks ago. It does end up being somewhat surprisingly long because of what-ifs and what-abouts; the TLDR is found #Core at the bottom.
Motivations
- un-devalue non-Core contribution
- lower barriers to entry
- increase agility
Proposal
Collaborator → Maintainer
The "Collaborator" name is dropped 😢 It means something completely different in GitHub, and it's not common within the ecosystem.
"Maintainer" largely replaces "Collaborator".
- Most Collaborators just become Maintainers
- Expected to exercise caution when operating outside their teams
Nominations
Inherits the current Collaborator nomination policy with some notable points of clarification (on things that are currently vague):
- via existing Maintainer or TSC
- barrier to entry should be moderately high
- minimum of 1 year of consistent contribution
- contributions across multiple teams (may be waived for extensive, multi-year tenure with the project)
- support minimum: 10% of Maintainers
- must be explicit, eg 👍 or
+1in a comment
- must be explicit, eg 👍 or
(Team) Member
- approve or block PRs within their purview (eg a subsystem like
node:test) writepermission on their respective repository/ies- this enables a member to trigger CI (this is possibly changeable if we want)
Nominations
- barrier to entry should be moderately low
- minimum of 3 months of consistent contribution
- demonstrates (to a lesser extent) qualities of a Maintainer
- managed by the team
- existing team members may vote on both team member and team maintainer nominations.
- Support minimum: simple majority
Team member onboarding is handled by a team maintainer.
Organisation member onboarding is handled by a TSC member.
Empty teams
An empty team can be resurrected by:
- TSC approving a request by an aspiring member to join
- A TSC member acts as team maintainer to oversee until the team is sufficiently populated
- a Maintainer
- posting in
nodejs/adminto signal intent - (after 1 week) adds themselves to the GH team (no approval required as there's no-one to vote)
- A TSC member adds them to the team's
maintainersubteam andadminto team's repo.
- posting in
Context on teams
[!IMPORTANT]
This is not new.
- Largely self-managing
- Can establish own policies extending general policy
- Handle own membership:
- requests to join
- nominating new members
- expelling members
- pruning inactive members (assisted/informed by an automation)
- Administered by lead(s)/chair(s) (
adminrole on team repo,maintainerof the GH team, etc)
- Initial block resolution starts within the team; recommended approach:
- Team votes
- Overturned
- Escalate to TSC
- Team votes
Quorum: ⅔
Core
The nodejs/node repository
- Subsystems are code-owned by a respective team (eg
node:testis code-owned by the@nodejs/core/test-runnerteam). @nodejs/core/maintainershas codebase-wide code-ownership- At least 1 code owner approval is required to land a relevant PR
- When there is no owning team, a Maintainer or TSC member provides the code-owner approval
mainbranch is protected againstwrite(a PR is requires) except for TSC &@nodejs/core/releasers- includes manually landing a PR
cc @nodejs/collaborators @nodejs/tsc
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Collaborator → Maintainer, Team Member, and Core sections, then review the linked Node.js summit discussion and the mentioned nodejs/admin and nodejs/node repositories. Done requires TSC agreement on the governance model and documented team, ownership, nomination, and branch-protection rules. The issue names no implementation files or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, nodejs
- Domain
- developer-experience
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100