Selenium 项目治理
Selenium 项目希望尽可能地使用公平、开放、邀请性质的程序运作,并最终对社区有利。出于这个原因,我们认为将项目日常运作的一些方式编成法典是有价值的。我们希望确保无论您是谁,都有机会为 Selenium 做出贡献。我们希望确保没有任何公司可以对社区施加不适当的影响或挟持项目。同样地,我们也希望确保从 Selenium 中获益的公司也有动力回馈社区。本文档描述了各种类型的贡献者如何在 Selenium 项目中工作。
用户
用户是指对项目有需求的社区成员。任何人都可以成为用户;没有特殊要求。常见的用户贡献包括- 宣传项目(例如,在网站上显示链接并通过口口相传提高知名度)
- 从新用户的角度告知优势和劣势(例如,在 GitHub 上提出错误问题,提出新功能)
- 提供精神支持(一句“谢谢”意义重大)
贡献者
贡献者是指以具体方式为项目做出贡献的社区成员,最常见的是代码和/或文档的形式。任何人都可以成为贡献者,贡献可以采取多种形式,例如通过为此目的创建的沟通渠道帮助其他用户。
- 分流 GitHub 问题。
- 组织 Selenium 聚会。
- 组织并协作参与 Selenium 会议。
不期望对项目做出承诺,没有特定的技能要求,也没有选拔过程。一些贡献者可能根据他们的贡献类型(例如,在分流后关闭问题)在 GitHub 存储库中拥有一些基本权限。
贡献者对源代码具有只读访问权限,并通过拉取请求提交更改。贡献者的拉取请求由技术领导委员会 (TLC) 成员或提交者审查并合并。TLC 成员和提交者与贡献者合作审查他们的代码并准备将其合并。
随着贡献者获得项目经验和熟悉度,他们在社区内的形象和对社区的承诺将会增加。在某个阶段,他们可能会发现自己被现有提交者或 TLC 成员提名为提交者角色。
分流员
随着贡献者在项目中成长,他们将被添加到分流团队中。他们的角色是帮助分流问题,并可能提交包含修复或至少失败测试的拉取请求,以帮助提交者重现问题。成为分流员的流程
- 将 GitHub 用户添加到
selenium-triage
GitHub 团队 - 邀请加入 Slack 团队聊天室 (
selenium-tlc
) - 从 SeleniumHQ Twitter 帐户向新的分流员发送祝贺推文
文档编写者
良好的文档对于所有软件项目都至关重要。文档编写者是指那些表明致力于改进项目各种特性和功能的示例和描述的社区成员。文档编写者被授予对项目文档 GitHub 存储库的推送访问权限。成为文档编写者的流程
- 将 GitHub 用户添加到
selenium-docs-and-site
GitHub 团队 - 邀请加入 Slack 团队聊天室 (
selenium-docs
) - 从 SeleniumHQ Twitter 帐户向新的文档编写者发送祝贺推文
翻译者
为了更好地支持我们的国际社区,我们提供了文档的翻译版本。翻译人员负责给定语言中的所有内容。这包括创建和更新内容,帮助确保在一个语言中创建的内容被标记为分发到其他语言,并管理与这些语言文件相关的任何拉取请求。成为翻译人员的流程
- 将 GitHub 用户添加到
selenium-docs-and-site
GitHub 团队 - 邀请加入 Slack 团队聊天室 (
selenium-docs
) - 从 SeleniumHQ Twitter 帐户向新的翻译人员发送祝贺推文
项目提交者
提交者是指那些表明致力于通过持续参与社区来推动项目持续发展的社区成员。提交者被授予对其贡献的项目 GitHub 存储库的推送访问权限。
提交者
- 应该首先将他们对项目代码的重大更改提案提交到 GitHub 问题,并且应该 ping 所有相关的提交者,以便他们可以在需要时参与讨论。
- 关于是否应合并代码的提交者之间的辩论应在 GitHub 拉取请求中进行,以保留项目决策历史。
- 通常,任何提交者都可以审查和合并拉取请求。提交者应仅合并他们有资格审查的代码,这可能需要 ping 另一位对特定代码区域具有更大所有权的提交者。
- 可以标记和关闭问题。
成为提交者
- 必须表现出作为团队成员参与项目的意愿和能力。
- 提交者应尊重每位社区成员,并以包容的精神进行协作。
- 已向一个或多个不同项目(IDE、Docker-Selenium、Selenium、Site & Docs)提交了足够的实质性贡献。对于技术贡献,足够的权重存在,并且很容易接受,因为它有良好的文档和测试。通常需要 10 个实质性贡献才能有资格成为提交者候选人,但也有可能存在贡献足够重要,较少的贡献量也可以接受的情况。
新的提交者可以由任何现有提交者或 TLC 成员提名。一旦他们被提名,TLC 成员将根据共识寻求流程寻求决策。
必须认识到,拥有提交者角色是一种特权,而不是权利。该特权必须通过努力获得,一旦获得,可以通过 TLC 成员的标准 TLC 动议将其删除。但是,在正常情况下,只要提交者希望继续参与该项目,提交者角色就会存在。
对项目(特别是其战略方向和长期健康)做出高于平均水平贡献的提交者,可能会被提名为 TLC 成员,如下所述。
添加提交者的流程
- 将 GitHub 用户添加到相关的 GitHub 团队
- 主 Selenium 存储库的
selenium-committers
- 主 Selenium IDE 存储库的
selenium-ide
- 网站和文档存储库的
selenium-docs-and-site
- Docker-Selenium 存储库的
selenium-docker
- 主 Selenium 存储库的
- 邀请加入 Slack 团队聊天室 (
selenium-committers
) - 从 SeleniumHQ Twitter 帐户向新的提交者发送祝贺推文
要查看当前提交者列表,请单击此处。
技术领导委员会 (TLC)
Selenium 项目的技术决策和路线图由技术领导委员会 (TLC) 管辖,该委员会负责项目的高级技术指导。
TLC 对此项目拥有最终权力,包括- 技术方向
- 存储库托管
贡献政策(与项目领导委员会 (PLC)共享)
TLC 的席位没有时间限制。TLC 的规模没有固定。TLC 的规模应足以确保对重要专业领域的充分覆盖,并兼顾高效决策的能力。
TLC 可以通过标准 TLC 动议向 TLC 添加其他成员。
TLC 成员可以通过自愿辞职或通过标准 TLC 或 PLC 动议从 TLC 中移除。
TLC 成员中来自同一雇主的成员不得超过 1/3。如果 TLC 成员的辞职或被移除,或者 TLC 成员的就业变更,导致超过 1/3 的 TLC 成员来自同一雇主,则必须立即通过辞职或移除来自代表性过高雇主的 一名或多名 TLC 成员来纠正这种情况。
TLC 成员除了提交者的职责外,还承担其他职责。这些职责确保项目以平稳的方式具有技术可行性和可持续性。TLC 成员应审查代码贡献、批准本文档的更改并管理项目输出中的版权。
TLC 成员满足提交者的所有要求,并且- 在审查并批准更改后,可以合并已接受问题的拉取请求,而无需 ping 可能对受影响的代码区域具有更大所有权的其他提交者,前提是审查和接受拉取请求不需要深入了解受影响的代码区域。
- 将代码直接推送到存储库,或在必要时,在收集他们认为必要的反馈后创建并合并他们自己的拉取请求。
- 每月讨论一次技术状态和项目路线图。
- 以乐于助人和协作的方式与社区合作。
- 对其他人的提交给出良好的反馈,并表现出对项目代码质量标准的整体理解。
- 承诺长期成为社区的一份子。
- 至少在不同项目(IDE、Docker-Selenium、Selenium、网站和文档)中提交了 20 个实质性的拉取请求,或者推送了至少 20 个实质性的提交。
现有 TLC 成员会邀请 Committer 成为 TLC 成员。提名将引发讨论,然后由 TLC 做出决定。
添加 TLC 成员的流程
- 将 GitHub 用户添加到
Selenium TLC
团队 - 将 GitHub 用户设置为 SeleniumHQ 组织的“所有者”角色
- 邀请加入 Slack TLC 聊天室 (
selenium-tlc
) - 将 TLC 成员添加到不同的软件包分发组织
- NPM
- SonarType (maven)
- pypi.org
- rubygems.org
- nuget.org
- 从 SeleniumHQ Twitter 帐户向新 TLC 成员发送祝贺推文
要查看当前 TLC 成员列表,请单击此处。
项目领导委员会 (PLC)
项目的整体连续性和未来由项目领导委员会 (PLC) 监督,该委员会充当 Selenium 项目与软件自由保护组织 (SFC) 之间的桥梁。
由于 Selenium 项目涉及许多不同的方面,PLC 希望反映的不仅仅是编写代码的人。PLC 会以不同的方式参与,例如在项目花费资金、签订法律协议或必须与律师打交道时。通常,PLC 会与社区的其他成员讨论该主题,然后进行投票。
标准的 PLC 席位没有时间限制。PLC 中一次只能有一人与任何特定雇主相关联。PLC 成员人数应始终为奇数,以便任何投票都不会出现平局,理想的最小人数为 5 人。PLC 成员也应是社区的活跃成员。
此外,TLC 可以进行投票,任命其一名成员担任活跃的 PLC 成员。此人不受上述雇主限制的约束,但任命将在六个月结束时自动失效。PLC 中的 TLC 成员将使用他们的投票权来传递 TLC 的意愿。这可能需要该成员持有来自 TLC 成员的投票,以形成共识并代理给 PLC。如果投票期间出现平局,TLC 代表的投票将决定获胜的投票。
成为 PLC 成员的条件- 现有 PLC 成员卸任,并建议一人(或多人)来取代他们。
- 成为 Committer 或贡献者。
- 承诺长期成为社区的一份子。
现有 PLC 会咨询 TLC 和活跃的 Committer,他们将基于共识寻求流程来寻求是否添加这些人的决定。
- 在没有事先与他们讨论过(以确保他们同意)的情况下,永远不会公开建议任何人。
- 项目治理和流程(包括此政策)。
- 贡献政策(与 TLC 共享)。
- 预算和法律相关问题。
PLC 还应每月讨论一次项目的整体状态以及任何待决或即将出现的主题。
PLC 成员可以通过自愿辞职或标准的 PLC 动议从 PLC 中移除。
添加 PLC 成员的流程
- 邀请加入 Slack PLC 聊天室 (
selenium-plc
) - 从 SeleniumHQ Twitter 帐户向新 PLC 成员发送祝贺推文
要查看当前 PLC 成员列表,请单击此处。
沟通渠道
该项目维护各种渠道,用于提供信息、支持开发和促进团队成员之间的沟通。在这些渠道中进行所有类型的沟通都必须严格遵守项目的行为准则。
Twitter 帐户 @seleniumhq:用于交流和宣传有关项目或项目相关主题的新闻。
聊天室:供所有 Selenium 用户寻求有关项目使用问题的帮助和支持的聊天室。
Slack:镜像 IRC 聊天室,也被所有 Selenium 用户用来寻求有关项目使用问题的帮助和支持。
- 项目 Committer 频道,上述 Slack 频道中的
selenium-committers
:项目 Committer 团队成员用于讨论贡献和组织其他协作工作的私人频道。 - TLC 频道,上述 Slack 频道中的
selenium-tlc
:TLC 成员用于讨论技术规划和技术项目路线图的私人频道。 - PLC 频道,上述 Slack 频道中的
selenium-plc
:PLC 成员用于讨论整体项目规划、路线图和相关问题的私人频道。
共识寻求流程
PLC 和 TLC 遵循共识寻求决策模型。
当议程项目似乎达成共识时,主持人会问“是否有人反对?”作为对共识的最后一次异议呼吁。
如果议程项目无法达成共识,PLC/TLC 成员可以要求进行最终投票或投票推迟对该问题的进一步讨论,直到下次会议。要求投票必须获得 TSC 的多数批准,否则讨论将继续。简单多数获胜。
赞助
Selenium 项目是软件自由保护组织(一个 501(c)3 非营利组织)的成员。保护组织允许我们将组织资源与其他项目(如 Inkscape、Samba 和 Wine)汇集在一起,以减少创建我们自己的专用法律实体相关的管理开销。
请访问 https://selenium.net.cn/sponsor/ 了解更多详情
商业和社区驱动的项目
Selenium 项目提供的工具的广泛使用,催生了大量的商业服务和开源/社区驱动的项目。Selenium 项目允许并鼓励任何人启动任何类型的项目或服务,其目标是简化和推广 Selenium 在社区中的使用。
尽管如此,由于其开源、社区和非营利性质,Selenium 项目在其网站上只会提及基于 Selenium 或 WebDriver 的相同性质的项目,赞助商页面除外。如果商业工具或项目希望在 Selenium 网站上被提及,请参阅本文档的赞助部分。
提出与治理相关的问题
这种治理模式必然会留下许多未明确说明的情况。如果出现问题,询问在特定情况下应如何根据项目的总体目标进行操作,最好的方法是打开一个 GitHub 问题并 ping PLC/TLC 成员。这项工作是 ESLint 项目治理模型的衍生品
这项工作根据 知识共享署名-相同方式共享 2.0 英国:英格兰和威尔士许可协议获得许可