• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Node.js Project Governance
2
3<!-- TOC -->
4
5* [Triagers](#triagers)
6* [Collaborators](#collaborators)
7  * [Collaborator activities](#collaborator-activities)
8* [Technical steering committee](#technical-steering-committee)
9  * [TSC meetings](#tsc-meetings)
10* [Collaborator nominations](#collaborator-nominations)
11  * [Onboarding](#onboarding)
12* [Consensus seeking process](#consensus-seeking-process)
13
14<!-- /TOC -->
15
16## Triagers
17
18Triagers assess newly-opened issues in the [nodejs/node][] and [nodejs/help][]
19repositories. The GitHub team for Node.js triagers is @nodejs/issue-triage.
20Triagers are given the "Triage" GitHub role and have:
21
22* Ability to label issues and pull requests
23* Ability to comment, close, and reopen issues and pull requests
24
25See:
26
27* [List of triagers](./README.md#triagers)
28* [A guide for triagers](./doc/guides/contributing/issues.md#triaging-a-bug-report)
29
30## Collaborators
31
32Node.js core collaborators maintain the [nodejs/node][] GitHub repository.
33The GitHub team for Node.js core collaborators is @nodejs/collaborators.
34Collaborators have:
35
36* Commit access to the [nodejs/node][] repository
37* Access to the Node.js continuous integration (CI) jobs
38
39Both collaborators and non-collaborators may propose changes to the Node.js
40source code. The mechanism to propose such a change is a GitHub pull request.
41Collaborators review and merge (_land_) pull requests.
42
43Two collaborators must approve a pull request before the pull request can land.
44(One collaborator approval is enough if the pull request has been open for more
45than 7 days.) Approving a pull request indicates that the collaborator accepts
46responsibility for the change. Approval must be from collaborators who are not
47authors of the change.
48
49If a collaborator opposes a proposed change, then the change cannot land. The
50exception is if the TSC votes to approve the change despite the opposition.
51Usually, involving the TSC is unnecessary. Often, discussions or further changes
52result in collaborators removing their opposition.
53
54See:
55
56* [List of collaborators](./README.md#current-project-team-members)
57* [A guide for collaborators](./doc/guides/collaborator-guide.md)
58
59### Collaborator activities
60
61* Helping users and novice contributors
62* Contributing code and documentation changes that improve the project
63* Reviewing and commenting on issues and pull requests
64* Participation in working groups
65* Merging pull requests
66
67The TSC can remove inactive collaborators or provide them with _Emeritus_
68status. Emeriti may request that the TSC restore them to active status.
69
70## Technical Steering Committee
71
72A subset of the collaborators forms the Technical Steering Committee (TSC).
73The TSC has final authority over this project, including:
74
75* Technical direction
76* Project governance and process (including this policy)
77* Contribution policy
78* GitHub repository hosting
79* Conduct guidelines
80* Maintaining the list of collaborators
81
82The current list of TSC members is in
83[the project README](./README.md#current-project-team-members).
84
85The [TSC Charter][] governs the operations of the TSC. All changes to the
86Charter need approval by the OpenJS Foundation Cross-Project Council (CPC).
87
88### TSC meetings
89
90The TSC meets in a voice conference call. Each year, the TSC elects a chair to
91run the meetings. The TSC streams its meetings for public viewing on YouTube or
92a similar service.
93
94The TSC agenda includes issues that are at an impasse. The intention of the
95agenda is not to review or approve all patches. Collaborators review and approve
96patches on GitHub.
97
98Any community member can create a GitHub issue asking that the TSC review
99something. If consensus-seeking fails for an issue, a collaborator may apply the
100`tsc-agenda` label. That will add it to the TSC meeting agenda.
101
102Before each TSC meeting, the meeting chair will share the agenda with members of
103the TSC. TSC members can also add items to the agenda at the beginning of each
104meeting. The meeting chair and the TSC cannot veto or remove items.
105
106The TSC may invite people to take part in a non-voting capacity.
107
108During the meeting, the TSC chair ensures that someone takes minutes. After the
109meeting, the TSC chair ensures that someone opens a pull request with the
110minutes.
111
112The TSC seeks to resolve as many issues as possible outside meetings using
113[the TSC issue tracker](https://github.com/nodejs/TSC/issues). The process in
114the issue tracker is:
115
116* A TSC member opens an issue explaining the proposal/issue and @-mentions
117  @nodejs/tsc.
118* The proposal passes if, after 72 hours, there are two or more TSC approvals
119  and no TSC opposition.
120* If there is an extended impasse, a TSC member may make a motion for a vote.
121
122## Collaborator nominations
123
124Existing collaborators can nominate someone to become a collaborator. Nominees
125should have significant and valuable contributions across the Node.js
126organization.
127
128To nominate a new collaborator, open an issue in the [nodejs/node][] repository.
129Provide a summary of the nominee's contributions. For example:
130
131* Commits in the [nodejs/node][] repository.
132  * Use the link `https://github.com/nodejs/node/commits?author=GITHUB_ID`
133* Pull requests and issues opened in the [nodejs/node][] repository.
134  * Use the link `https://github.com/nodejs/node/issues?q=author:GITHUB_ID`
135* Comments on pull requests and issues in the [nodejs/node][] repository
136  * Use the link `https://github.com/nodejs/node/issues?q=commenter:GITHUB_ID`
137* Reviews on pull requests in the [nodejs/node][] repository
138  * Use the link `https://github.com/nodejs/node/pulls?q=reviewed-by:GITHUB_ID`
139* Help provided to end-users and novice contributors
140* Pull requests and issues opened throughout the Node.js organization
141  * Use the link  `https://github.com/search?q=author:GITHUB_ID+org:nodejs`
142* Comments on pull requests and issues throughout the Node.js organization
143  * Use the link `https://github.com/search?q=commenter:GITHUB_ID+org:nodejs`
144* Participation in other projects, teams, and working groups of the Node.js
145  organization
146* Other participation in the wider Node.js community
147
148Mention @nodejs/collaborators in the issue to notify other collaborators about
149the nomination.
150
151The nomination passes if no collaborators oppose it after one week. Otherwise,
152the nomination fails.
153
154There are steps a nominator can take in advance to make a nomination as
155frictionless as possible. To request feedback from other collaborators in
156 private, use the [collaborators discussion page][]
157 (which only collaborators may view). A nominator may also work with the
158nominee to improve their contribution profile.
159
160Collaborators might overlook someone with valuable contributions. In that case,
161the contributor may open an issue or contact a collaborator to request a
162nomination.
163
164### Onboarding
165
166After the nomination passes, a TSC member onboards the new collaborator. See
167[the onboarding guide](./onboarding.md) for details of the onboarding
168process.
169
170## Consensus seeking process
171
172The TSC follows a [Consensus Seeking][] decision-making model per the
173[TSC Charter][].
174
175[Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
176[TSC Charter]: https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md
177[collaborators discussion page]: https://github.com/orgs/nodejs/teams/collaborators/discussions
178[nodejs/help]: https://github.com/nodejs/help
179[nodejs/node]: https://github.com/nodejs/node
180