Have a Code of Conduct

There was hubbub today over a project maintainer’s conduct on Twitter, and whether he should be allowed to continue to hold a position of authority in the project while marginalising a group of people.

I don’t want to talk about that, because (honestly) we see this situation every month or so. Everyone wants to be able to marginalise people without any consequences, and so arguments about “censorship” perennially spring up.

Instead, I want to talk about projects having Codes of Conduct. That same project had an issue open about creating a Code of Conduct, and what should be in it, and what it means, and where it applies. And I saw a lot of assertions about what a Code of Conduct means. So I want to clear up what a Code of Conduct means to me.

What is a Code of Conduct, anyways?

A Code of Conduct is, as Geek Feminism’s wiki says:

“a document which sets out expectations for members of a community, with regard to how they will behave toward each other.”

All a Code of Conduct is is a statement of values. We value people who can be polite, respectful, and kind over people that are rude, disrespectful, and cruel. When we have to make a choice about which people to include or exclude, we’re going to choose the one that will attract more of the people we want than the people we don’t want.

But what about abuse?

Some people are very concerned about censorship, and are concerned that the organization leaders (or the “Social Justice Warriors” on the Internet) will use the Code of Conduct to get rid of members in the community they don’t like.

First, if that’s the case, the removed members were already exhibiting behaviours the community has decided are unacceptable. I’m not sure how that can qualify as abuse.

Second, if the worry is the organisers will go mad with power and ban people they don’t like, not having a Code of Conduct won’t prevent that. Not having a Code of Conduct just says the organisers and members can do whatever is within their power. It’s an agreement that anything goes.

But I can’t stop people contributing! They can just fork the code.

This is important. Repeat after me: the code is not the project. The community around the code, the brand around the code, these are your project. You can refuse to accept pull requests. You can refuse to give people authority in your community. To say there’s nothing you can do is misleading. You can’t stop people using your code or changing your code in their own repository, but that doesn’t mean they’re part of the project.

This is censorship!

Censorship is about suppressing speech. This is not suppressing speech. Anyone can say anything they want. All this is doing is making clear that there are repercussions for actions, and being clear about what actions will have repercussions. A good Code of Conduct will even tell you what the repercussions will be!

Not having a Code of Conduct does not prevent your actions from having repercussions. It just makes people guess which actions will have repercussions, and what those repercussions will be.

OK, but surely people are entitled to their opinions on Twitter/{other public space}!

Of course they are. They’re just not entitled to voice their opinion with no repercussions. Nowhere is that a right, because that would be silly. You’re free to name your project as a slur for gay people, and I’m free to decide that I probably have a better use for my time than to contribute to that project. You’re free to tweet that racism is a myth, and black people are free to not contribute to or use your work.

But when your community is led by someone that espouses an idea in public, that is a signal that your community finds that idea acceptable. And there’s nothing wrong with that. It could be that your community values “free speech” (by which they mean “consequence-free speech”) over all else. It could be that they actually agree with the idea.

If people are offended, hurt, or upset by that idea, however, unless you take action, you are sending the signal that your community values the idea more than the people who are offended, hurt, and upset by it. Do not be surprised if those people want nothing to do with your project. You are, by the values you hold, excluding them from the project. Sure, you’ll accept contributions they may send you, but you’re making it unlikely they’ll send any contributions at all.

As an example, I could say that all white dudes must pay me $5 per contribution before I’ll accept their contribution. I’ll accept their contribution, they just need to pay me to do it. But only white men need to pay. I’m excluding white men, right?

That’s what you’re doing to marginalised people when you allow someone who is publicly marginalising them to hold a position of authority. You’re forcing them to deal with the emotional and mental problems (that nobody else has to deal with) that come from that figure of authority. You are forcing an emotional and mental tax on them.

So my belief that marriage is between a man and a woman should be enshrined in the Code of Conduct and respected, right? And anyone saying gay people should be able to marry, or any married gay people, should be excluded, right?!

YES. 100% yes. That’s totally a valid thing to put in a Code of Conduct.

But here’s the thing: don’t be surprised if no gay people, nobody who supports gay people, and nobody who has a problem with people trying to prevent gay people from getting married contributes to your project. Do not be surprised if those people fork your project, implement a new Code of Conduct, and build a new project around your codebase.

Your Code of Conduct is your community. It is the values you share and hold closest. Whether it’s written down or not, it is there. All people want you to do is to write it down, be explicit about it, and leave no room for confusion.

Can you give me a TL;DR?


  • You have a Code of Conduct; it’s what your community deems to be “ok”. People just want you to write it down.
  • Your project is not your code. Forking your code doesn’t count as contributing to the project.
  • You are entitled to say whatever you want. You are not entitled to not suffer any repercussions for whatever you say.

My pledge.

From today on, I will be checking every project before I make any contribution to it. If you do not have a Code of Conduct explicitly written down, I will not contribute to your project. I’m tired of Open Source being a cis het white dude zone. I’m tired of hearing “keep politics out of open source!” Software is made by people; people are political. We cannot keep politics out of open source. I’m tired of hearing a code of conduct isn’t necessary.

Be clear about where your community stands. If it’s not a place I’m comfortable standing, that’s fine. I just will not be part of your community. But do not make people guess whether your community values them.

We can do better than this. We need to do better than this.