]> git.proxmox.com Git - pve-eslint.git/blame - eslint/docs/src/contribute/governance.md
import 8.41.0 source
[pve-eslint.git] / eslint / docs / src / contribute / governance.md
CommitLineData
8f9d1d4d
DC
1---
2title: Governance
8f9d1d4d
DC
3eleventyNavigation:
4 key: governance
f2a92ac6 5 parent: contribute to eslint
8f9d1d4d 6 title: Governance
f2a92ac6 7 order: 11
8f9d1d4d
DC
8
9---
eb39fafa
DC
10
11ESLint is an open source project that depends on contributions from the community. Anyone may contribute to the project at any time by submitting code, participating in discussions, making suggestions, or any other contribution they see fit. This document describes how various types of contributors work within the ESLint project.
12
13## Roles and Responsibilities
14
15### Users
16
17Users are community members who have a need for the project. Anyone can be a User; there are no special requirements. Common User contributions include evangelizing the project (e.g., display a link on a website and raise awareness through word-of-mouth), informing developers of strengths and weaknesses from a new user perspective, or providing moral support (a "thank you" goes a long way).
18
19Users who continue to engage with the project and its community will often become more and more involved. Such Users may find themselves becoming Contributors, as described in the next section.
20
21### Contributors
22
23Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process.
24
25Contributors have read-only access to source code and so submit changes via pull requests. Contributor pull requests have their contribution reviewed and merged by a TSC member. TSC members and Committers work with Contributors to review their code and prepare it for merging.
26
8f9d1d4d
DC
27As Contributors gain experience and familiarity with the project, their profile within, and commitment to, the community will increase. At some stage, they may find themselves being nominated as either a Website Team Member or Committer by an existing Website Team Member or Committer.
28
29### Website Team Member
30
f2a92ac6 31Website Team Members are community members who have shown that they are committed to the continued maintenance of [eslint.org](https://eslint.org/) through ongoing engagement with the community. Website Team Members are given push access to the `eslint.org` GitHub repository and must abide by the project's [Contribution Guidelines](../contribute/).
8f9d1d4d
DC
32
33 Website Team Members:
34
35* Are expected to work on public branches of the source repository and submit pull requests from that branch to the master branch.
36* Are expected to delete their public branches when they are no longer necessary.
37* Must submit pull requests for all changes.
38* Have their work reviewed by Reviewers and TSC members before acceptance into the repository.
f2a92ac6
DC
39* May label and close website-related issues (see [Manage Issues](../maintain/manage-issues))
40* May merge some pull requests (see [Review Pull Requests](../maintain/review-pull-requests))
8f9d1d4d
DC
41
42To become a Website Team Member:
43
44* One must have shown a willingness and ability to participate in the maintenance of [eslint.org](https://eslint.org/) as a team player. Typically, a potential Website Team Member will need to show that they have an understanding of the structure of the website and how it fits into the larger ESLint project's objectives and strategy.
45* Website Team Members are expected to be respectful of every community member and to work collaboratively in the spirit of inclusion.
46* Have submitted a minimum of 10 website-related pull requests. What's a website-related pull request? One that is made to the `eslint.org` repository or the `docs` directory in the `eslint` repository and requires little effort to accept because it's well documented and tested.
47
48New Website Team Members can be nominated by any existing Website Team Member or Committer. Once they have been nominated, there will be a vote by the TSC members.
49
50It is important to recognize that membership on the website team is a privilege, not a right. That privilege must be earned and once earned it can be removed by the TSC members by a standard TSC motion. However, under normal circumstances Website Team Members remain for as long as they wish to continue engaging with the project.
eb39fafa
DC
51
52### Committers
53
f2a92ac6 54Committers are community members who have shown that they are committed to the continued development of the project through ongoing engagement with the community. Committers are given push access to the project's GitHub repos and must abide by the project's [Contribution Guidelines](../contribute/).
eb39fafa
DC
55
56Committers:
57
58* Are expected to work on public branches of the source repository and submit pull requests from that branch to the master branch.
59* Are expected to delete their public branches when they are no longer necessary.
60* Must submit pull requests for all changes.
61* Have their work reviewed by TSC members before acceptance into the repository.
f2a92ac6
DC
62* May label and close issues (see [Manage Issues](../maintain/manage-issues))
63* May merge some pull requests (see [Review Pull Requests](../maintain/review-pull-requests))
eb39fafa
DC
64
65To become a Committer:
66
67* One must have shown a willingness and ability to participate in the project as a team player. Typically, a potential Committer will need to show that they have an understanding of and alignment with the project, its objectives, and its strategy.
68* Committers are expected to be respectful of every community member and to work collaboratively in the spirit of inclusion.
69* Have submitted a minimum of 10 qualifying pull requests. What's a qualifying pull request? One that carries significant technical weight and requires little effort to accept because it's well documented and tested.
70
71New Committers can be nominated by any existing Committer. Once they have been nominated, there will be a vote by the TSC members.
72
73It is important to recognize that committership is a privilege, not a right. That privilege must be earned and once earned it can be removed by the TSC members by a standard TSC motion. However, under normal circumstances committership exists for as long as the Committer wishes to continue engaging with the project.
74
75A Committer who shows an above-average level of contribution to the project, particularly with respect to its strategic direction and long-term health, may be nominated to become a reviewer, described below.
76
77#### Process for Adding Committers
78
791. Send email congratulating the new committer and confirming that they would like to accept. This should also outline the responsibilities of a committer with a link to the maintainer guide.
801. Add the GitHub user to the "ESLint Team" team
811. Add committer email to the ESLint team mailing list
ebb53d86 821. Invite to Discord team channel
eb39fafa
DC
831. Tweet congratulations to the new committer from the ESLint Twitter account
84
85### Reviewers
86
87Reviewers are community members who have contributed a significant amount of time to the project through triaging of issues, fixing bugs, implementing enhancements/features, and are trusted community leaders.
88
89Reviewers may perform all of the duties of Committers, and also:
90
91* May merge external pull requests for accepted issues upon reviewing and approving the changes.
92* May merge their own pull requests once they have collected the feedback they deem necessary. (No pull request should be merged without at least one Committer/Reviewer/TSC member comment stating they've looked at the code.)
93
94To become a Reviewer:
95
96* Work in a helpful and collaborative way with the community.
97* Have given good feedback on others' submissions and displayed an overall understanding of the code quality standards for the project.
98* Commit to being a part of the community for the long-term.
99* Have submitted a minimum of 50 qualifying pull requests.
100
101A Committer is invited to become a Reviewer by existing Reviewers and TSC members. A nomination will result in discussion and then a decision by the TSC.
102
103#### Process for Adding Reviewers
104
1051. Add the GitHub user to the "ESLint Reviewers" GitHub team
1061. Tweet congratulations to the new Reviewer from the ESLint Twitter account
107
108### Technical Steering Committee (TSC)
109
110The ESLint project is jointly governed by a Technical Steering Committee (TSC) which is responsible for high-level guidance of the project.
111
112The TSC has final authority over this project including:
113
114* Technical direction
115* Project governance and process (including this policy)
116* Contribution policy
117* GitHub repository hosting
118
119TSC seats are not time-limited. The size of the TSC can not be larger than five members. This size ensures adequate coverage of important areas of expertise balanced with the ability to make decisions efficiently.
120
121The TSC may add additional members to the TSC by a standard TSC motion.
122
123A TSC member may be removed from the TSC by voluntary resignation, by a standard TSC motion, or by missing four consecutive TSC meetings. In all cases, the TSC member will revert to Reviewer status unless they prefer Alumni status.
124
125Changes to TSC membership should be posted in the agenda, and may be suggested as any other agenda item (see "TSC Meetings" below).
126
127No more than 1/3 of the TSC members may be affiliated with the same employer. If removal or resignation of a TSC member, or a change of employment by a TSC member, creates a situation where more than 1/3 of the TSC membership shares an employer, then the situation must be immediately remedied by the resignation or removal of one or more TSC members affiliated with the over-represented employer(s).
128
129TSC members have additional responsibilities over and above those of a Reviewer. These responsibilities ensure the smooth running of the project. TSC members are expected to review code contributions, approve changes to this document, manage the copyrights within the project outputs, and attend regular TSC meetings.
130
131TSC members may perform all of the duties of Reviewers, and also:
132
133* May release new versions of all ESLint projects.
134* May participate in TSC meetings.
135* May propose budget items.
136* May propose new ESLint projects.
137
138There is no specific set of requirements or qualifications for TSC members beyond those that are expected of Reviewers.
139
140A Reviewer is invited to become a TSC member by existing TSC members. A nomination will result in discussion and then a decision by the TSC.
141
142#### Process for Adding TSC Members
143
1441. Add the GitHub user to the "ESLint TSC" GitHub team
1451. Set the GitHub user to be have the "Owner" role for the ESLint organization
f2a92ac6 1461. Send a welcome email with a link to the [Maintain ESLint documentation](../maintain/) and instructions for npm 2FA.
ebb53d86 1471. Invite to the Discord TSC channel
eb39fafa
DC
1481. Make the TSC member an admin on the ESLint team mailing list
1491. Add the TSC member to the recurring TSC meeting event on Google Calendar
1501. Add the TSC member as an admin to ESLint Twitter Account on Tweetdeck
1511. Add the TSC member to the ESLint TSC mailing list as an "Owner"
1521. Tweet congratulations to the new TSC member from the ESLint Twitter account
153
154#### TSC Meetings
155
ebb53d86 156The TSC meets every other week in the TSC Meeting [Discord](https://eslint.org/chat) channel. The meeting is run by a designated moderator approved by the TSC.
eb39fafa
DC
157
158Items are added to the TSC agenda which are considered contentious or
159are modifications of governance, contribution policy, TSC membership,
160or release process.
161
162The intention of the agenda is not to approve or review all patches.
163That should happen continuously on GitHub and be handled by the larger
164group of Committers.
165
166Any community member, Committer, or Reviewer can ask that something be added to
167the next meeting's agenda by logging a GitHub Issue. Anyone can add the item to the agenda by adding
168the "tsc agenda" tag to the issue.
169
170Prior to each TSC meeting, the moderator will share the Agenda with
171members of the TSC. TSC members can add any items they like to the
172agenda at the beginning of each meeting. The moderator and the TSC
173cannot veto or remove items.
174
175No binding votes on TSC agenda items can take place without a quorum of
176TSC members present in the meeting. Quorum is achieved when more than
177half of the TSC members (minus non-attending members) are present.
178
179The TSC may invite persons or representatives from certain projects to
180participate in a non-voting capacity.
181
182The moderator is responsible for summarizing the discussion of each
183agenda item and sending it as a pull request after the meeting.
184
185## Consensus Seeking Process
186
187The TSC follows a
188[Consensus Seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
189decision making model.
190
191When an agenda item has appeared to reach a consensus, the moderator
192will ask "Does anyone object?" as a final call for dissent from the
193consensus.
194
195If an agenda item cannot reach a consensus, a TSC member can call for
196either a closing vote or a vote to table the issue to the next
197meeting. The call for a vote must be approved by a majority of the TSC
198or else the discussion will continue. Simple majority wins.
199
200----
201
202This work is a derivative of [YUI Contributor Model](https://github.com/yui/yui3/wiki/Contributor-Model) and the [Node.js Project Governance Model](https://github.com/nodejs/node/blob/master/GOVERNANCE.md).
203
204This work is licensed under a [Creative Commons Attribution-ShareAlike 2.0 UK: England & Wales License](https://creativecommons.org/licenses/by-sa/2.0/uk/).