<!--{
	"Title": "Go Community Code of Conduct",
	"Path":  "/conduct",
	"Template": true
}-->

<style>
ul {
	max-width: 800px;
}
ul ul {
	margin: 0 0 5px;
}
</style>

<h2 id="about">About the Code of Conduct</h2>

<h3 id="why">Why have a Code of Conduct?</h3>

<p>
Online communities include people from many different backgrounds.
The Go contributors are committed to providing a friendly, safe and welcoming
environment for all, regardless of age, disability, gender, nationality, race,
religion, sexuality, or similar personal characteristic.
</p>

<p>
The first goal of the Code of Conduct is to specify a baseline standard
of behavior so that people with different social values and communication
styles can talk about Go effectively, productively, and respectfully.
</p>

<p>
The second goal is to provide a mechanism for resolving conflicts in the
community when they arise.
</p>

<p>
The third goal of the Code of Conduct is to make our community welcoming to
people from different backgrounds.
Diversity is critical to the project; for Go to be successful, it needs
contributors and users from all backgrounds.
(See <a href="https://blog.golang.org/open-source">Go, Open Source, Community</a>.)
</p>

<p>
With that said, a healthy community must allow for disagreement and debate.
The Code of Conduct is not a mechanism for people to silence others with whom
they disagree.
</p>

<h3 id="spaces">Where does the Code of Conduct apply?</h3>

<p>
If you participate in or contribute to the Go ecosystem in any way,
you are encouraged to follow the Code of Conduct while doing so.
</p>

<p>
Explicit enforcement of the Code of Conduct applies to the
official forums operated by the Go project (“Go spaces”):
</p>

<ul>
    <li>The official <a href="https://github.com/golang/">GitHub projects</a>
        and <a href="https://go-review.googlesource.com/">code reviews</a>.
    <li>The <a href="https://groups.google.com/group/golang-nuts">golang-nuts</a> and
        <a href="https://groups.google.com/group/golang-dev">golang-dev</a> mailing lists.
<li>The #go-nuts IRC channel on Freenode.
<li>The <a href="https://reddit.com/r/golang">/r/golang subreddit</a>.
</ul>

<p>
Other Go groups (such as conferences, meetups, and other unofficial forums) are
encouraged to adopt this Code of Conduct. Those groups must provide their own
moderators and/or working group (see below).
</p>

<h2 id="values">Gopher values</h2>

<p>
These are the values to which people in the Go community (“Gophers”) should aspire.
</p>

<ul>
<li>Be friendly and welcoming
<li>Be patient
    <ul>
    <li>Remember that people have varying communication styles and that not
        everyone is using their native language.
        (Meaning and tone can be lost in translation.)
    </ul>
<li>Be thoughtful
    <ul>
    <li>Productive communication requires effort.
        Think about how your words will be interpreted.
    <li>Remember that sometimes it is best to refrain entirely from commenting.
    </ul>
<li>Be respectful
    <ul>
    <li>In particular, respect differences of opinion.
    </ul>
<li>Be charitable
    <ul>
    <li>Interpret the arguments of others in good faith, do not seek to disagree.
    <li>When we do disagree, try to understand why.
    </ul>
<li>Avoid destructive behavior:
    <ul>
    <li>Derailing: stay on topic; if you want to talk about something else,
        start a new conversation.
    <li>Unconstructive criticism: don't merely decry the current state of affairs;
        offer—or at least solicit—suggestions as to how things may be improved.
    <li>Snarking (pithy, unproductive, sniping comments)
    <li>Discussing potentially offensive or sensitive issues;
        this all too often leads to unnecessary conflict.
    <li>Microaggressions: brief and commonplace verbal, behavioral and
        environmental indignities that communicate hostile, derogatory or negative
        slights and insults to a person or group.
    </ul>
</ul>

<p>
People are complicated.
You should expect to be misunderstood and to misunderstand others;
when this inevitably occurs, resist the urge to be defensive or assign blame.
Try not to take offense where no offense was intended.
Give people the benefit of the doubt.
Even if the intent was to provoke, do not rise to it.
It is the responsibility of <i>all parties</i> to de-escalate conflict when it arises.
</p>

<h2 id="unwelcome_behavior">Unwelcome behavior</h2>

<p>
These actions are explicitly forbidden in Go spaces:
</p>

<ul>
<li>Insulting, demeaning, hateful, or threatening remarks.
<li>Discrimination based on age, disability, gender, nationality, race,
    religion, sexuality, or similar personal characteristic.
<li>Bullying or systematic harassment.
<li>Unwelcome sexual advances.
<li>Incitement to any of these.
</ul>

