治理
ESLint 是一个开源项目,依赖于社区的贡献。任何人都可以通过提交代码、参与讨论、提出建议或任何他们认为合适的其他贡献随时为该项目做出贡献。本文档描述了各种类型的贡献者在 ESLint 项目中的工作方式。
角色和职责
用户
用户是社区成员,他们需要该项目。任何人都可以成为用户;没有特殊要求。常见的用户贡献包括宣传项目(例如,在网站上显示链接并通过口碑提高认识)、从新用户的角度告知开发人员项目的优缺点或提供道义上的支持(“谢谢”非常重要)。
继续参与项目及其社区的用户往往会越来越积极参与。此类用户可能会发现自己成为了贡献者,如下一节所述。
贡献者
贡献者是社区成员,他们以具体的方式为项目做出贡献,最常见的是以代码和/或文档的形式。任何人都可以成为贡献者,贡献可以采取多种形式。对项目的承诺没有预期,没有特定的技能要求,也没有选择过程。
贡献者对源代码具有只读访问权限,因此通过拉取请求提交更改。贡献者的拉取请求由 TSC 成员审查和合并。TSC 成员和提交者与贡献者合作审查他们的代码并准备合并。
随着贡献者获得更多经验并熟悉项目,他们在社区中的形象和承诺将增强。在某个阶段,他们可能会发现自己被现有的网站团队成员或提交者提名为网站团队成员或提交者。
网站团队成员
网站团队成员是社区成员,他们已证明他们致力于通过持续参与社区来维护 eslint.org。网站团队成员被授予对 eslint.org
GitHub 存储库的推送访问权限,并且必须遵守项目的 贡献指南。
网站团队成员
- 预计每周至少工作一小时来分类问题和审查拉取请求。
- 预计每周在 ESLint 上总共工作至少两小时。
- 可以按每小时 50 美元的价格开具他们用于在 ESLint 上工作的小时数的发票。
- 预计每周工作日(不包括节假日和其他休假时间)在
#team
Discord 频道中查看一次团队更新。 - 预计在源存储库的公共分支上工作,并从该分支向主分支提交拉取请求。
- 预计在不再需要时删除其公共分支。
- 必须为所有更改提交拉取请求。
- 在被接受到存储库之前,他们的工作将由审阅者和 TSC 成员审查。
- 可以标记和关闭与网站相关的 issue(请参阅 管理 issue)
- 可以合并一些拉取请求(请参阅 审查拉取请求)
- 可以随时休假,并且预计在他们将离开超过几天时在
#team
Discord 频道中发布。
成为网站团队成员
- 必须表现出愿意和能够作为团队成员参与 eslint.org 的维护。通常,潜在的网站团队成员需要证明他们了解网站的结构以及它如何融入更大的 ESLint 项目的目标和策略。
- 网站团队成员应尊重每一位社区成员,并本着包容的精神进行协作。
- 已提交至少 10 个与网站相关的拉取请求。什么是与网站相关的拉取请求?一个对
eslint.org
存储库或eslint
存储库中的docs
目录进行的拉取请求,并且由于其文档齐全且经过测试,因此需要很少的精力即可接受。
任何现有的网站团队成员或提交者都可以提名新的网站团队成员。一旦他们被提名,TSC 成员将进行投票。
必须认识到,网站团队的成员资格是一种特权,而不是权利。这种特权必须赢得,一旦赢得,就可以通过标准的 TSC 动议由 TSC 成员撤销。但是,在正常情况下,网站团队成员只要愿意继续参与项目,就可以一直担任。
提交者
提交者是社区成员,他们已证明他们致力于通过持续参与社区来持续开发该项目。提交者被授予对项目的 GitHub 存储库的推送访问权限,并且必须遵守项目的 贡献指南。
提交者
- 预计每周至少工作一小时来分类问题和审查拉取请求。
- 预计每周在 ESLint 上总共工作至少两小时。
- 可以按每小时 50 美元的价格开具他们用于在 ESLint 上工作的小时数的发票。
- 预计每周工作日(不包括节假日和其他休假时间)在
#team
Discord 频道中查看一次团队更新。 - 预计在源存储库的公共分支上工作,并从该分支向主分支提交拉取请求。
- 预计在不再需要时删除其公共分支。
- 预计在 分类板 的“需要反馈”列中提供有关 issue 的反馈。
- 预计每月至少处理一个他们没有创建的位于 分类板 的“准备实施”列中的 issue。
- 必须为所有更改提交拉取请求。
- 在被接受到存储库之前,他们的工作将由 TSC 成员审查。
- 可以标记和关闭 issue(请参阅 管理 issue)
- 可以合并一些拉取请求(请参阅 审查拉取请求)
- 可以随时休假,并且预计在他们将离开超过几天时在
#team
Discord 频道中发布。
成为提交者
- 必须表现出愿意和能够作为团队成员参与项目的意愿。通常,潜在的提交者需要证明他们了解并认可该项目、其目标和策略。
- 提交者应尊重每一位社区成员,并本着包容的精神进行协作。
- 已提交至少 10 个合格的拉取请求。什么是合格的拉取请求?一个具有重大技术意义并且由于其文档齐全且经过测试而需要很少的精力即可接受的拉取请求。
任何现有的提交者都可以提名新的提交者。一旦他们被提名,TSC 成员将进行投票。
必须认识到,提交者资格是一种特权,而不是权利。这种特权必须赢得,一旦赢得,就可以通过标准的 TSC 动议由 TSC 成员撤销。但是,在正常情况下,只要提交者愿意继续参与项目,就可以一直担任提交者。
对项目做出高于平均水平贡献的提交者,尤其是在项目的战略方向和长期健康方面,可以被提名为审阅者,如下所述。
审阅者
审阅者是社区成员,他们通过分类 issue、修复 bug、实施增强功能/特性,为项目贡献了大量时间,并且是值得信赖的社区领导者。
审阅者可以执行提交者执行的所有职责,还可以
- 在审查并批准更改后,可以合并已接受 issue 的外部拉取请求。
- 在收集到他们认为必要的反馈后,可以合并他们自己的拉取请求。(在没有至少一位提交者/审阅者/TSC 成员的评论表明他们查看过代码的情况下,不得合并任何拉取请求。)
- 可以按每小时 80 美元的价格开具他们用于在 ESLint 上工作的小时数的发票。
成为审阅者
- 以乐于助人和协作的方式与社区合作。
- 对其他人的提交提供了良好的反馈,并展示了对项目代码质量标准的全面理解。
- 承诺长期成为社区的一份子。
- 已提交至少 50 个合格的拉取请求。
现有审阅者和 TSC 成员会邀请代码贡献者成为审阅者。提名将引发讨论,然后由 TSC 做出决定。
技术指导委员会 (TSC)
ESLint 项目由技术指导委员会 (TSC) 共同管理,该委员会负责项目的总体指导。
TSC 对该项目拥有最终决定权,包括:
- 技术方向
- 项目治理和流程(包括本政策)
- 贡献政策
- GitHub 代码仓库托管
TSC 职位没有时间限制。TSC 的规模不能超过五名成员。这种规模确保了对重要专业领域充分覆盖,同时能够高效地做出决策。
TSC 可以通过标准的 TSC 提案增加其他成员。
TSC 成员可以通过自愿辞职、标准的 TSC 提案或连续缺席四次 TSC 会议而被移除。在所有情况下,TSC 成员将恢复为审阅者身份,除非他们更愿意成为校友。
TSC 成员变更应在议程中发布,并且可以像任何其他议程项目一样提出建议(请参阅下面的“TSC 会议”)。
TSC 成员中,来自同一雇主的人数不得超过 1/3。如果 TSC 成员的移除或辞职,或 TSC 成员的雇佣关系变更导致超过 1/3 的 TSC 成员来自同一雇主,则必须由来自过度代表的雇主之一或多名 TSC 成员辞职或被移除来立即解决此情况。
TSC 成员除了审阅者的职责外,还承担其他责任。这些职责确保项目的顺利运行。TSC 成员应审查代码贡献、批准对本文档的修改、管理项目输出中的版权以及参加定期的 TSC 会议。
TSC 成员可以履行所有审阅者的职责,还可以:
- 发布所有 ESLint 项目的新版本。
- 参加 TSC 会议。
- 提出预算项目。
- 提出新的 ESLint 项目。
除了对审阅者的期望之外,TSC 成员没有特定的要求或资格。
现有 TSC 成员会邀请审阅者成为 TSC 成员。提名将引发讨论,然后由 TSC 做出决定。
TSC 会议
TSC 每两周在 TSC 会议 Discord 频道举行会议。会议由 TSC 批准的指定主持人主持。
将有争议的项目或对治理、贡献政策、TSC 成员或发布流程的修改添加到 TSC 议程中。
议程的目的是不批准或审查所有补丁。这应该在 GitHub 上持续进行,并由更大的代码贡献者群体处理。
任何社区成员、代码贡献者或审阅者都可以通过记录 GitHub Issue 要求将某些内容添加到下次会议的议程中。任何人都可以通过在 issue 中添加“tsc agenda”标签将该项目添加到议程中。
在每次 TSC 会议之前,主持人都会与 TSC 成员共享议程。TSC 成员可以在每次会议开始时将他们喜欢的任何项目添加到议程中。主持人和 TSC 无法否决或删除项目。
在会议中没有足够的 TSC 成员出席的情况下,无法对 TSC 议程项目进行具有约束力的投票。当超过一半的 TSC 成员(减去缺席成员)在场时,即达到法定人数。
TSC 可以邀请某些项目的个人或代表以非投票身份参加会议。
主持人负责总结每个议程项目的讨论,并在会议结束后将其发送为拉取请求。
寻求共识的过程
TSC 遵循 寻求共识 的决策模型。
当议程项目似乎已达成共识时,主持人将询问“有人反对吗?”作为对共识的最终异议呼吁。
如果议程项目无法达成共识,TSC 成员可以呼吁进行最终投票或将该议题推迟到下次会议的投票。投票呼吁必须获得 TSC 大多数成员批准,否则讨论将继续进行。简单多数获胜。
此工作源自 YUI 贡献者模型 和 Node.js 项目治理模型。
此作品根据 知识共享署名-相同方式共享 2.0 英国:英格兰和威尔士许可证 授权。