STATUS: Ratified 2020/06/25
Fundamental Tenets:
- Follow the Apache Code of Conduct
- Behave as you would in a professional context
- Assume positive intent
- Assume others are correct; always respond to your best possible interpretation of their statements, and seek clarification where this is difficult
- These guidelines are predicated on actors behaving reasonably
- Disagreements on any matter (including vetoes) can be escalated to the PMC, but this is strongly discouraged and suggests a breakdown of these tenets
pmc responsibilities and forums of discussion:
Guiding philosophies: Default to dev list and “decide as a community”. Favor pmc minimalism.
On private@:
- Enforcing trademark
- Votes on new committers (super majority)
- Votes on new pmc members (super majority)
- Security issues
On dev@:
- Discussion / binding votes on releases (Consensus: min 3 PMC +1, no -1)
- Discussion / binding votes on project structure and governance changes (adopting subprojects, how we vote and govern, etc). (super majority)
Discussion:
- All proposals starts with a [DISCUSS] thread to reach a community consensus
- [DISCUSS] threads resolve areas of dispute via initial argumentation, that should be as concise as possible to leave room for all topics. Non-binding polls should be conducted on areas without clear consensus, to help provide some from the silent majority.
- [DISCUSS] threads are closed once consensus is reached via declared lazy consensus with a 1 business day notice period.
- In the event of a stall, informal votes to gauge community sentiment may be conducted.
How we vote as a pmc:
Guiding philosophy: “Mindfully balance the need for progress with the need for consensus”
PMC roll call will be taken every 6 months. This is an email to private@ w/the simple question to pmc members of “are you active on the project and plan to participate in voting over the next 6 months?”. This is strictly an exercise to get quorum count and in no way restricts ability to participate during this time window. A majority of the electorate becomes the low-watermark for votes in favour necessary to pass a motion, with new PMC members added to the calculation. That is, both types of majority votes (simple and super-majority) require this 50% of last roll call participation.
Any pmc vote on any of the issues above w/the exception of releases will be conducted as follows:
- A [DISCUSS] thread is conducted
- A [VOTE] thread is opened for a window, typically of one week. The window and method must be specified.
Simple majority voting: For all active participants, if +1 outweigh -1, vote passes. Requires 50% participation of roll call.
Super majority voting: 66% of votes must be in favor to pass. Requires 50% participation of roll call.
How we vote as a community:
- Committer votes are considered “binding”
- Non-committer votes are important, encouraged, and considered advisory
For Code Contributions:
- Correcting typos, docs, website, and comments etc operate a “Commit Then Review” policy
- Code modifications must have been reviewed by at least one other contributor
- Code modifications require two +1 committer votes (can be author + reviewer)
- Code must not be committed while under active reasonable discussion
- Code must not be committed if a committer has requested reasonable time to conduct a review
- Code must not be committed while subject to an explicit -1 vote by a committer for clearly expressed and reasonable technical grounds
- If code has been committed but not released, a -1 vote from a committer (that is not resolved by follow-up commits) can be reverted
- If the proposer responds to the concerns of a -1 voter, and the -1 voter does not engage reasonably with the response, the -1 is rescinded
- Committers should explicitly veto work exceptionally rarely
For CEP:
Guiding philosophy: encourage up front collaboration on potentially contentious proposals
- A small group of contributors works on a draft CEP before bringing it to the community.
- A [DISCUSS] thread is conducted on the proposal
- Once the proposal is finalized and any major committer dissent reconciled, call a [VOTE] on the ML to have the proposal adopted. The criteria for acceptance is consensus (3 binding +1 votes and no binding vetoes). The vote should remain open for 72 hours.
- Minor modifications to a CEP can be made by lazy consensus; major modifications should be made via this process, with the prior version being archived and linked from the new proposal.
For Releases:
- Consensus: min 3 PMC +1, no PMC -1. These votes are neither Simple majority nor Super majority. Vetos are to be accompanied with (technical) rationale.
- More information on the release process and voting is in Release Managers Onboarding.
Subproject Governance
- The Apache Cassandra PMC is responsible for governing the broad Cassandra Ecosystem.
- The PMC will vote on inclusion of new interested subprojects using the existing procedural change vote process documented in the confluence wiki (Super majority voting: 66% of votes must be in favor to pass. Requires 50% participation of roll call).
- New committers for these subprojects will be nominated and raised, both at inclusion as a subproject and over time. Nominations can be brought to private@cassandra.apache.org. Typically we're looking for a mix of commitment and contribution to the community and project, be it through code, documentation, presentations, or other significant engagement with the project.
- While the commit-bit is ecosystem wide, code modification rights and voting rights (technical contribution, binding -1, CEP's) are granted per subproject
- Individuals are trusted to exercise prudence and only commit or claim binding votes on approved subprojects. Repeated violations of this social contract will result in losing committer status.
- Members of the PMC have commit and voting rights on all subprojects.
- For each subproject, the PMC will determine a trio of PMC members that will be responsible for all PMC specific functions (release votes, driving CVE response, marketing, branding, policing marks, etc) on the subproject.
6 Comments
Michael Semb Wever
Last roll call was https://lists.apache.org/thread.html/r1c865914c9ba7bc2f755cc5eae3fcd146ef5462dc49423b3b4f228f4%40%3Cdev.cassandra.apache.org%3E
(there was a miscount though, it is 19, not 18)
Michael Semb Wever
With Paulo as a new PMC member the roll call becomes 20 and the lower watermark (simple majority) becomes 11.
ref: https://lists.apache.org/thread.html/r64469489f24090c226d655321cb4765ac9ed55e283c8fbfdde8ddbef%40%3Cdev.cassandra.apache.org%3E
Brandon Williams
With Dinesh as a new PMC member, the roll call becomes 21
ref: https://lists.apache.org/thread.html/r94208aa15921ba095f6f2a776533c06d1e557b0c7fd25f9547070764%40%3Cdev.cassandra.apache.org%3E
Benjamin Lerer
The new roll call is 22
ref: https://lists.apache.org/thread.html/re8d20983d9737589e1b97ae34921abd5deb6692254bfbb9d4e95da6b%40%3Cprivate.cassandra.apache.org%3E
Dinesh Joshi
The new roll call is 19.
ref: https://lists.apache.org/thread/rr4l58mtko7znfq5zcr53g1lon8fhk94
Dinesh Joshi
The new roll call is 21.
ref: https://lists.apache.org/thread/fbyrhbmmwldhrzbcqohd03vwdc05j8hf