From a2647c1a1386d0105f5175b479ce7e435db39baa Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Thu, 4 May 2023 11:15:21 +0200 Subject: [PATCH] chore: update governance.md This commit includes only cosmetic changes, there are no modifications to the definition of the governance itself. As such I don't think that we need a super-majority vote but feel free to disagree. Signed-off-by: Simon Pasquier --- governance.md | 87 +++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/governance.md b/governance.md index 8ccaa1113..71ae1e1b8 100644 --- a/governance.md +++ b/governance.md @@ -4,14 +4,13 @@ This document describes the rules and governance of the project. It is a slightl It is meant to be followed by all the developers of the Prometheus Operator project and the Prometheus Operator community. Common terminology used in this governance document are listed below: -* **Maintainers Team**: A core Prometheus Operator team that have owner access to https://github.com/prometheus-operator organization and all projects within it. Current list is available [here](MAINTAINERS.md). +* **Maintainers Team**: Contributors who have the `Owner` role on the [prometheus-operator organization](https://github.com/prometheus-operator) and all projects within it. Members are listed in the [MAINTAINERS.md](MAINTAINERS.md) file. -* **Triage Team**: Contributors who does not belong to Maintainer's team, but has `Triage` GitHub role on [Prometheus Operator](https://github.com/prometheus-operator) repository allowing to change GitHub issues and PRs statuses and labels. - They are listed [here](https://github.com/prometheus-operator/prometheus-operator/blob/main/MAINTAINERS.md#triage). +* **Triage Team**: Contributors who have the `Member` role and `Triage` GitHub permission on the [prometheus-operator organization](https://github.com/prometheus-operator) and all projects within it, allowing them to modify GitHub issues and PRs statuses and labels. Triage members are listed in the [MAINTAINERS.md](MAINTAINERS.md#triage) file. -* **The Prometheus Operator project**: The sum of all activities performed under the [prometheus-operator organization on GitHub](https://github.com/prometheus-operator), concerning one or more repositories or the community. +* **The Prometheus Operator project**: The sum of all activities performed under the [prometheus-operator organization](https://github.com/prometheus-operator), concerning one or more repositories or the community. -Both Triage and Maintainers are part of [`prometheus-operator-team@googlegroups.com`](https://groups.google.com/forum/#!forum/prometheus-operator-team) email list. +Both Triage and Maintainers are part of the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). ## Values @@ -26,45 +25,45 @@ Furthermore, the Prometheus Operator community strives for kindness, giving feed Team member status may be given to those who have made ongoing contributions to the Prometheus Operator project for at least 3 months. This is usually in the form of code improvements, pull-request reviews, issue triaging or notable work on documentation, but organizing events or user support could also be taken into account. -New members may be proposed by any existing Maintainer by email to [prometheus-operator-team](https://groups.google.com/forum/#!forum/prometheus-operator-team). It is highly desirable to reach consensus about acceptance of a new member. +New members may be proposed by any existing Maintainer by email to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). It is highly desirable to reach consensus about acceptance of a new member. However, the proposal is ultimately voted on by a formal [supermajority vote](#supermajority-vote) of Team Maintainers. If the new member proposal is accepted, the proposed team member should be contacted privately via email to confirm or deny their acceptance of team membership. -This email will also be CC'd to [prometheus-operator-team](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes. +This email will also be CC'd to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes. If they choose to accept, the following steps are taken: -* Maintainer is added to the [GitHub organization](https://github.com/prometheus-operator) as *Owner*. -* Maintainer is added to the [prometheus-operator-team](https://groups.google.com/forum/#!forum/prometheus-operator-team). -* Maintainer is added to the list of team members [here](MAINTAINERS.md) -* New maintainer is announced on the [Prometheus Operator Twitter](https://twitter.com/PromOperator) by an existing team member. +* The new maintainer is added to the [prometheus-operator organization](https://github.com/prometheus-operator) with the `Owner` role. +* The new maintainer is added to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). +* The new maintainer is added to the [MAINTAINERS.md](MAINTAINERS.md) file. +* The new maintainer is announced on the [Prometheus Operator Twitter](https://twitter.com/PromOperator) by an existing team member. -Team members may retire at any time by emailing [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). +Team members may retire at any time by emailing the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). -Team members can be removed by [supermajority vote](#supermajority-vote) on [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). For this vote, the member in question is not eligible to vote and does not count towards the quorum. +Team members can be removed by [supermajority vote](#supermajority-vote) on the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). For this vote, the member in question is not eligible to vote and does not count towards the quorum. Upon death of a member, their team membership ends automatically. ### Triage Team -Triage team has similar rules, however the contributions made to the projects does not need to be as significant as expected by potential maintainer. +Triage team has similar rules, however the contributions made to the projects does not need to be as significant as expected from a maintainer. -New members as well may be proposed by any existing Maintainer or Triage person by email to [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). It is highly desirable to reach consensus about acceptance of a new member. -However, the proposal is ultimately voted on by a formal [majority vote](#majority-vote) (in comparison to Maintainer's vote which requires supermajority). +New members may be proposed by any existing Maintainer or Triage person by email to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). It is highly desirable to reach consensus about acceptance of a new member. +However, the proposal is ultimately voted on by a formal [majority vote](#majority-vote) (in comparison to Maintainer's vote which requires a supermajority vote). If the new member proposal is accepted, the proposed team member should be contacted privately via email to confirm or deny their acceptance of team membership. -This email will also be CC'd to [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes. +This email will also be CC'd to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes. If they choose to accept, the following steps are taken: -* Triage member is added to the [Prometheus Operator project](http://github.com/prometheus-operator/prometheus-operator) with `Triage` access. -* Triage member is added to the [prometheus-operator-team](https://groups.google.com/forum/#!forum/prometheus-operator-team). -* Triage member is added to the list of Triage members [here](MAINTAINERS.md). -* New team Triage member are announced on the [Prometheus Operator Twitter](https://twitter.com/PromOperator) by an existing team member. +* The new triage team member is added to the [Prometheus Operator project](http://github.com/prometheus-operator/prometheus-operator) with `Member` role and `Triage` permission. +* The new triage team member is added to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). +* The new triage team member is added to the [MAINTAINERS.md](MAINTAINERS.md) file under the Triage section. +* The new triage team member is announced on the [Prometheus Operator Twitter](https://twitter.com/PromOperator) by an existing team member. -Triage member may retire at any time by emailing [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). +Triage member may retire at any time by emailing the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). -Triage member can be removed by [majority vote](#majority-vote) on [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). Only Maintainers team has right to vote. +Triage member can be removed by [majority vote](#majority-vote) on the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). Only the [Maintainers team members](#maintainers-team) have right to vote. Upon death of a member, their Triage team membership ends automatically. @@ -83,7 +82,7 @@ Any change requires a [supermajority](#supermajority-vote) in favor. Editorial c ### Other matters Any matter that needs a decision, including but not limited to financial matters, may be called to a vote by any Maintainer if they deem it necessary. -For financial, private, or personnel matters, discussion and voting takes place on the [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team); Otherwise discussion and votes are held in public on the GitHub issues or #prometheus-operator-dev Kubernetes slack channel. +For financial, private, or personnel matters, discussion and voting takes place on the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). Otherwise discussion and votes are held in public on the GitHub issues or #prometheus-operator-dev Kubernetes slack channel. ## Voting @@ -94,11 +93,11 @@ Depending on the subject matter, as laid out [above](#decision-making), differen For all votes, voting must be open for at least one week. The end date should be clearly stated in the call to vote. A vote may be called and closed early if enough votes have come in one way so that further votes cannot change the final decision. -In all cases, all and only [Maintainers](#maintainers-team) are eligible to vote, with the sole exception of the forced removal of a team member, in which said member is not eligible to vote. +In all cases, all and only [Maintainers team members](#maintainers-team) are eligible to vote, with the sole exception of the forced removal of a team member, in which said member is not eligible to vote. -Discussion and votes on personnel matters (including but not limited to team membership and maintainership) are held in private on the [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). All other discussion and votes are held in public on the GitHub issues or #prometheus-operator-dev CNCF slack channel. +Discussion and votes on personnel matters (including but not limited to team membership and maintainership) are held in private on the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). All other discussion and votes are held in public on the GitHub issues or #prometheus-operator-dev CNCF slack channel. -For public discussions, anyone interested is encouraged to participate. Formal power to object or vote is limited to [Maintainers Team](#maintainers-team). +For public discussions, anyone interested is encouraged to participate. Formal power to object or vote is limited to [Maintainers team members](#maintainers-team). ### Governance @@ -110,16 +109,16 @@ We also encourage any other company interested in helping maintaining Prometheus ### Consensus -The default decision making mechanism for the Prometheus Operator project is [lazy consensus](https://couchdb.apache.org/bylaws.html#lazy). This means that any decision on technical issues is considered supported by the [team](https://groups.google.com/forum/#!forum/prometheus-operator-team) as long as nobody objects. +The default decision making mechanism for the Prometheus Operator project is [lazy consensus](https://couchdb.apache.org/bylaws.html#lazy). This means that any decision on technical issues is considered supported by the [Maintainers team members](#maintainers-team) as long as nobody objects. Silence on any consensus decision is implicit agreement and equivalent to explicit agreement. Explicit agreement may be stated at will. Consensus decisions can never override or go against the spirit of an earlier explicit vote. -If any [member of Maintainers Team](#maintainers-team) raises objections, the team members work together towards a solution that all involved can accept. +If any of the [Maintainers team members](#maintainers-team) raises objections, the team members work together towards a solution that all involved can accept. This solution is again subject to lazy consensus. -In case no consensus can be found, but a decision one way or the other must be made, anyone from [Maintainers Team](#maintainers-team) may call a formal [majority vote](#majority-vote). +In case no consensus can be found, but a decision one way or the other must be made, [Maintainers team members](#maintainers-team) may call a formal [majority vote](#majority-vote). ### Majority vote @@ -145,48 +144,48 @@ A vote on a single proposal is considered successful if at least two thirds of t If there are multiple alternatives, members may vote for one or more alternatives, or vote “no” to object to all alternatives. A vote on multiple alternatives is considered decided in favor of one alternative if it has received the most votes in favor, and a vote from at least two thirds of those eligible to vote. Should no alternative reach this quorum, another vote on a reduced number of options may be called separately. -## FAQ +## Frequently Asked Questions This section is informational. In case of disagreement, the rules above overrule any FAQ. -### For majority vote, what if there is even number of maintainers and an equal amount of votes in favor than against? +### For a majority vote, what if there is an even number of maintainers and an equal amount of votes in favor than against? -It has to be majority so the vote will be declined. +It has to be the majority so the vote will be declined. ### So what's the TLDR difference between majority vs supermajority? It's about number of up votes to agree on the decision. -* majority: Majority of voters has to agree. -* supermajority: 2/3 voters has to agree. +* majority: the majority of voters have to agree. +* supermajority: 2/3 of the voters have to agree. ### How do I propose a decision? -See [Contributor doc](https://github.com/prometheus-operator/prometheus-operator/blob/main/CONTRIBUTING.md) +See the [Contributing guide](https://github.com/prometheus-operator/prometheus-operator/blob/main/CONTRIBUTING.md). ### How do I become a team member? -To become an official member of Maintainers Team, you should make ongoing contributions to one or more project(s) for at least three months. +To become an official member of the [Maintainers Team](#maintainers-team), you should make ongoing contributions to one or more project(s) for at least three months. At that point, a team member (typically a maintainer of the project) may propose you for membership. -The discussion about this will be held in private, and you will be informed privately when a decision has been made. A possible, but not required, graduation path is to become a maintainer first. +The discussion about this will be held in private, and you will be informed privately when a decision has been made. A possible, but not required, graduation path is to become a triage member first. Should the decision be in favor, your new membership will also be announced on the [Prometheus Operator Twitter](https://twitter.com/PromOperator) ### How do I add a project? -As a team member, propose the new project on the [Prometheus Operator GitHub Issue](https://github.com/prometheus-operator/prometheus-operator/issues). However, currently to maintain project in our organization you have to become Prometheus Operator Maintainers. +As a team member, propose the new project on the [Prometheus Operator GitHub Issue](https://github.com/prometheus-operator/prometheus-operator/issues). However, currently to maintain a project in our organization, you have to become a [Maintainers Team](#maintainers-team) member. ### How do I remove a Maintainer or Triage member? -All members may resign by notifying the [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). If you think a team member should be removed against their will, propose this to the [prometheus-operator-team@googlegroups.com](https://groups.google.com/forum/#!forum/prometheus-operator-team). +All members may resign by notifying the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). If you think a team member should be removed against their will, propose this to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). Discussions will be held there in private. ### Can majority/supermajority vote be done on GitHub PR by just approving PR? -No,`[VOTE]` email has to be created. +No, an email with the `[VOTE]` prefix has to be sent to the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team). -### What if during majority/supermajority vote there is no answer after week? +### What if during majority/supermajority vote there is no answer after 1 week? -For majority voting this means that member that did not send a response agree with the proposal. +For majority voting, all members that didn't reply explicitly are assumed to agree with the proposal. -For supermajority voting team has to wait for all answers. +For supermajority voting, the team has to wait for the replies from all members.