<h2 id="moderation">Moderation</h2>

<p>
The Go spaces are not free speech venues; they are for discussion about Go.
These spaces have moderators.
The goal of the moderators is to facilitate civil discussion about Go.
</p>

<p>
When using the official Go spaces you should act in the spirit of the “Gopher
values”.
If you conduct yourself in a way that is explicitly forbidden by the CoC,
you will be warned and asked to stop.
If you do not stop, you will be removed from our community spaces temporarily.
Repeated, willful breaches of the CoC will result in a permanent ban.
</p>

<p>
Moderators are held to a higher standard than other community members.
If a moderator creates an inappropriate situation, they should expect less
leeway than others, and should expect to be removed from their position if they
cannot adhere to the CoC.
</p>

<p>
Complaints about moderator actions must be handled using the reporting process
below.
</p>

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

<p>
The Code of Conduct Working Group is a group of people that represent the Go
community. They are responsible for handling conduct-related issues.
Their purpose is to de-escalate conflicts and try to resolve issues to the
satisfaction of all parties. They are:
</p>

<ul>
	<li>Aditya Mukerjee &lt;dev@chimeracoder.net&gt;
	<li>Andrew Gerrand &lt;adg@golang.org&gt;
	<li>Dave Cheney &lt;dave@cheney.net&gt;
	<li>Jason Buberel &lt;jbuberel@google.com&gt;
	<li>Peggy Li &lt;peggyli.224@gmail.com&gt;
	<li>Sarah Adams &lt;sadams.codes@gmail.com&gt;
	<li>Steve Francia &lt;steve.francia@gmail.com&gt;
	<li>Verónica López &lt;gveronicalg@gmail.com&gt;
</ul>

<p>
If you encounter a conduct-related issue, you should report it to the
Working Group using the process described below.
<b>Do not</b> post about the issue publicly or try to rally sentiment against a
particular individual or group.
</p>

<ul>
<li>Mail <a href="mailto:conduct@golang.org">conduct@golang.org</a> or
    <a href="https://golang.org/s/conduct-report">submit an anonymous report</a>.
    <ul>
    <li>Your message will reach the Working Group.
    <li>Reports are confidential within the Working Group.
    <li>Should you choose to remain anonymous then the Working Group cannot
        notify you of the outcome of your report.
    <li>You may contact a member of the group directly if you do not feel
        comfortable contacting the group as a whole. That member will then raise
        the issue with the Working Group as a whole, preserving the privacy of the
        reporter (if desired).
    <li>If your report concerns a member of the Working Group they will be recused
        from Working Group discussions of the report.
    <li>The Working Group will strive to handle reports with discretion and
        sensitivity, to protect the privacy of the involved parties,
        and to avoid conflicts of interest.
    </ul>
<li>You should receive a response within 48 hours (likely sooner).
    (Should you choose to contact a single Working Group member,
    it may take longer to receive a response.)
<li>The Working Group will meet to review the incident and determine what happened.
    <ul>
    <li>With the permission of person reporting the incident, the Working Group
        may reach out to other community members for more context.
    </ul>
<li>The Working Group will reach a decision as to how to act. These may include:
    <ul>
    <li>Nothing.
    <li>A request for a private or public apology.
    <li>A private or public warning.
    <li>An imposed vacation (for instance, asking someone to abstain for a week
        from a mailing list or IRC).
    <li>A permanent or temporary ban from some or all Go spaces.
    </ul>
<li>The Working Group will reach out to the original reporter to let them know
    the decision.
<li>Appeals to the decision may be made to the Working Group,
    or to any of its members directly.
</ul>

<p>
<b>Note that the goal of the Code of Conduct and the Working Group is to resolve
conflicts in the most harmonious way possible.</b>
We hope that in most cases issues may be resolved through polite discussion and
mutual agreement.
Bannings and other forceful measures are to be employed only as a last resort.
</p>

<p>
Changes to the Code of Conduct (including to the members of the Working Group)
should be proposed using the
<a href="https://golang.org/s/proposal-process">change proposal process</a>.
</p>

<h2 id="summary">Summary</h2>

<ul>
<li>Treat everyone with respect and kindness.
<li>Be thoughtful in how you communicate.
<li>Don’t be destructive or inflammatory.
<li>If you encounter an issue, please mail <a href="mailto:conduct@golang.org">conduct@golang.org</a>.
</ul>

<h3 id="acknowledgements">Acknowledgements</h3>

<p>
Parts of this document were derived from the Code of Conduct documents of the
Django, FreeBSD, and Rust projects.
</p>
