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