治理

本文档描述了项目的规则和治理。所有项目开发者和 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。
  • 由现有团队成员在开发者邮件列表上宣布。理想情况下,新成员会在该邮件线程中回复,确认接受团队成员资格。
  • Owner 身份添加到GitHub 组织
  • 可选择地添加到社区、junkyard 和相关组织及仓库。
  • 添加到团队邮件列表
  • 添加到 prometheus.io GSuite 账户,用户名为新成员选择的名称。(最重要的是,这将获得一个 <chosen-username>@prometheus.io 电子邮件地址,并提供对团队 GDrive 和日历的访问权限。新成员应将团队日历添加到自己的日历列表。)
  • 向 CNCF 宣布。
  • 获得共享密码存储的访问权限。

退出流程

退出成员:

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

如有必要,我们保留公开宣布移除的权利。

常见问题

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

如何提出决策?

将您的动议发送至开发者邮件列表。如果在合理的时间内没有异议,则视为决策已做出。如果存在异议且无法达成共识,团队成员可以发起投票。

如何成为团队成员?

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

如果决定有利,您的新成员资格也将在开发者邮件列表上宣布。

如何添加项目?

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

如何归档或移除项目?

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

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

维护者可以通过通知团队邮件列表辞职。一年内没有项目活动的维护者将被视为已辞职。如果迫切需要替换维护者,请在团队邮件列表上讨论。

如何移除团队成员?

团队成员可以通过通知团队邮件列表辞职。如果您认为某位团队成员应被强制移除,请向团队邮件列表提出建议。讨论将在那里私下进行。