治理

本文档描述了项目的规则和治理。它旨在被项目的所有开发人员和 Prometheus 社区所遵循。此治理文档中使用的常用术语如下所示

  • 团队成员:私有 prometheus-team Google 群组的任何成员。

  • 维护者:维护者领导单个项目或其部分内容 (MAINTAINERS.md)。

  • 项目:Prometheus GitHub 组织中的单个存储库称为项目。

  • Prometheus 项目:在此治理下执行的所有活动的总和,涉及一个或多个存储库或社区。

价值观

Prometheus 的开发者和社区应遵循 CNCF 章程 中定义的价值观,包括 CNCF 行为准则。此外,Prometheus 社区努力做到友善、有效地提供反馈并营造一个欢迎的环境。Prometheus 的开发者通常通过共识进行决策,只有在无法达成共识时才通过多数票进行冲突解决。

项目

每个项目必须有一个 MAINTAINERS.md 文件,其中至少有一个维护者。如果项目有发布流程,则应提供访问权限和文档,以便多人可以执行发布。发布应在 prometheus-users 邮件列表上宣布。任何新项目都应首先在 开发者邮件列表上按照下面列出的投票程序进行提议。当项目不再相关时,应将其移动到 prometheus-junkyard GitHub 组织。

决策

团队成员

团队成员身份可以授予那些对 Prometheus 项目持续贡献至少 3 个月的人。这通常以代码改进和/或文档方面的重要工作为形式,但组织活动或用户支持也可以考虑在内。

任何现有成员都可以通过电子邮件向 prometheus-team 提出新成员的提名。非常希望就接受新成员达成共识。但是,该提议最终由正式的 绝对多数票 投票决定。

如果新成员提名被接受,应通过电子邮件私下联系被提名的团队成员,以确认或否认他们接受团队成员身份。此电子邮件还将抄送至 prometheus-team 以便记录。

如果他们选择接受,则遵循 入职 程序。

团队成员可以随时通过发送电子邮件给 团队 来退休。

可以通过在 团队邮件列表上进行绝对多数票投票来移除团队成员。对于此投票,有问题的成员没有资格投票,也不计入法定人数。任何移除投票只能涵盖一个人。

成员去世后,他们会自动离开团队。

如果成员离职,则应用 离职 程序。

当前的团队成员是

之前的成员

  • Brian Brazil
  • Conor Broderick
  • Fabian Reinartz
  • Jessica Grebenschikov
  • Krasi Georgiev
  • Matt Layher
  • Steve Durrheimer
  • Stuart Nelson

请注意,在创建此治理文档和正式团队成员资格之前,Prometheus 已经收到了许多未列出个人的重大贡献。

维护者

维护者领导一个或多个项目或其部分内容,并充当该项目贡献者之间冲突解决的重点。理想情况下,维护者也是团队成员,但是对于合适的维护者,由于任何原因,他们还不是团队成员,也存在例外情况。

维护权的变更必须在 开发者邮件列表上宣布。它们由 惰性共识决定,并通过更改相应存储库的 MAINTAINERS.md 文件来形式化。

维护者被授予在 GitHub 组织中所有项目的提交权限。

维护者或提交者可以通过通知 团队邮件列表来辞职。一年内没有项目活动的维护者被视为已辞职。希望辞职的维护者应建议另一位团队成员接管该项目。

一个项目可以有多个维护者,只要他们之间明确商定职责即可。这包括协调谁处理哪些问题和拉取请求。

技术决策

仅影响单个项目的技术决策由该项目的维护者非正式地做出,并且假定为 惰性共识。跨越 Prometheus 项目多个部分的技术决策应在 Prometheus 开发者邮件列表上进行讨论和制定。

决策通常由 惰性共识做出。如果无法达成共识,则可以通过 多数票 解决该问题。

治理变更

本文档的重大更改将在 开发者邮件列表上公开讨论。任何更改都需要 绝对多数支持。除非受到质疑,否则编辑性更改可以通过 惰性共识进行。

编辑性变更

编辑性变更是指修复拼写或语法、更新工作隶属关系或类似情况的变更;它们更新样式或反映外部和显而易见的事实。它们不会更改本文档中任何内容的意图或含义。它们必须通过 PR 进行,并通过 惰性共识接受。

其他事项

任何需要决定的事项,包括但不限于财务事项,如果任何成员认为有必要,都可以调用投票。对于财务、私人或人事事项,讨论和投票在 团队邮件列表上进行,否则在 开发者邮件列表上进行。

投票

Prometheus 项目通常通过非正式共识运行,但有时必须做出正式决定。

根据 上面列出的主题,使用不同的投票方法。

对于所有投票,投票必须开放至少一周。结束日期应在投票请求中明确说明。如果已经以一种方式投入了足够的票数,以至于进一步的投票无法改变最终决定,则可以提前调用和关闭投票。

在所有情况下,所有且只有 团队成员有资格投票,唯一的例外是强制移除团队成员,在这种情况下,该成员没有资格投票。

关于人事事项(包括但不限于团队成员资格和维护权)的讨论和投票在 团队邮件列表上私下进行。所有其他讨论和投票在 开发者邮件列表上公开进行。

对于公开讨论,鼓励任何有兴趣的人参与。正式的反对或投票权仅限于团队成员

共识

Prometheus 项目的默认决策机制是惰性共识。这意味着,只要没有人反对,技术问题上的任何决定都被认为得到了团队的支持。

对任何共识决定的沉默都表示默认同意,与明确同意等效。可以随意声明明确同意。任何人都可以在任何时候在开发者邮件列表中发起决策,但这不是必须的。

