<title>Code of Conduct</title>

<meta charset="utf-8">

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

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

<h1>Code of Conduct</h1>

<p><em>This document was officially adopted by the CouchDB PMC as of 11 August 2014.</em>

<h2>Table of Contents</h2>

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

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

<p>This code of conduct <u>governs how we behave</u> in any forum and whenever we will be judged by our actions. We expect it to be honoured by everyone who participates in the Apache CouchDB community <a href="http://couchdb.apache.org/bylaws.html#roles">formally</a> or informally, or claims any affiliation with the project.

<p>This code of conduct also <u>applies to all spaces</u> managed by the Apache CouchDB project, including IRC, all public and private mailing lists, the issue tracker, the wiki, the blogs, Twitter, and any other forum which the community uses for communication. <em><span style="color: rgb(255,0,0);">TODO: An expanded code of conduct is being drafted for events that involve physical interaction (conferences), based on the</span> <a href="https://www.apache.org/foundation/policies/anti-harassment.html">published ASF anti-harassment policy</a>.</em>

<p>This code <u>is not exhaustive or complete</u>. It serves to distill our common understanding of a collaborative, shared environment and goals. We expect it to be followed in spirit as much as in the letter, so that it can enrich all of us and the technical communities in which we participate.

<h2 id="guidelines">Specific Guidelines</h2>

<p>We strive to:

  <ol>

    <li><p><strong>Be open</strong>. We invite anyone to participate in our community. As per <a href="http://couchdb.apache.org/bylaws.html#decisions">Section 3 of our Project Bylaws</a>, we preferably use public methods of communication for project-related messages, unless discussing something sensitive. This applies to messages for help or CouchDB-related support, too; not only is a public support request much more likely to result in an answer to a question, it also makes sure that any inadvertent mistakes made by people answering will be more easily detected and corrected.</p>

    <li><p><strong>Be <a href="#endnotes">empathetic</a>, welcoming, friendly, and patient</strong>: We work together to resolve conflict, assume good intentions, and do our best to act in an empathetic fashion. We may all experience some frustration from time to time, but we do not allow frustration to turn into a personal attack. A community where people feel uncomfortable or threatened is not a productive one. We should be respectful when dealing with other community members as well as with people outside our community.</p>

    <li><p><strong>Be collaborative.</strong> Our work will be used by other people, and in turn we will depend on the work of others. When we make something for the benefit of the project, we are willing to explain to others how it works, so that they can build on the work to make it even better. Any decision we make will affect users and colleagues, and we take those consequences seriously when making decisions.</p>

    <li><p><p><strong>Be inquisitive</strong>. Nobody knows everything! Asking questions early avoids many problems later, so questions are encouraged, though they may be directed to the appropriate forum. Those who are asked should be responsive and helpful, within the context of our shared goal of improving Apache CouchDB.</p>

    <li><p><strong>Be careful in the words that we choose.</strong> Whether we are participating as professionals or volunteers, we value professionalism in all interactions, and take responsibility for our own speech. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behaviour are not acceptable. This includes, but is not limited to:</p>

      <ul>
	<li>Violent threats or language directed against another person.
	<li>Sexist, racist, or otherwise discriminatory jokes and language.
	<li>Posting sexually explicit or violent material.
	<li>Posting (or threatening to post) other people's personally identifying information ("doxing").
	<li>Sharing private content, such as emails sent privately or non-publicly, or unlogged forums such as IRC channel history.
	<li>Personal insults, especially those using racist or sexist terms.
	<li>Unwelcome sexual attention.
	<li>Excessive or unnecessary profanity.
	<li>Repeated harassment of others. In general, if someone asks you to stop, then stop.
	<li>Advocating for, or encouraging, any of the above behaviour.
      </ul>

    <li><p><strong>Be concise</strong>. Keep in mind that what you write once will be read by hundreds of persons. Writing a short email means people can understand the conversation as efficiently as possible. Short emails should always strive to be empathetic, welcoming, friendly and patient. When a long explanation is necessary, consider adding a summary.</p>

      <p>Try to bring new ideas to a conversation so that each mail adds something unique to the thread, keeping in mind that the rest of the thread still contains the other messages with arguments that have already been made.</p>

      <p>Try to stay on topic, especially in discussions that are already fairly large.</p>

    <li><p><strong>Step down considerately</strong>: Members of every project come and go. When somebody leaves or disengages from the project they should tell people they are leaving and take the proper steps to ensure that others can pick up where they left off. In doing so, they should remain respectful of those who continue to participate in the project and should not misrepresent the project's goals or achievements. Likewise, community members should respect any individual's choice to leave the project.</p>

  </ol>

