Skip to content

Commit 8790cfd

Browse files
authored
Create governance.md
1 parent 09af7db commit 8790cfd

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

src/governance.md

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

0 commit comments

Comments
 (0)