Skip to content

Proposal: Core subsystem Code Owner teams + Collaborator → Maintainer #1853

@JakobJingleheimer

Description

@JakobJingleheimer

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 +1 in a comment

(Team) Member

  • approve or block PRs within their purview (eg a subsystem like node:test)
  • write permission 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
    1. posting in nodejs/admin to signal intent
    2. (after 1 week) adds themselves to the GH team (no approval required as there's no-one to vote)
    3. A TSC member adds them to the team's maintainer subteam and admin to team's repo.

Context on teams

Important

This is not new.

Details
  • 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) (admin role on team repo, maintainer of the GH team, etc)
  • Initial block resolution starts within the team; recommended approach:
    • Team votes
      • Overturned
      • Escalate to TSC

Quorum: ⅔

Core

The nodejs/node repository

  • Subsystems are code-owned by a respective team (eg node:test is code-owned by the @nodejs/core/test-runner team).
  • @nodejs/core/maintainers has 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
  • main branch is protected against write (a PR is requires) except for TSC & @nodejs/core/releasers
    • includes manually landing a PR

cc @nodejs/collaborators @nodejs/tsc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions