<!--{
	"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,
ethnicity, 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>
