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/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/contributing/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 70A collaborator is automatically made emeritus (and removed from active 71collaborator status) if it has been more than 18 months since the collaborator 72has authored or approved a commit that has landed. 73 74## Technical Steering Committee 75 76A subset of the collaborators forms the Technical Steering Committee (TSC). 77The TSC has final authority over this project, including: 78 79* Technical direction 80* Project governance and process (including this policy) 81* Contribution policy 82* GitHub repository hosting 83* Conduct guidelines 84* Maintaining the list of collaborators 85 86The current list of TSC members is in 87[the project README](./README.md#current-project-team-members). 88 89The [TSC Charter][] governs the operations of the TSC. All changes to the 90Charter need approval by the OpenJS Foundation Cross-Project Council (CPC). 91 92### TSC meetings 93 94The TSC meets in a video conference call. Each year, the TSC elects a chair to 95run the meetings. The TSC streams its meetings for public viewing on YouTube. 96 97The TSC agenda includes issues that are at an impasse. The intention of the 98agenda is not to review or approve all patches. Collaborators review and approve 99patches on GitHub. 100 101Any community member can create a GitHub issue asking that the TSC review 102something. If consensus-seeking fails for an issue, a collaborator may apply the 103`tsc-agenda` label. That will add it to the TSC meeting agenda. 104 105Before each TSC meeting, the meeting chair will share the agenda with members of 106the TSC. TSC members can also add items to the agenda at the beginning of each 107meeting. The meeting chair and the TSC cannot veto or remove items. 108 109The TSC may invite people to take part in a non-voting capacity. 110 111During the meeting, the TSC chair ensures that someone takes minutes. After the 112meeting, the TSC chair ensures that someone opens a pull request with the 113minutes. 114 115The TSC seeks to resolve as many issues as possible outside meetings using 116[the TSC issue tracker](https://github.com/nodejs/TSC/issues). The process in 117the issue tracker is: 118 119* A TSC member opens an issue explaining the proposal/issue and @-mentions 120 @nodejs/tsc. 121* The proposal passes if, after 72 hours, there are two or more TSC voting 122 member approvals and no TSC voting member opposition. 123* If there is an extended impasse, a TSC member may make a motion for a vote. 124 125## Collaborator nominations 126 127Existing collaborators can nominate someone to become a collaborator. Nominees 128should have significant and valuable contributions across the Node.js 129organization. 130 131To nominate a new collaborator, open an issue in the [nodejs/node][] repository. 132Provide a summary of the nominee's contributions. For example: 133 134* Commits in the [nodejs/node][] repository. 135 * Use the link `https://github.com/nodejs/node/commits?author=GITHUB_ID` 136* Pull requests and issues opened in the [nodejs/node][] repository. 137 * Use the link `https://github.com/nodejs/node/issues?q=author:GITHUB_ID` 138* Comments on pull requests and issues in the [nodejs/node][] repository 139 * Use the link `https://github.com/nodejs/node/issues?q=commenter:GITHUB_ID` 140* Reviews on pull requests in the [nodejs/node][] repository 141 * Use the link `https://github.com/nodejs/node/pulls?q=reviewed-by:GITHUB_ID` 142* Help provided to end-users and novice contributors 143* Pull requests and issues opened throughout the Node.js organization 144 * Use the link `https://github.com/search?q=author:GITHUB_ID+org:nodejs` 145* Comments on pull requests and issues throughout the Node.js organization 146 * Use the link `https://github.com/search?q=commenter:GITHUB_ID+org:nodejs` 147* Participation in other projects, teams, and working groups of the Node.js 148 organization 149* Other participation in the wider Node.js community 150 151Mention @nodejs/collaborators in the issue to notify other collaborators about 152the nomination. 153 154The nomination passes if no collaborators oppose it after one week. Otherwise, 155the nomination fails. 156 157There are steps a nominator can take in advance to make a nomination as 158frictionless as possible. To request feedback from other collaborators in 159private, use the [collaborators discussion page][] 160(which only collaborators may view). A nominator may also work with the 161nominee to improve their contribution profile. 162 163Collaborators might overlook someone with valuable contributions. In that case, 164the contributor may open an issue or contact a collaborator to request a 165nomination. 166 167### Onboarding 168 169After the nomination passes, a TSC member onboards the new collaborator. See 170[the onboarding guide](./onboarding.md) for details of the onboarding 171process. 172 173## Consensus seeking process 174 175The TSC follows a [Consensus Seeking][] decision-making model per the 176[TSC Charter][]. 177 178[Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making 179[TSC Charter]: https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md 180[collaborators discussion page]: https://github.com/nodejs/collaborators/discussions/categories/collaborator-nominations 181[nodejs/help]: https://github.com/nodejs/help 182[nodejs/node]: https://github.com/nodejs/node 183