Selenium 项目治理

Selenium 项目希望尽可能使用公平、开放、有吸引力且最终有益于社区的程序来运营。因此,我们认为对项目日常业务的一些方式进行编纂很有价值。我们希望确保无论您是谁,您都有机会为 Selenium 做出贡献。我们希望确保没有任何公司可以对社区施加不当影响或劫持项目。同样,我们希望确保从 Selenium 中受益的公司也有动力回馈。本文档描述了各种类型的贡献者在 Selenium 项目中的工作方式。

用户

用户是需要该项目的社区成员。任何人都可以成为用户;没有特殊要求。常见的用户贡献包括
  • 宣传项目(例如,在网站上显示链接并通过口口相传提高认识)
  • 从新用户的角度告知优势和劣势(例如,将错误作为 GitHub 问题提出,提出新功能)
  • 提供精神支持(“谢谢”意义重大)
继续参与项目及其社区的用户通常会越来越参与。此类用户可能会发现自己成为贡献者,如下一节所述。

贡献者

贡献者是社区成员,他们以具体方式为项目做出贡献,最常见的是代码和/或文档形式。任何人都可以成为贡献者,贡献可以采取多种形式,例如
  • 通过任何为该目的而设的通信渠道帮助其他用户。

  • 对 GitHub 问题进行分类。
  • 组织 Selenium 聚会。
  • 组织和协作参加 Selenium 会议。

对项目没有任何承诺期望,没有特定的技能要求,也没有选择流程。一些贡献者可能对 GitHub 仓库拥有一些基本权限,具体取决于其贡献类型(例如,在对问题进行分类后关闭问题)。

贡献者具有对源代码的只读访问权限,并通过拉取请求提交更改。贡献者拉取请求会由技术领导委员会 (TLC)成员或提交者审查并合并其贡献。TLC 成员和提交者与贡献者合作审查其代码并准备合并。

随着贡献者获得经验并熟悉项目,他们在这个项目中的个人资料和对社区的承诺将会增加。在某个阶段,他们可能会发现自己被现有提交者或 TLC 成员提名为提交者角色。

分类员

随着贡献者在项目中成长,他们将被添加为分类团队的成员。他们的角色是帮助对问题进行分类,并可能提交带有修复或至少一个失败测试的拉取请求,以帮助提交者重新创建问题。

