<title>CouchDB Bylaws</title>

<meta charset="utf-8">

<link rel="stylesheet" href="style/doc.css">

<script src="script/doc.js"></script>

<h1>CouchDB Bylaws</h1>

<p><em>This document was officially adopted by the CouchDB PMC as of 31 July 2014.</em></p>
<p>A full changelog is available <a href="https://github.com/apache/couchdb-www/commits/asf-site/bylaws.html">on GitHub</a>.</p>

<h2>Table of Contents</h2>

<div class="toc"></div>

<h2 id="intro">1. Introduction</h2>

<p>This document defines the bylaws under which the Apache CouchDB project operates. It defines the <a href="#roles">roles and responsibilities</a> within the project, who may vote, how <a href="#voting">voting</a> works, how conflicts are resolved, and voting rules for specific <a href="#types">decision types</a>.

<p>This document is written for anyone who wishes to participate in the project. <strong>If this is your first time through this document, read this introduction, then read all the bolded text for a summary of the bylaws.</strong> Then, as you need more detail, read past the bolded text for an expanded explanation.

<p>CouchDB is a project of the <em>Apache Software Foundation</em> (ASF). Apache CouchDB, CouchDB, and the CouchDB logo are trademarks of the ASF. The project resources are licensed to the public under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>. Releases are made in the form of official signed source code archives. The <a href="https://www.apache.org/foundation/faq.html">ASF FAQ</a> explains the operation and background of the Foundation.

<p>CouchDB operates under a set of common principles known collectively as <a href="https://www.apache.org/foundation/how-it-works.html">the Apache Way</a>:

  <ul>
    <li>Collaborative software development
    <li>Commercial-friendly standard license
    <li>Consistently high quality software
    <li>Respectful, honest, technical-based interaction
    <li>Faithful implementation of standards
    <li>Security as a mandatory feature
  </ul>

<p>We value the community more than the code. A strong and healthy community should be a fun and rewarding place for everyone involved. Code, and everything else that goes with that code, will be produced by a healthy community over time.

<p>The direction of the project and the decisions we make are up to you. If you are participating on <a href="https://couchdb.apache.org/#mailing-lists">the mailing lists</a> you have the right to make decisions. All decisions about the project are taken on the mailing lists. There are no lead developers, nor is there any one person in charge.

<p>Anyone can subscribe to the public mailing lists, and in fact, you are encouraged to do so. The development mailing list is not just for developers, for instance. It is for anyone who is interested in the development of the project. Everybody's voice is welcome.