<h2 id="diversity">Diversity Statement</h2>

<p>Apache CouchDB welcomes and encourages participation by everyone. We are committed to being a community that everyone feels good about joining. Although we may not be able to satisfy everyone, we will always work to treat everyone well.

<p>No matter how you identify yourself or how others perceive you: we welcome you. Though no list can hope to be comprehensive, we explicitly honour diversity in: age, culture, ethnicity, genotype, gender identity or expression, language, national origin, neurotype, phenotype, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, subculture and technical ability.

<p>Though we welcome people fluent in all languages, Apache CouchDB development is conducted in English.

<p>Standards for behaviour in the Apache CouchDB community are detailed in the Code of Conduct above. We expect participants in our community to meet these standards in all their interactions and to help others to do so as well.

<p>If you want to help encourage a more diverse community, we encourage you to <em><span style="color: rgb(255,0,0);">TODO: join the diversity mailing list at &lt;TBD&gt;</span></em>

<h2 id="reporting">Reporting Guidelines</h2>

<p>While this code of conduct should be adhered to by participants, we recognize that sometimes people may have a bad day, or be unaware of some of the guidelines in this code of conduct. When that happens, you may reply to them and point out this code of conduct. Such messages may be in public or in private, whatever is most appropriate. However, regardless of whether the message is public or not, it should still adhere to the relevant parts of this code of conduct; in particular, it should not be abusive or disrespectful.

<p>If you believe someone is violating this code of conduct, you may reply to them and point out this code of conduct. Such messages may be in public or in private, whatever is most appropriate. Assume good faith; it is more likely that participants are unaware of their bad behaviour than that they intentionally try to degrade the quality of the discussion. Should there be difficulties in dealing with the situation, you may report your compliance issues in confidence to <a href="mailto:private@couchdb.apache.org">private@couchdb.apache.org</a>.

<p>If the violation is in documentation or code, for example inappropriate pronoun usage or word choice within official documentation, we ask that people report these privately to the project at <a href="mailto:private@couchdb.apache.org">private@couchdb.apache.org</a>, and, if they have sufficient ability within the project, to resolve or remove the concerning material, being mindful of the perspective of the person originally reporting the issue.

<h2 id="endnotes">Endnotes</h2>

<p>This Code defines <strong>empathy</strong> as "a vicarious participation in the emotions, ideas, or opinions of others; the ability to imagine oneself in the condition or predicament of another." <strong>Empathetic</strong> is the adjectival form of empathy.

<p>This statement thanks the following, on which it draws for content and inspiration:

  <ul>
    <li><a href="http://fedoraproject.org/code-of-conduct">Fedora Project Code of Conduct</a>
    <li><a href="http://speakup.io/coc.html">Speak Up! Code of Conduct</a>
    <li><a href="https://www.djangoproject.com/conduct/">Django Code of Conduct</a>
    <li><a href="http://www.debian.org/vote/2014/vote_002">Debian Code of Conduct</a>
    <li><a href="https://github.com/twitter/code-of-conduct/blob/master/code-of-conduct.md">Twitter Open Source Code of Conduct</a>
    <li><a href="https://wiki.mozilla.org/Code_of_Conduct/Draft#Conflicts_of_Interest">Mozilla Code of Conduct/Draft</a>
    <li><a href="https://www.python.org/community/diversity/">Python Diversity Appendix</a>
    <li><a href="http://pythonmentors.com/">Python Mentors Home Page</a>
  </ul>
