Updating the Go Code of Conduct
23 May 2018
Tags: conduct

Steve Francia

* Introduction

In November 2015, we introduced the Go Code of Conduct.
It was developed in a collaboration between
the Go team members at Google and the Go community.
I was fortunate to be one of the community members
invited to participate in both drafting and then enforcing
the Go Code of Conduct.
Since then, we have learned two lessons about
limitations in our code of conduct that restricted us from
being able to cultivate the safe culture
essential to Go’s success.

The first lesson we learned is that toxic behaviors by
project participants in non-project spaces can have a
negative impact on the project affecting the security and safety of
community members. There were a few reported
incidents where actions took place outside of project spaces
but the impact was felt inside our community. The specific
language in our code of conduct restricted our ability to
respond only to actions happening “in the official
forums operated by the Go project”. We needed a way
to protect our community members wherever they are.

The second lesson we learned is that the demands required
to enforce the code
of conduct place too heavy of a burden on volunteers.
The initial version of the code of conduct presented the
working group as disciplinarians. It was soon clear
that this was too much, so in early 2017 [[https://golang.org/cl/37014][we changed the group’s role]]
to that of advisors and mediators.
Still, working group community members
reported feeling overwhelmed, untrained, and vulnerable.
This well-intentioned shift left us without an enforcement mechanism
without solving the issue with overburdened volunteers.

In mid-2017, I represented the Go project in a meeting with
Google’s Open Source Programs Office and Open Source Strategy Team
to address the shortcomings in our respective
codes of conduct, particularly in their enforcement.
It quickly became clear that our problems had a lot in common,
and that working together on a single code of conduct for all
of Google’s open source projects made sense.
We started with the text from the
Contributor Covenant Code of Conduct v1.4
and then made changes, influenced by
our experiences in Go community and our collective experiences in open source.
This resulted in the Google [[https://opensource.google.com/docs/releasing/template/CODE_OF_CONDUCT/][code of conduct template]].

Today the Go project is adopting this new code of conduct,
and we’ve updated [[https://golang.org/conduct][golang.org/conduct]].
This revised code of conduct retains much of the intent, structure and
language of the original Go code of conduct while making two critical
changes that address the shortcomings identified above.

First, [[https://golang.org/conduct/#scope][the new code of conduct makes clear]] that people who
participate in any kind of harassment or inappropriate behavior,
even outside our project spaces, are not welcome in our project spaces.
This means that the Code of Conduct applies outside
the project spaces when there is a reasonable belief that
an individual’s behavior may have a negative
impact on the project or its community.

Second, in the place of the working group,
[[https://golang.org/conduct/#reporting][the new code of conduct introduces a single Project Steward]]
who will have explicit training and support for this role.
The Project Steward will receive reported violations
and then work with a committee,
consisting of representatives from the Open Source Programs Office
and the Google Open Source Strategy team,
to find a resolution.

Our first Project Steward will be [[https://twitter.com/cassandraoid][Cassandra Salisbury]].
She is well known to the Go community as a member of Go Bridge,
an organizer of many Go meetups and conferences,
and as a lead of the Go community outreach working group.
Cassandra now works on the Go team at Google
with a focus on advocating for and supporting the Go community.

We are grateful to everyone who served on the original Code of
Conduct Working Group. Your efforts were essential in creating an
inclusive and safe community.

We believe the code of conduct has contributed to the
Go project becoming more welcoming now than it was in 2015,
and we should all be proud of that.

We hope that the new code of conduct will help protect our community
members even more effectively.
