|
| 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