治理
本文档描述了项目的规则和治理方式。项目的所有开发者和 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 以作记录。
如果他们选择接受,则将遵循入职程序。
团队成员可以随时通过向 团队 发送电子邮件来退休。
团队成员可以通过在 团队邮件列表 上进行绝对多数票表决而被移除。对于此投票,相关成员无权投票,也不计入法定人数。任何移除投票一次只能针对一个人。
成员去世后,自动离开团队。
如果成员离开,将应用离职程序。
当前团队成员为:
- Alex Greenbank (独立)
- Arianna Vespri (独立)
- Arthur Sens (Grafana Labs )
- Arve Knudsen (Grafana Labs )
- Augustin Husson (Amadeus )
- Ayoub Mrini (Red Hat )
- Bartłomiej Płotka (Google )
- Ben Kochie (Reddit )
- Ben Reedy (Indue Ltd )
- Björn Rabenstein (Grafana Labs )
- Bryan Boreham (Grafana Labs )
- Calle Pettersson (Instabee Group )
- Callum Styan (独立)
- Carrie Edwards (Grafana Labs )
- Chris Marchbanks (Grafana Labs )
- Chris Sinjakli (PlanetScale )
- Conrad Hoffmann (独立)
- Cristian Greco (Grafana Labs )
- Daniel Magliola (IndeedFlex )
- Daniel Swarbrick (独立)
- David Ashpole (Google )
- David Leadbeater (G-Research )
- Doug Hoard (Confluent )
- Fabian Stäber (Grafana Labs )
- Fiona Liao (Grafana Labs )
- Frederic Branczyk (Polar Signals )
- Ganesh Vernekar (Reddit )
- George Robinson (Grafana Labs )
- Goutham Veeramachaneni (Grafana Labs )
- Gregor Zeitlinger (Grafana Labs )
- György Krajcsovits (Grafana Labs )
- Jan Fajerski (Red Hat )
- Jan-Otto Kröpke (独立)
- Jesús Vázquez (Grafana Labs )
- Joe Adams (WebstaurantStore )
- Johannes Ziemke (5π Consulting )
- Josh Abreu (Grafana Labs )
- Julius Volz (PromLabs )
- Julien Pivotto (Grafana Labs )
- Kemal Akkoyun (独立)
- Matthias Loibl (Polar Signals )
- Matthias Rampke (Chronosphere )
- Max Inden (Protocol Labs )
- Owen Williams (Grafana Labs )
- Pedro Tanaka (Shopify )
- Richard Hartmann (Grafana Labs )
- Saswata Mukherjee (Red Hat )
- Sebastian Schubert (Grafana Labs )
- Simon Pasquier (Red Hat )
- Suraj Nath (Grafana Labs )
- Thomas Peitz (独立)
- Tobias Schmidt (独立)
- Tom Wilkie (Grafana Labs )
前成员
- 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 组织 。
- 可选地被添加到社区、junkyard 以及相关的组织和代码仓库中。
- 被添加到 团队邮件列表 。
- 被添加到 prometheus.io GSuite 帐户,用户名由新成员选择。(最重要的是,这将提供一个
<所选用户名>@prometheus.io的电子邮件地址,并提供对团队 GDrive 和日历的访问权限。新成员应将后者添加到自己的日历列表中。) - 向 CNCF 宣布。
- 被授予对共享密码存储的访问权限。
离职
前成员将:
- 从团队成员列表中移除。理想情况下,通过自己发送一个 PR,至少批准该 PR。在强制移除的情况下,不需要批准。
- 从 GitHub 组织 及相关组织和代码仓库中移除。可选地,如果团队同意,他们可以保留一个或多个代码仓库的维护者身份。
- 从 团队邮件列表 中移除,并降级为其他邮件列表的普通成员,例如 开发者 、用户 和 公告 。
- 向 CNCF 宣布移除。我们将明确要求 CNCF 再次确认移除。
- 从共享密码存储中移除。所有密码、API 令牌等将在适当的时候轮换(即,在非自愿离职的情况下立即轮换,否则可以与其他离职或常规轮换一起适当地批量处理)。
- 在适用的情况下,从群组帐户中移除。具有某种群组帐户的服务包括但不限于 Digital Ocean、DockerHub、GSuite、Netlify、Twitter(通过 Tweetdeck)、Youtube。
- 不再被允许称自己为活跃的团队成员,也不得暗示如此。
- 如果他们愿意,可以被添加到前成员列表中。
如果需要,我们保留公开宣布移除的权利。
常见问题
FAQ 部分是信息性的,可以通过惰性共识进行更改,除非受到质疑。如果无法达成共识,问题可以通过多数票解决。
如何提出一个决策?
发送一封电子邮件到 开发者邮件列表 ,并附上你的动议。如果在合理的时间内没有反对意见,则认为决定已做出。如果有反对意见且无法达成共识,团队成员可以发起投票。
如何成为团队成员?
要成为正式的团队成员,你应该对一个或多个项目持续贡献至少三个月。届时,团队成员(通常是该项目的维护者)可能会提名你成为成员。相关讨论将私下进行,决定做出后你将私下获知。一个可能的,但不是必须的晋升路径是先成为维护者。
如果决定通过,你的新成员身份也将在 开发者邮件列表 上公布。
如何添加一个项目?
作为团队成员,在 开发者邮件列表 上提议新项目。如果没有人反对,就在 GitHub 组织中创建该项目。至少添加一个解释项目目标的 README.md 文件,以及一个包含项目维护者的 MAINTAINERS.md 文件(此时,这可能意味着就是你)。
如何归档或移除一个项目?
发送电子邮件至开发者邮件列表 ,提议将某个项目废弃。如果没有人反对,则将其移至 prometheus-junkyard GitHub 组织。
如何移除不活跃的维护者?
维护者可以通过通知团队邮件列表 来辞去职务。一年内没有任何项目活动的维护者将被视为已辞职。如果迫切需要更换维护者,请在团队邮件列表 上进行讨论。
如何移除团队成员?
团队成员可以通过通知团队邮件列表 来辞去职务。如果您认为应在违背团队成员意愿的情况下将其移除,请向团队邮件列表 提出此建议。讨论将在那里私下进行。