成为分类者的流程

  1. 将 GitHub 用户添加到selenium-triageGitHub 团队
  2. 邀请加入 Slack 团队聊天室(selenium-tlc
  3. 从 SeleniumHQ Twitter 帐户发推文祝贺新分类者

文档编制者

良好的文档对于所有软件项目至关重要。文档编写者是社区成员,他们表明自己致力于改进项目的各种功能和特性的示例和描述。文档编写者被授予对项目的文档 GitHub 仓库的推送访问权限。

成为文档编写者的流程

  1. 将 GitHub 用户添加到selenium-docs-and-siteGitHub 团队
  2. 邀请加入 Slack 团队聊天室(selenium-docs
  3. 从 SeleniumHQ Twitter 帐户发推文祝贺新文档编写者

翻译人员

为了更好地支持我们的国际社区,我们提供了文档翻译。翻译人员负责给定语言中的所有内容。这包括创建和更新内容,帮助确保用一种语言创建的内容被标记为分发到其他语言,以及管理与这些语言文件相关的任何拉取请求。

成为翻译人员的流程

  1. 将 GitHub 用户添加到selenium-docs-and-siteGitHub 团队
  2. 邀请加入 Slack 团队聊天室(selenium-docs
  3. 通过 SeleniumHQ Twitter 帐户向新翻译致以祝贺

项目提交者

提交者是社区成员,他们通过持续参与社区活动,展示了他们致力于项目的持续发展。提交者获得对他们做出贡献的项目的 GitHub 存储库的推送访问权限。

提交者

  • 应首先将他们对项目代码进行重大更改的建议提交到 GitHub 问题中,并且应 ping 所有相关的提交者,以便他们可以在需要时对讨论进行权衡。
  • 提交者之间关于是否应合并代码的争论应在 GitHub 拉取请求中进行,以保留项目决策历史记录。
  • 一般来说,任何提交者都可以审查和合并拉取请求。提交者只应合并他们有资格审查的代码,这可能需要 ping 另一个对特定代码区域拥有更大所有权的提交者。
  • 可以标记和关闭问题。

成为提交者

  • 必须表现出作为团队成员参与项目的意愿和能力。
  • 期望提交者尊重每个社区成员,并本着包容的精神协作工作。
  • 已向一个或多个不同的项目(IDE、Docker-Selenium、Selenium、站点和文档)提交了足够实质性的贡献。对于技术贡献,存在足够的权重,并且由于记录和测试充分,因此需要很少的精力来接受。通常需要 10 项实质性贡献才能有资格成为提交者的候选人,但在某些情况下,贡献可能足够大,因此较少的数量也可以接受。

任何现有的提交者或 TLC 成员都可以提名新提交者。一旦他们被提名,TLC 成员将根据寻求共识的过程寻求决策。

重要的是要认识到拥有提交者角色是一种特权,而不是权利。必须赢得该特权,一旦获得,TLC 成员可以通过标准 TLC 动议将其取消。但是,在正常情况下,只要提交者希望继续参与项目,提交者角色就会一直存在。

对项目做出高于平均水平贡献的提交者,尤其是在其战略方向和长期健康方面,可能会被提名成为 TLC 成员,如下所述。

添加提交者的流程

  1. 将 GitHub 用户添加到相关的 GitHub 团队
    • 主 Selenium 存储库的selenium-committers
    • 主 Selenium IDE 存储库的selenium-ide
    • selenium-docs-and-site 用于网站和文档存储库
    • selenium-docker 用于 Docker-Selenium 存储库
  2. 邀请加入 Slack 团队聊天室 (selenium-committers)
  3. 从 SeleniumHQ Twitter 帐户向新提交者发送祝贺推文

要查看当前提交者的列表,请点击 此处

技术领导委员会 (TLC)

Selenium 项目的技术决策和路线图由技术领导委员会 (TLC) 管理,该委员会负责该项目的总体技术指导。

TLC 对该项目拥有最终决定权,包括

TLC 席位不受时间限制。TLC 没有固定规模。TLC 的规模应确保对重要专业领域的充分覆盖,同时兼顾高效决策的能力。

TLC 可以通过标准 TLC 动议向 TLC 添加其他成员。

TLC 成员可以自愿辞职或通过标准 TLC 或 PLC 动议从 TLC 中移除。

TLC 成员中最多 1/3 可以隶属于同一家雇主。如果 TLC 成员的移除或辞职,或 TLC 成员的就业变更,导致超过 1/3 的 TLC 成员共享一个雇主,那么必须立即由隶属于超额代表雇主的 TLC 成员辞职或被移除来补救这种情况。

TLC 成员除了承担提交者的职责外,还承担其他职责。这些职责确保项目以平稳的方式具有技术可行性和可持续性。TLC 成员应审查代码贡献、批准对本文档的更改,并管理项目输出中的版权。

TLC 成员满足提交者的所有要求,并且还
  • 可以在审查和批准更改后合并已接受问题的拉取请求,无需联系可能对受影响代码区域拥有更大所有权的其他提交者,因为审查和接受拉取请求不需要对受影响代码区域有深入了解。
  • 在收集他们认为必要的反馈后,直接将代码推送到存储库,或在必要时创建并合并他们自己的拉取请求。
  • 每月讨论一次技术状态和项目路线图。
成为 TLC 成员
  • 以乐于助人和协作的方式与社区合作。
  • 对其他人的提交提供良好的反馈,并展示对项目代码质量标准的整体理解。
  • 承诺长期成为社区的一部分。
  • 在不同的项目(IDE、Docker-Selenium、Selenium、Site & Docs)中提交至少 20 个实质性拉取请求或推送至少 20 个实质性提交。

现有 TLC 成员邀请提交者成为 TLC 成员。提名将导致讨论,然后由 TLC 做出决定。

添加 TLC 成员的过程

  1. 将 GitHub 用户添加到Selenium TLC团队
  2. 将 GitHub 用户设置为 SeleniumHQ 组织的“所有者”角色
  3. 邀请加入 Slack TLC 聊天室(selenium-tlc
  4. 将 TLC 成员添加到不同的软件包分发组织
    • NPM
    • SonarType(maven)
    • pypi.org
    • rubygems.org
    • nuget.org
  5. 从 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 成员辞职,并建议某人(或某些人)取代他们。
  • 成为提交者或贡献者。
  • 承诺长期成为社区的一部分。
  • 现有的 PLC 会与 TLC 和活跃的提交者协商,后者将根据 共识寻求流程 寻求决定,以添加或不添加这些人。

  • 在未事先与他们讨论此想法(以确保他们对此想法感到满意)的情况下,绝不会公开推荐任何人。
PLC 对此项目拥有最终决定权,包括
  • 项目治理和流程(包括此政策)。
  • 贡献政策(与 TLC 共享)。
  • 预算和法律相关问题。

PLC 还应每月讨论一次项目的整体状态以及任何待定或即将到来的主题。

PLC 成员可通过自愿辞职或标准 PLC 动议从 PLC 中移除。

添加 PLC 成员的流程

  1. 邀请加入 Slack PLC 聊天室 (selenium-plc)
  2. 从 SeleniumHQ Twitter 帐户向新 PLC 成员发送祝贺推文

要查看当前 PLC 成员列表,请点击 此处

通信渠道

该项目维护着各种渠道,用于提供信息、支持开发和促进团队成员之间的沟通。在这些渠道中进行的所有类型的沟通都必须严格遵守项目的行为准则。

  • Twitter 帐户 @seleniumhq:用于传达和推广与项目或项目相关主题有关的新闻。

  • 聊天室:所有 Selenium 用户的聊天室,用于寻求有关使用该项目的帮助和支持。

  • Slack :镜像 IRC 聊天室,所有 Selenium 用户也使用它来寻求有关使用该项目的帮助和支持。

  • 项目提交者频道,在上面提到的 Slack 频道中为 selenium-committers:项目提交者团队成员的私人频道,用于讨论贡献并组织其他协作工作。
  • TLC 频道,在上面提到的 Slack 频道中为 selenium-tlc:TLC 成员的私人频道,用于讨论技术规划和技术项目路线图。
  • PLC 频道,在上面提到的 Slack 频道中的 selenium-plc:PLC 成员用于总体项目规划、路线图和相关问题的私人频道。

共识寻求流程

PLC 和 TLC 遵循 共识寻求 决策模型。

当一个议程项目似乎达成共识时,主持人会询问“是否有人反对?”作为对共识的最后异议征集。

如果一个议程项目无法达成共识,PLC/TLC 成员可以要求进行闭幕投票或投票将该问题的进一步讨论推迟到下次会议。投票要求必须得到 TSC 大多数成员的批准,否则讨论将继续进行。简单多数获胜。

赞助

Selenium 项目是 Software Freedom Conservancy 的成员,这是一家 501(c)3 非营利组织。Conservancy 允许我们与其他项目(例如 Inkscape、Samba 和 Wine)汇集组织资源,以减少与创建我们自己的专门法律实体相关的管理开销。

请参阅 http://seleniumcn.cn/sponsor/ 了解更多详情

商业和社区驱动项目

Selenium 项目提供的工具被广泛使用,创造了大量的商业服务和开源/社区驱动项目。Selenium 项目使任何人都能够启动任何类型的项目或服务,其目标是简化和推广 Selenium 在整个社区中的使用。

然而,由于其开源、社区和非营利性起源,Selenium 项目在其网站上只会提及基于 Selenium 或 WebDriver 的同类项目,赞助商页面除外。如果商业工具或项目希望在 Selenium 网站上提及,请参阅本文档的 赞助 部分。

提出与治理相关的问题

此治理模型必然会留下许多未指定的情况。如果对如何根据项目的总体目标处理给定情况产生疑问,最好的办法是打开一个 GitHub 问题并 ping PLC/TLC 成员。