This document describes the rules and governance of the project. It is a slightly modified version of the [Prometheus Governance](https://prometheus.io/governance/#governance-changes).
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**: 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 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](https://github.com/prometheus-operator), concerning one or more repositories or the community.
Furthermore, the Prometheus Operator community strives for kindness, giving feedback effectively, and building a welcoming environment. The Prometheus Operator developers generally decide by consensus and only resort to conflict resolution by a majority vote if consensus cannot be reached.
## Decision making
### Maintainers Team
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 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 the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes.
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 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.
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 the [prometheus-operator mailing list](https://groups.google.com/forum/#!forum/prometheus-operator-team) for record-keeping purposes.
* 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 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 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.
### Technical decisions
Smaller technical decisions are made informally and [lazy consensus](#consensus) is assumed. Technical decisions that span multiple parts of the Prometheus Operator project
should be discussed and made on the [GitHub issues](https://github.com/prometheus-operator/prometheus-operator/issues) and in most cases followed by proposal as described [here](https://github.com/prometheus-operator/prometheus-operator/blob/main/CONTRIBUTING.md).
Decisions are usually made by [lazy consensus](#consensus). If no consensus can be reached, the matter may be resolved by [majority vote](#majority-vote).
### Governance changes
Material changes to this document are discussed publicly on the [Prometheus Operator GitHub](http://github.com/prometheus-operator/prometheus-operator).
Any change requires a [supermajority](#supermajority-vote) in favor. Editorial changes may be made by [lazy consensus](#consensus) unless challenged.
### 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 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.
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 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 members](#maintainers-team).
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.
If any of the [Maintainers team members](#maintainers-team) raises objections, the team members work together towards a solution that all involved can accept.
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 votes must be called explicitly in a separate thread on the appropriate mailing list. The subject must be prefixed with `[VOTE]`.
In the body, the call to vote must state the proposal being voted on. It should reference any discussion leading up to this point.
Votes may take the form of a single proposal, with the option to vote yes or no, or the form of multiple alternatives.
A vote on a single proposal is considered successful if more vote in favor than against.
If there are multiple alternatives, members may vote for one or more alternatives, or vote “no” to object to all alternatives.
It is not possible to cast an “abstain” vote. 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 more than half of those voting. Should no alternative reach this quorum, another vote on a reduced number of options may be called separately.
### Supermajority vote
Supermajority votes must be called explicitly in a separate thread on the appropriate mailing list.
The subject must be prefixed with `[VOTE]`. In the body, the call to vote must state the proposal being voted on. It should reference any discussion leading up to this point.
Votes may take the form of a single proposal, with the option to vote yes or no, or the form of multiple alternatives.
A vote on a single proposal is considered successful if at least two thirds of those eligible to vote vote in favor.
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.
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.
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.
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.
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).
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).