共识决定永远不能推翻或违背之前明确投票的精神。

如果有任何团队成员提出异议,团队成员会共同努力,寻找所有相关人员都能接受的解决方案。该解决方案再次受到惰性共识的约束。

如果无法达成共识,但必须做出决定,则任何团队成员都可以发起正式的多数投票

多数投票

多数投票必须在相应的邮件列表中以单独的线程明确发起。主题必须以 [VOTE] 为前缀。在正文中,投票请求必须说明正在投票的提案。它应该引用到目前为止的任何讨论。

投票可以采取单一提案的形式,可以选择投赞成票或反对票,也可以采取多种选择的形式。

如果赞成票多于反对票,则对单一提案的投票被视为成功。

如果有多个选择,成员可以为一个或多个选择投票,也可以投“反对”票来反对所有选择。不可能投“弃权”票。如果一个选择获得了最多的赞成票,并且获得了超过一半的投票者的赞成票,则认为对多个选择的投票倾向于该选择。如果没有选择达到此法定人数,则可以单独发起对减少的选择的另一轮投票。

超级多数投票

超级多数投票必须在相应的邮件列表中以单独的线程明确发起。主题必须以 [VOTE] 为前缀。在正文中,投票请求必须说明正在投票的提案。它应该引用到目前为止的任何讨论。

投票可以采取单一提案的形式,可以选择投赞成票或反对票,也可以采取多种选择的形式。

如果至少有三分之二的有投票资格的人投了赞成票,则对单一提案的投票被视为成功。

如果有多个选择,成员可以为一个或多个选择投票,也可以投“反对”票来反对所有选择。如果一个选择获得了最多的赞成票,并且获得了至少三分之二的有投票资格的人的赞成票,则认为对多个选择的投票倾向于该选择。如果没有选择达到此法定人数,则可以单独发起对减少的选择的另一轮投票。

入职/离职

入职/离职部分是信息性的,除非受到质疑,否则可以通过惰性共识更改。如果无法达成共识,则可以通过多数投票解决此事。

入职

新成员

  • 被添加到团队成员列表中。理想情况下,他们应该自己发送 PR,至少要批准该 PR。
  • 由现有团队成员在开发者邮件列表中宣布。理想情况下,新成员应该在此线程中回复,确认团队成员身份。
  • 作为所有者被添加到GitHub 组织中。
  • 可以选择性地添加到社区、废品场和相关组织和存储库中。
  • 被添加到团队邮件列表中。
  • 使用新成员选择的用户名添加到 prometheus.io GSuite 帐户。(最重要的是,这附带一个<chosen-username>@prometheus.io电子邮件地址,并提供对团队 GDrive 和日历的访问权限。新成员应将后者添加到他们自己的日历列表中。)
  • 向 CNCF 宣布。
  • 获得共享密码存储的访问权限。

离职

前成员

  • 团队成员列表中删除。理想情况下,他们应该自己发送 PR,至少要批准该 PR。如果强制删除,则无需批准。
  • GitHub 组织和相关组织和存储库中删除。如果团队同意,他们可以选择保留一个或多个存储库的维护权。
  • 团队邮件列表中删除,并降级为其他邮件列表的普通成员,即开发者用户公告
  • 向 CNCF 宣布已删除。我们将明确要求 CNCF 重新确认删除。
  • 从共享密码存储中删除。所有密码、API 令牌等都会在适当的时候轮换(即,在非自愿离职的情况下立即轮换,但可以与其他离职或常规轮换一起批量处理)。
  • 从适用的组帐户中删除。具有某种组帐户的服务包括但不限于 Digital Ocean、DockerHub、GSuite、Netlify、Twitter(通过 Tweetdeck)、Youtube。
  • 不再允许自称为活跃的团队成员,也不允许暗示这种情况存在。
  • 如果他们愿意,则添加到以前的成员列表中。

如果需要,我们保留公开宣布删除的权利。

常见问题解答

常见问题解答部分是信息性的,除非受到质疑,否则可以通过惰性共识更改。如果无法达成共识,则可以通过多数投票解决此事。

如何提出决策?

开发者邮件列表发送一封包含您动议的电子邮件。如果在合理的时间内没有异议,则认为该决策已做出。如果有异议且无法达成共识,则团队成员可以发起投票。

如何成为团队成员?

要成为正式的团队成员,您应该持续为一个或多个项目贡献至少三个月。届时,团队成员(通常是项目的维护者)可以提名您为成员。关于此事的讨论将私下进行,并且在做出决定后会私下通知您。一种可能但非必需的进阶路径是先成为维护者。

如果决定是赞成的,您新加入的会员资格也将在开发者邮件列表中宣布。

如何添加项目?

作为团队成员,在开发者邮件列表中提出新项目。如果没有人反对,请在 GitHub 组织中创建该项目。至少添加一个 README.md 来解释该项目的目标,以及一个包含项目维护者的 MAINTAINERS.md(此时,这可能意味着您)。

如何存档或删除项目?

开发者邮件列表发送一封电子邮件,提出要废弃项目。如果没有人反对,请将其移至 prometheus-junkyard GitHub 组织。

如何删除不活跃的维护者?

维护者可以通过通知团队邮件列表来辞职。一年内没有项目活动的维护者将被视为已辞职。如果有紧急需要更换维护者,请在团队邮件列表中讨论此事。

如何删除团队成员?

团队成员可以通过通知团队邮件列表来辞职。如果您认为应该违背某位团队成员的意愿将其删除,请向团队邮件列表提出此建议。讨论将在那里私下进行。