2015-08-13 18:14:34 +02:00
|
|
|
# Node.js Project Governance
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2018-01-20 14:09:17 +01:00
|
|
|
<!-- TOC -->
|
|
|
|
|
2020-07-24 07:24:15 +02:00
|
|
|
* [Triagers](#triagers)
|
2019-09-13 06:22:29 +02:00
|
|
|
* [Collaborators](#collaborators)
|
2020-07-24 07:23:04 +02:00
|
|
|
* [Collaborator activities](#collaborator-activities)
|
|
|
|
* [Technical steering committee](#technical-steering-committee)
|
|
|
|
* [TSC meetings](#tsc-meetings)
|
|
|
|
* [Collaborator nominations](#collaborator-nominations)
|
2024-05-06 00:07:10 +02:00
|
|
|
* [Who can nominate Collaborators?](#who-can-nominate-collaborators)
|
|
|
|
* [Ideal Nominees](#ideal-nominees)
|
|
|
|
* [Nominating a new Collaborator](#nominating-a-new-collaborator)
|
2020-03-31 19:08:49 +02:00
|
|
|
* [Onboarding](#onboarding)
|
2020-07-24 07:23:04 +02:00
|
|
|
* [Consensus seeking process](#consensus-seeking-process)
|
2018-01-20 14:09:17 +01:00
|
|
|
|
|
|
|
<!-- /TOC -->
|
|
|
|
|
2020-07-19 08:47:30 +02:00
|
|
|
## Triagers
|
|
|
|
|
2021-08-21 16:31:33 +02:00
|
|
|
Triagers assess newly-opened issues in the [nodejs/node][] and [nodejs/help][]
|
|
|
|
repositories. The GitHub team for Node.js triagers is @nodejs/issue-triage.
|
|
|
|
Triagers are given the "Triage" GitHub role and have:
|
2020-07-19 08:47:30 +02:00
|
|
|
|
2021-08-21 16:31:33 +02:00
|
|
|
* Ability to label issues and pull requests
|
|
|
|
* Ability to comment, close, and reopen issues and pull requests
|
2020-07-19 08:47:30 +02:00
|
|
|
|
|
|
|
See:
|
|
|
|
|
2021-08-21 16:31:33 +02:00
|
|
|
* [List of triagers](./README.md#triagers)
|
2022-01-05 19:26:30 +01:00
|
|
|
* [A guide for triagers](./doc/contributing/issues.md#triaging-a-bug-report)
|
2020-07-19 08:47:30 +02:00
|
|
|
|
2015-01-02 12:52:50 +01:00
|
|
|
## Collaborators
|
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
Node.js core collaborators maintain the [nodejs/node][] GitHub repository.
|
|
|
|
The GitHub team for Node.js core collaborators is @nodejs/collaborators.
|
2019-11-05 04:51:48 +01:00
|
|
|
Collaborators have:
|
2017-08-22 19:29:09 +02:00
|
|
|
|
2018-01-20 14:09:17 +01:00
|
|
|
* Commit access to the [nodejs/node][] repository
|
|
|
|
* Access to the Node.js continuous integration (CI) jobs
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
Both collaborators and non-collaborators may propose changes to the Node.js
|
2019-04-05 20:26:37 +02:00
|
|
|
source code. The mechanism to propose such a change is a GitHub pull request.
|
2019-11-05 04:51:48 +01:00
|
|
|
Collaborators review and merge (_land_) pull requests.
|
2018-08-10 23:49:21 +02:00
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
Two collaborators must approve a pull request before the pull request can land.
|
|
|
|
(One collaborator approval is enough if the pull request has been open for more
|
|
|
|
than 7 days.) Approving a pull request indicates that the collaborator accepts
|
|
|
|
responsibility for the change. Approval must be from collaborators who are not
|
2019-11-05 04:51:48 +01:00
|
|
|
authors of the change.
|
2016-10-13 07:12:11 +02:00
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
If a collaborator opposes a proposed change, then the change cannot land. The
|
2019-04-05 20:26:37 +02:00
|
|
|
exception is if the TSC votes to approve the change despite the opposition.
|
|
|
|
Usually, involving the TSC is unnecessary. Often, discussions or further changes
|
2021-07-14 00:15:59 +02:00
|
|
|
result in collaborators removing their opposition.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2018-01-20 14:09:17 +01:00
|
|
|
See:
|
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
* [List of collaborators](./README.md#current-project-team-members)
|
2022-01-05 19:26:30 +01:00
|
|
|
* [A guide for collaborators](./doc/contributing/collaborator-guide.md)
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2020-07-24 07:23:04 +02:00
|
|
|
### Collaborator activities
|
2016-07-14 00:41:17 +02:00
|
|
|
|
2018-01-20 14:09:17 +01:00
|
|
|
* Helping users and novice contributors
|
|
|
|
* Contributing code and documentation changes that improve the project
|
|
|
|
* Reviewing and commenting on issues and pull requests
|
|
|
|
* Participation in working groups
|
|
|
|
* Merging pull requests
|
2016-07-15 05:16:26 +02:00
|
|
|
|
2021-11-13 06:49:10 +01:00
|
|
|
The TSC can remove inactive collaborators or provide them with _emeritus_
|
2019-04-08 06:13:51 +02:00
|
|
|
status. Emeriti may request that the TSC restore them to active status.
|
2016-07-15 05:16:26 +02:00
|
|
|
|
2021-12-13 06:37:03 +01:00
|
|
|
A collaborator is automatically made emeritus (and removed from active
|
2024-04-10 21:03:09 +02:00
|
|
|
collaborator status) if it has been more than 12 months since the collaborator
|
2021-12-13 06:37:03 +01:00
|
|
|
has authored or approved a commit that has landed.
|
|
|
|
|
2017-08-22 07:44:50 +02:00
|
|
|
## Technical Steering Committee
|
2017-06-03 01:27:54 +02:00
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
A subset of the collaborators forms the Technical Steering Committee (TSC).
|
2018-01-20 14:09:17 +01:00
|
|
|
The TSC has final authority over this project, including:
|
2017-06-03 01:27:54 +02:00
|
|
|
|
|
|
|
* Technical direction
|
|
|
|
* Project governance and process (including this policy)
|
|
|
|
* Contribution policy
|
|
|
|
* GitHub repository hosting
|
|
|
|
* Conduct guidelines
|
2021-07-14 00:15:59 +02:00
|
|
|
* Maintaining the list of collaborators
|
2017-06-03 01:27:54 +02:00
|
|
|
|
2019-04-10 07:09:09 +02:00
|
|
|
The current list of TSC members is in
|
2018-01-20 14:09:17 +01:00
|
|
|
[the project README](./README.md#current-project-team-members).
|
2017-06-03 01:27:54 +02:00
|
|
|
|
2019-04-10 07:09:09 +02:00
|
|
|
The [TSC Charter][] governs the operations of the TSC. All changes to the
|
2021-03-24 07:10:48 +01:00
|
|
|
Charter need approval by the OpenJS Foundation Cross-Project Council (CPC).
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2020-07-24 07:23:04 +02:00
|
|
|
### TSC meetings
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2021-11-13 06:49:10 +01:00
|
|
|
The TSC meets in a video conference call. Each year, the TSC elects a chair to
|
|
|
|
run the meetings. The TSC streams its meetings for public viewing on YouTube.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
The TSC agenda includes issues that are at an impasse. The intention of the
|
|
|
|
agenda is not to review or approve all patches. Collaborators review and approve
|
|
|
|
patches on GitHub.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
Any community member can create a GitHub issue asking that the TSC review
|
2021-07-14 00:15:59 +02:00
|
|
|
something. If consensus-seeking fails for an issue, a collaborator may apply the
|
2019-04-12 20:19:06 +02:00
|
|
|
`tsc-agenda` label. That will add it to the TSC meeting agenda.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
Before each TSC meeting, the meeting chair will share the agenda with members of
|
|
|
|
the TSC. TSC members can also add items to the agenda at the beginning of each
|
|
|
|
meeting. The meeting chair and the TSC cannot veto or remove items.
|
2017-08-22 07:44:50 +02:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
The TSC may invite people to take part in a non-voting capacity.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
During the meeting, the TSC chair ensures that someone takes minutes. After the
|
|
|
|
meeting, the TSC chair ensures that someone opens a pull request with the
|
|
|
|
minutes.
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-12 20:19:06 +02:00
|
|
|
The TSC seeks to resolve as many issues as possible outside meetings using
|
2017-08-22 07:44:50 +02:00
|
|
|
[the TSC issue tracker](https://github.com/nodejs/TSC/issues). The process in
|
2016-10-06 05:55:56 +02:00
|
|
|
the issue tracker is:
|
|
|
|
|
2017-08-22 07:44:50 +02:00
|
|
|
* A TSC member opens an issue explaining the proposal/issue and @-mentions
|
|
|
|
@nodejs/tsc.
|
2023-03-16 17:51:18 +01:00
|
|
|
* The proposal passes if, after 72 hours, there are two or more TSC voting
|
|
|
|
member approvals and no TSC voting member opposition.
|
2019-04-12 20:19:06 +02:00
|
|
|
* If there is an extended impasse, a TSC member may make a motion for a vote.
|
2016-10-06 05:55:56 +02:00
|
|
|
|
2020-07-24 07:23:04 +02:00
|
|
|
## Collaborator nominations
|
2018-01-20 14:09:17 +01:00
|
|
|
|
2024-05-06 00:07:10 +02:00
|
|
|
### Who can nominate Collaborators?
|
|
|
|
|
|
|
|
Existing Collaborators can nominate someone to become a Collaborator.
|
|
|
|
|
|
|
|
### Ideal Nominees
|
|
|
|
|
|
|
|
Nominees should have significant and valuable contributions across the Node.js
|
2019-04-15 08:28:18 +02:00
|
|
|
organization.
|
2018-01-20 14:09:17 +01:00
|
|
|
|
2024-05-06 00:07:10 +02:00
|
|
|
Contributions can be:
|
|
|
|
|
|
|
|
* Opening pull requests.
|
|
|
|
* Comments and reviews.
|
|
|
|
* Opening new issues.
|
|
|
|
* Participation in other projects, teams, and working groups of the Node.js
|
|
|
|
organization.
|
|
|
|
|
|
|
|
### Nominating a new Collaborator
|
|
|
|
|
|
|
|
To nominate a new Collaborator, open an issue in the [nodejs/node][] repository.
|
2019-04-15 08:28:18 +02:00
|
|
|
Provide a summary of the nominee's contributions. For example:
|
2018-01-20 14:09:17 +01:00
|
|
|
|
|
|
|
* Commits in the [nodejs/node][] repository.
|
2019-04-17 20:32:41 +02:00
|
|
|
* Use the link `https://github.com/nodejs/node/commits?author=GITHUB_ID`
|
2018-01-20 14:09:17 +01:00
|
|
|
* Pull requests and issues opened in the [nodejs/node][] repository.
|
2019-04-17 20:32:41 +02:00
|
|
|
* Use the link `https://github.com/nodejs/node/issues?q=author:GITHUB_ID`
|
|
|
|
* Comments on pull requests and issues in the [nodejs/node][] repository
|
|
|
|
* Use the link `https://github.com/nodejs/node/issues?q=commenter:GITHUB_ID`
|
|
|
|
* Reviews on pull requests in the [nodejs/node][] repository
|
|
|
|
* Use the link `https://github.com/nodejs/node/pulls?q=reviewed-by:GITHUB_ID`
|
2019-11-05 04:51:48 +01:00
|
|
|
* Help provided to end-users and novice contributors
|
2019-04-17 20:32:41 +02:00
|
|
|
* Pull requests and issues opened throughout the Node.js organization
|
|
|
|
* Use the link `https://github.com/search?q=author:GITHUB_ID+org:nodejs`
|
|
|
|
* Comments on pull requests and issues throughout the Node.js organization
|
|
|
|
* Use the link `https://github.com/search?q=commenter:GITHUB_ID+org:nodejs`
|
|
|
|
* Participation in other projects, teams, and working groups of the Node.js
|
|
|
|
organization
|
2018-01-20 14:09:17 +01:00
|
|
|
* Other participation in the wider Node.js community
|
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
Mention @nodejs/collaborators in the issue to notify other collaborators about
|
2018-01-20 14:09:17 +01:00
|
|
|
the nomination.
|
|
|
|
|
2023-11-26 18:14:19 +01:00
|
|
|
The nomination passes if no collaborators oppose it after one week. In the case
|
|
|
|
of an objection, the TSC is responsible for working with the individuals
|
|
|
|
involved and finding a resolution.
|
2018-01-20 14:09:17 +01:00
|
|
|
|
2019-04-22 21:20:03 +02:00
|
|
|
There are steps a nominator can take in advance to make a nomination as
|
2021-07-14 00:15:59 +02:00
|
|
|
frictionless as possible. To request feedback from other collaborators in
|
2021-09-18 02:23:11 +02:00
|
|
|
private, use the [collaborators discussion page][]
|
|
|
|
(which only collaborators may view). A nominator may also work with the
|
2019-04-22 21:20:03 +02:00
|
|
|
nominee to improve their contribution profile.
|
2018-01-20 14:09:17 +01:00
|
|
|
|
2019-11-05 04:51:48 +01:00
|
|
|
Collaborators might overlook someone with valuable contributions. In that case,
|
2021-07-14 00:15:59 +02:00
|
|
|
the contributor may open an issue or contact a collaborator to request a
|
2019-11-05 04:51:48 +01:00
|
|
|
nomination.
|
2018-01-20 14:09:17 +01:00
|
|
|
|
|
|
|
### Onboarding
|
|
|
|
|
2021-07-14 00:15:59 +02:00
|
|
|
After the nomination passes, a TSC member onboards the new collaborator. See
|
2020-02-14 13:54:11 +01:00
|
|
|
[the onboarding guide](./onboarding.md) for details of the onboarding
|
2019-11-05 04:51:48 +01:00
|
|
|
process.
|
2018-01-20 14:09:17 +01:00
|
|
|
|
2020-07-24 07:23:04 +02:00
|
|
|
## Consensus seeking process
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2019-04-23 07:56:21 +02:00
|
|
|
The TSC follows a [Consensus Seeking][] decision-making model per the
|
|
|
|
[TSC Charter][].
|
2015-01-02 12:52:50 +01:00
|
|
|
|
2017-11-23 00:01:19 +01:00
|
|
|
[Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
|
2021-05-03 11:15:35 +02:00
|
|
|
[TSC Charter]: https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md
|
2023-03-25 12:56:49 +01:00
|
|
|
[collaborators discussion page]: https://github.com/nodejs/collaborators/discussions/categories/collaborator-nominations
|
2021-08-21 16:31:33 +02:00
|
|
|
[nodejs/help]: https://github.com/nodejs/help
|
2018-01-20 14:09:17 +01:00
|
|
|
[nodejs/node]: https://github.com/nodejs/node
|