<p>Finally, use of these bylaws to enforce the letter of any rule and not its spirit (also known as "<a href="https://en.wikipedia.org/wiki/Rules_lawyer">rule lawyering</a>") is not acceptable behaviour.

<h2 id="roles">2. Roles and Responsibilities</h2>

<p><strong>The ASF <a href="https://www.apache.org/foundation/how-it-works.html#roles">defines a set of roles</a> with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections.</strong>

<p>Your role is bestowed on you by your peers in recognition of your past contributions to the project and your position of trust within the community. It is not tied to your job, your current employer, or your current activity level. We are interested in you as an individual and we understand that your interactions with the project may change over time.

<p>Roles are never rescinded because of inactivity, unless that inactivity is causing a problem for the project. Fortunately, our decision making process means that inactivity is very rarely a problem. Roles will be rescinded if the <a href="#pmc">Project Management Committee</a> (or <a href="#pmc">PMC</a>, see 2.4. below) believes the individual is no longer able to responsibly discharge the duty of the role.

<p>We understand that you have many roles in life. We use a hat metaphor to talk about these roles. For instance, you might have your work hat as well as several ASF hats. We expect you to know when to wear the appropriate hat, and to comport yourself in a manner befitting the interests of the Foundation when interacting with the project. Failure to do this is a serious dereliction of duty.

<p>Sometimes it is a good idea to tell people which hat you are wearing. For instance, the PMC Chair might start an informal email by stating they are not wearing the PMC Chair's hat, just to be clear about how the statements ought to be interpreted.

<p>We expect you to act in good faith. This is very important for a community that depends so heavily on trust.

<h3 id="users">2.1. Users</h3>

<p><strong>The most important participants in the project are people who use our software.</strong>

<p>Users can participate by talking about the project, providing feedback, and helping others. This can be done at the ASF or elsewhere, and includes being active on <a href="https://lists.apache.org/list.html?user@couchdb.apache.org">the user mailing list</a>, third-party support forums, blogs, and social media. Users who participate in this way automatically become contributors.

  <h3 id="contributors">2.2. Contributors</h3>

<p><strong>A contributor is someone who makes contributions to the community, project, documentation, or code.</strong>

<p>There is no special requirement to become a contributor. If you have a great idea for the project, you can get to work immediately. There is no need to ask permission. Most things can be accomplished by contributors with no special privileges or status on the project. Assistance can be provided if you need access to project resources to get your work done.

<p>A contributor who makes sustained contributions to the project may be invited to become a committer.

<h3 id="committers">2.3. Committers</h3>

<p><strong>A committer is someone who is committed to the project. In return for their commitment, they are given a binding vote in certain project decisions. Committers are hence responsible for the ongoing health of the project and the community.</strong>

<p>We recognise commitment in many different areas. These include, but are not limited to:

  <ul>
    <li>Community (community management, ticket triage, helping new users, events etc.)
    <li>Project (blogging, marketing, design, UX, branding, etc)
    <li>Documentation (documentation, localisation/internationalisation, etc.)
    <li>Code (new features, bug fixing, quality assurance, release management etc.)
  </ul>

<p>More details are available in <a href="https://cwiki.apache.org/confluence/display/COUCHDB/Contributor+Guide">the contributor guide</a>. If any of these things sound interesting to you, we welcome your help.

<p>The role of committer is mandated at the Foundation level. Unfortunately, the usual definition of that word—being someone who commits code—can mean that non-coders are never given binding votes on a project. We think that's a problem. Contributions come in many shapes and sizes. Indeed, many of those non-code contributions are what the project needs the most.

<p>To make this clear, we have chosen to define a committer as someone who is <em>committed</em>. We mean this in the sense of being loyal to the project and its interests. It is a position of trust, not an expectation of activity level. Anyone who is supportive of the community and the project will be considered as a candidate for being a committer.

<p>As a matter of convenience, committers are also given write access to all of the public project infrastructure, including source control repositories, website, issue tracker, wiki, and blog. Access to social media accounts, and other third-party services, will be granted upon request.

<p>All committers are required to have a signed <em>Individual Contributor License Agreement</em> (ICLA) on file. There is an <a href="http://www.apache.org/dev/committers.html">ASF FAQ</a> which provides more details about the requirements at the Foundation level.

<p>Committers are expected to work cooperatively and to have good social skills. This is more important than any other sort of skill. Our committers make up the bulk of our active community, and as such, we rely on them to help us build and maintain that community.

<p>A committer who makes a sustained contribution to the project may be invited to become a <em>Project Management Committee</em> (PMC) member.

<h3 id="pmc">2.4. Project Management Committee</h3>

<p><strong>The <em>Project Management Committee</em> (PMC) is responsible for the management of the project.</strong>

<p>At the most basic level, the role of the PMC is oversight. The PMC must ensure that all relevant bylaws , policies, and procedures  are adhered to. These exist at the Foundation-level and the project-level. See the <a href="https://cwiki.apache.org/confluence/display/COUCHDB/Project+affairs">project affairs</a> page for more information.

<p>Beyond this requirement, the primary goal of the PMC is to invest in the long term wellbeing of the community. For this reason, one of the most basic tasks of the PMC is the recruitment and management of project contributors. We believe that the size, diversity, and health of the community is essential for the quality, stability, and robustness of project and its social structures.

<p>Activities of the PMC include, but are not limited to:

  <ul>
    <li>Project governance
    <li>Community management
    <li>Release management
    <li>Complying with legal guidelines
    <li>Managing confidentially-reported security issues
    <li>Branding and events coordination
    <li>Press and analyst relations
  </ul>

<p>PMC members are held to a much higher standard than regular community members. This includes strict hat wearing, equitable decision making, and exemplary conduct. People look to PMC members for cues about how to behave. It is important that all PMC members understand the responsibility that they bear, and that they are individually committed to improving themselves and the project.

<p>While security issues and release management are the responsibility of the PMC, the PMC typically delegates this to committers.

<h3 id="chair">2.5. Chair</h3>

<p><strong>The project Chair is a PMC member responsible for Foundation level administrative tasks.</strong> It is not a technical leadership position, meaning the Chair has no special say in ordinary project decisions. But we do think of it as a cultural leadership position. Accordingly, position on cultural issues is something to consider when electing a Chair.

<p>The Chair is elected by the PMC but appointed by the ASF Board via a Board resolution. The Chair is an officer of the Apache Software Foundation (with an official title of <em>Vice President, Apache CouchDB</em>) and has primary responsibility to the Board for the management of the project. The Chair is the eyes and ears of the Board, and reports quarterly on developments within the project.

<p>The chair has primary responsibility to the Board, and has the power to establish rules and procedures for the day to day management of the communities for which the PMC is responsible, including the composition of the PMC itself.

<p>Remember that, as in any meeting, the Chair is a facilitator and their role within the PMC is to ensure that everyone has a chance to be heard and to enable meetings to flow smoothly.

<p>If the current Chair resigns, or the term of the Chair expires, the PMC will hold a Chair election.

<p>The Chair has a 12 month term. The intention of this term is to allow for a rotation of the role amongst the PMC members. This does not prohibit the PMC from selecting the same Chair to serve consecutive terms.

<h3 id="board">2.6. Board of Directors</h3>

<p><strong>The Chair is responsible for the project to the Board of Directors (the Board) of the ASF.</strong> The Board is the nine-person legal governing body of the ASF, elected by the <a href="http://apache.org/foundation/members.html">members</a> of the Foundation. The Board provides the oversight of the Foundation's activities and operation, and has the responsibility of applying and enforcing the <a href="http://apache.org/foundation/bylaws.html">ASF's bylaws</a>.

<h2 id="decisions">3. Decision Making</h2>

<p>This section explains our approach to decision making and the formal structures we have in place to make this as easy as possible.

<p><strong>In descending order of preference, we prefer that decisions are made via:</strong>

  <ul>
    <li><strong><a href="#lazy">Lazy consensus</a> or <a href="#rtc">RTC</a></strong>
    <li><strong><a href="#discussions">Discussion-led consensus gathering</a></strong>
    <li><strong><a href="#voting">Formal voting</a></strong>
  </ul>

<p>Our goal is to build a community of trust, reduce mailing list traffic, and deal with disagreements swiftly when they occur.

<p>All decision making must happen on <a href="https://couchdb.apache.org/#mailing-lists">the mailing lists</a>. Any discussion that takes place away from the lists (for example on IRC or in person) must be brought to the lists before anything can be decided. We have a saying: if it's not on the lists, it didn't happen. We take this approach so that the greatest amount of people have a chance to participate.

<p>Decisions should be made on the mailing list associated with the decision. For example, marketing decisions happen on <a href="https://lists.apache.org/list.html?marketing@couchdb.apache.org">the marketing list</a>. By default, anything without a specific list should be done in public on the main development list. Anything that needs to be private will be done on the private list.

<p>Our decision making processes are designed to reduce blockages. It is understood that people come and go as time permits. It is not practical to hear from everybody on every decision. Sometimes, this means a decision will be taken while you are away from the project. It is reasonable to bring such decisions up for discussion again, but this should be kept to a minimum.

<h3 id="lazy">3.1. Lazy Consensus</h3>

<p><strong>When you are convinced that you know what the community would like to see happen, you can assume that you already have permission and get on with the work. We call this <a href="http://www.apache.org/foundation/glossary.html#LazyConsensus">lazy consensus</a>.</strong> You don't have to insist that people discuss or approve your plan, and you certainly don't need to call a vote. Just assume your plan is okay unless someone says otherwise. This applies to anything in the list of <a href="#types">decision types</a> in section 3.6. where lazy consensus is allowed.

  <blockquote>
    "It's easier to ask forgiveness than it is to get permission." — Grace Hopper
  </blockquote>

<p>Most actions are reversible. As long as you do your work in the open, the community has plenty of opportunities to object. If someone does object, you must be prepared to roll back your work.

<p>Lazy consensus has two effects:

  <ol>
    <li>People are less likely to object for the sake of it
    <li>It cuts down on the amount of unnecessary discussion
  </ol>

<p>For this to work properly, active committers are expected to be paying attention to the project. Objecting a long time after a change has been made may require large amounts of additional work to be thrown away or redone.

<p>Sometimes, you might not be sure what the community would want. If this is the case, you can post a note to the appropriate <a href="https://couchdb.apache.org/#mailing-lists">mailing list</a> with an outline of what you intend to do. If nobody objects after 72 hours, you can safely assume consensus and proceed with your plan.

<p>An important side effect of this policy is that <em>silence is assent</em>. There is no need for discussion, and no need for agreement to be voiced. If you make a proposal to the list and nobody responds, that should be interpreted as implicit support for your idea, and not a lack of interest. This can be hard to get used to, but is an important part of how we do things.

<h3 id="discussion">3.2. Discussion</h3>

<p><strong>If lazy consensus fails (i.e. someone objects) you can start a discussion or you can abandon the proposal.</strong>

<p>Please try to be respectful of people's time and attention. It is a non-renewable resource and the only thing we always need more of.

<p>Proposals should be explained clearly and come with adequate justification. Disagreements should be constructive and ideally come with alternative proposals. The goal is to reach a positive outcome for the project, not convince others of your opinion.

<p>If a proposal is particularly controversial, try making it reversible. Reframe the proposal as an experiment (either at the project level or the feature level) and identify a timeline for evaluation along with unambiguous success and failure criteria. These sorts of proposal are usually much easier to agree on.

<p>If a clear consensus emerges, you can proceed without a vote. Otherwise, you should abandon the proposal or move to a vote.

<p>Voting is a failure mode of discussion. But that doesn't mean you should avoid it. It is a very powerful tool that should be used to terminate a seemingly interminable discussion. Knowing when to end a discussion and call a vote is one of the most useful skills a contributor can master.

<h3 id="voting">3.3. Voting</h3>

<p><strong><a href="https://www.apache.org/foundation/voting.html">Votes</a> are used to indicate approval or disapproval of something.</strong>

<p>We do this by replying with a signed number, usually +1 or -1. Occasionally people choose to vote with larger amounts (eg. +1000) to indicate strong feelings, or in fractional amounts (eg. -0.5) to convey support or disagreement without the full weight of a +1 or -1 vote. For the purpose of tallying, all values will be counted as +1, -1, or nothing.

<p>Here are some example votes, with what they mean, and how they will be counted in the final vote tally:</p>

  <table>
    <tr>
      <th>Vote
      <th>Meaning
      <th>Counted As
    </tr>
    <tr>
      <td>+1000
      <td>"Wow, this is great. Let's do it!"
      <td>+1
    </tr>
    <tr>
      <td>+1
      <td>"I like this idea."
      <td>+1
    </tr>
    <tr>
      <td>+0.5
      <td>"Seems okay, but I'm not entirely convinced."
      <td>—
    </tr>
    <tr>
      <td>+0
      <td>"Not convinced, but doesn't seem harmful."
      <td>—
    </tr>
    <tr>
      <td>-0
      <td>"Not convinced, and seems harmful."
      <td>—
    </tr>
    <tr>
      <td>-0.5
      <td>"Not happy, but won't block this."
      <td>—
    </tr>
    <tr>
      <td>-1
      <td>"Not happy, and I want to prevent this from happening."
      <td>-1
    </tr>
    <tr>
      <td>-1000
      <td>"Extremely unhappy with this proposal."
      <td>-1
    </tr>
  </table>

<p>There are three types of voting: informal, formal, and vetos. An informal vote is a quick way to get people's feelings on something. A formal vote, on the other hand, requires an approval model and a <a href="#decisions">decision type</a>. More detail on <a href="#approval">approval models</a>, <a href="#rtc">RTC and technical vetos</a>, <a href="#rfc">RFCs</a>, <a href="#api">API changes and deprecations</a> and <a href="#types">decision types</a> is available in the following sections.

<p>All formal voting must be done in an email thread with the appropriate <a href="#tags">subject tag</a>. Formal votes may contain multiple items for approval and these should be clearly separated. Formal voting is then carried out by replying to the vote mail. Formal votes are open for a period of at least 72 hours to allow all active voters time to consider the vote. Votes can be held open longer than this at the discretion of the person who initiated the vote.

<p>Votes on <a href="#types">PMC decisions</a> are binding if they are cast by a PMC member. For all other purposes, votes are binding if they are cast by a committer. However, it is important to remember that all participants on a list get a vote. And you are encouraged to vote, even if your vote is not binding. This is a good way to get involved in the project and helps to inform the decision-making process.

<p>You are encouraged to use an informal voting model to take a quick poll or to wrap up a discussion, whether you are a committer yet or not. These votes are informal and can be initiated by anyone. Binding votes are only needed for project-level decision-making.

<h3 id="approval">3.4. Approval Models</h3>

<p><strong>We use three different approval models for formal voting</strong>:

  <ul>
    <li>RTC (see section 3.5)
      <ul>
	<li>Requires one binding +1 vote and no vetos
      </ul>
    <li>Lazy majority
      <ul>
	<li>Requires three binding +1 votes and more binding +1 votes than binding -1 votes
      </ul>
    <li>Lazy 2/3 majority
      <ul>
	<li>Requires three binding +1 votes and twice as many binding +1 votes as binding -1 votes
      </ul>
  </ul>

<p>RTC is only ever used in the context of a code review or a pull request, and does not require a separate vote thread. Each of the other approval models requires a vote thread.

<p>A -1 vote is never called a veto except when using the RTC approval model. This is because a single -1 vote never has the power to block a vote outside of RTC.

<p>Which approval model to use is dictated by the table in section 3.6. This is project policy, and can be changed by amending this document.

<p>For electing a new Chair, the PMC may opt to use <em>Single Transferable Vote</em> (STV) which comes with its own rules. <a href="http://steve.apache.org/">Apache STeVe</a> was specifically designed to enable this process.

<h3 id="rtc">3.5. Review-Then-Commit and Technical Vetos</h3>

<p>Typically, CouchDB uses the <a href="http://www.apache.org/foundation/glossary.html#ReviewThenCommit">Review-Then-Commit</a> (<em>RTC</em>) model of code collaboration. RTC allows work to proceed on separate feature or bugfix branches, and requires at least one other developer to review and approve the changes before they are committed to a release branch. A release branch is any branch that a release might be prepared from, such as <code>master</code>, <code>1.6.x</code>, and so on. Notifications of these changes are sent to <a href="https://lists.apache.org/list.html?commits@couchdb.apache.org">the commits mailing list</a>, with GitHub discussion appearing on <a href="https://lists.apache.org/list.html?notifications@couchdb.apache.org">the notifications mailing list</a>. It is expected that the rest of the community is regularly reviewing these changes.

<p><strong>Any change made to a release branch or to the <code>master</code> branch is a <em>technical decision</em> of the project. If a committer wants to object to a technical decision, they have the option of casting a -1 vote. We call this a veto.</strong> Vetos can only be made for technical reasons. A -1 vote is not considered a veto in any other context. Vetos should be used sparingly, and only after careful consideration.

<p>All vetoes must be justified and vetoes without justification are null and void. The validity of the justification can be challenged and the outcome is decided with a vote. If the justification is valid, a veto cannot be overruled and stands until withdrawn by the caster. If you disagree with a veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, the commit must be reverted in a timely manner.

<p>Here's how a veto might lead to a code revert:

  <ul>
    <li>Alice commits a change
    <li>Bob spots the change and realises that it's going to cause a major problem
    <li>Bob replies to the commit email with a -1 vote and a justification
    <li>A discussion ensues, leading to consensus
    <li>Alice reverts the change
  </ul>

<p>If the discussion did not reach consensus, Alice could challenge the validity of Bob's justification. At that point, the PMC would vote on the issue. If the PMC found that the justification was valid, Alice would have to revert the change or petition Bob to withdraw the veto. If the PMC found the justification invalid, the veto is null and void.

<h3 id="rfc">3.6 Request For Comment (RFC) process</h3>

<p>For major changes to the functionality of CouchDB, a Request For Comment (RFC) process has been established. The intent of an RFC is to ensure sufficient public discussion has occurred on the design of new features, that the proposal is adequately captured in a summary document, and that there is community acceptance of the proposal. The completed RFC template for the proposal then becomes the basis for the new functionality's documentation.</p>

<p>The process is:</p>

  <ul>
    <li>Start a [DISCUSS] thread on <a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">the developer mailing list</a>. Discuss your proposal in detail, including which modules/applications are affected, any HTTP API additions and deprecations, and security issues.</li>
    <li>When there is consensus on the approach from the community, <a href="https://github.com/apache/couchdb/blob/main/src/docs/rfcs/template.md">complete the RFC template</a> and work through any final revisions to the document, with the support of the developer mailing list.</li>
    <li>Start the RFC <strong>vote</strong> on the developer mailing list. Hold the vote according to the <em>lazy majority process</em>: at least 3 +1 votes, and more binding +1 than binding -1 votes.</li>
  </ul>

<h3 id="api">3.7 API changes and deprecations</h3>

<p>Whenever a change is proposed to a release branch or <code>master</code> that removes or changes an existing HTTP API endpoint in a way that breaks backwards compatibility with a released version of CouchDB, the proposed change <strong><em>must</em> be announced on <a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">the developer mailing list</a>, and a minimum of a <a href="#lazy">lazy consensus</a> decision is required.</strong>

<p>This policy is not intended to preserve bugs in HTTP API endpoints across released versions of CouchDB in perpetuity, nor shall it be used to assert consistency of undocumented, implementation-specific behaviour across major releases. Additions of new endpoints that fall short of the need for an RFC, or changes that do not affect backwards compatibility, do not require this notification and process, but announcement to the developer mailing list is still strongly encouraged.</p>

<h3 id="types">3.8. Decision Types</h3>

<p><strong>This section describes the various decision types and the rules that apply to them.</strong></p>

  <table>
    <tr>
      <th>Name
      <th>Description
      <th>Mailing List
      <th>Lazy Consensus
      <th>Approval Model
      <th>Board approval
      <th>Binding votes
      <th>Vetoes
    </tr>
    <tr>
      <td>Technical decision
      <td>A technical decision is any change made to a release branch.
      <td><a href="https://lists.apache.org/list.html?commits@couchdb.apache.org">Commits list</a>
      <td>Allowed for trivial changes
      <td>RTC
      <td>No
      <td>Committers
      <td>Yes
    </tr>
    <tr>
      <td>Request For Comments (RFC) decision
      <td>A decision on a specific proposal to alter CouchDB in a significant way.
      <td><a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">Main development list</a>
      <td>No
      <td>Lazy majority
      <td>No
      <td>Committers
      <td>No
    </tr>
    <tr>
      <td>Non-technical decision
      <td>
	A non-technical decision is any other sort of change, or any sort of decision that falls outside of the other decision types. It is a catch-all decision type.
	<br>
	<br>
	Non-technical decisions should normally be made with lazy consensus, or by the entire community using discussion-led consensus-building, and not through formal voting.
      <td>Whichever mailing list is most appropriate
      <td>Allowed
      <td>Lazy majority
      <td>No
      <td>Committers
      <td> No
    </tr>
    <tr>
      <td>Challenge a veto
      <td>
	Challenge the validity of a veto.
	<br>
	<br>
	A veto is only valid when it is justified with a sound technical argument.
      <td><a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">Main development list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>No
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>New release
      <td>
	Make an official release.
	<br>
	<br>
	Release candidates can be prepared by anyone.
      <td><a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">Main development list</a>
      <td>No
      <td>Lazy majority
      <td>No
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>New committer
      <td>
	Elect a new committer.
	<br>
	<br>
	Nominations can be made by anyone by emailing <a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">the private list</a>.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy majority
      <td>No
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>New PMC member
      <td>
	Elect a new PMC member.
	<br>
	<br>
	Nominations can be made by anyone by emailing <a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">the private list</a>.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>Yes
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>Elect Chair
      <td>Elect a new Chair.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy 2/3 majority or STV
      <td>Yes
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>Committer removal
      <td>Remove a person's committer privileges.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>No
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>PMC member removal
      <td>Remove a person from the PMC.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>Yes
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>Chair removal
      <td>Remove the Chair.
      <td><a href="https://mail-search.apache.org/pmc/private-arch/couchdb-private/">Private list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>Yes
      <td>PMC members
      <td>No
    </tr>
    <tr>
      <td>Create or amend official document
      <td>Create or amend any document marked as official.
      <td><a href="https://lists.apache.org/list.html?dev@couchdb.apache.org">Main development list</a>
      <td>No
      <td>Lazy 2/3 majority
      <td>No
      <td>PMC members
      <td>No
    </tr>
  </table>

<h2 id="other">4. Other Topics</h2>

<h3 id="tags">4.1. Subject Tags</h3>

<p><strong>A subject tag is a string like "[TAG]" that appears at the start of an email subject. We use these to communicate the type of message being sent.</strong>

<p>Here's what an example subject looks like, using multiple tags:

  <blockquote>
    <code>[VOTE] [REVISED] Official CouchDB bylaws</code>
  </blockquote>

<p>If a VOTE or PROPOSAL thread is started without the requisite tag, its validity can be challenged. Every other tag is optional.

<p>We have agreed on the following tags, but you are free to coin your own.</p>

  <table>
    <tr>
      <th>Subject tag
      <th>Description
      <th>Decision making
      <th>Timeframe
    </tr>
    <tr>
      <td>DISCUSS
      <td>This is an open discussion with no time limit
      <td>No
      <td>NA
    </tr>
    <tr>
      <td>REQUEST
      <td>This is a request for some action to be taken (prepare release notes, testing, merge, etc)
      <td>No
      <td>NA
    </tr>
    <tr>
      <td>PROPOSAL
      <td>This is a concrete proposal that will default to lazy consensus
      <td>Yes
      <td>72 hours
    </tr>
    <tr>
      <td>VOTE
      <td>This is a formal vote
      <td>Yes
      <td>72 hours
    </tr>
    <tr>
      <td>NOTICE
      <td>This is a notice of action taken, or action about to be taken (i.e. no discussion or consensus needed)
      <td>No
      <td>NA
    </tr>
    <tr>
      <td>ANNOUNCE
      <td>This is a project level announcement
      <td>No
      <td>NA
    </tr>
  </table>
