In this session from DevRelCon London 2019, Sy Brand provides insight into the issues faced in making a decades old language community into a more inclusive space, with concrete advice you can apply to your own communities.
Sy: I’m going to talk about how we built this community and what lessons you can learn from it. I hope this is not a controversial statement, but tech has a diversity and inclusivity problem. C++, as a part of tech, also has a diversity and inclusivity problem, especially because it’s been around for 20, 30 years. To give you a sense of history, this is a little timeline of some of the important parts in the development of C++. Started in 1979, development started, and then we have first compiler, standardizations, C++ 11, then 14, 17, 20 coming next year. In terms of community, the first C++ conference was in 1992. There’s probably a fair number of people in this room who are younger than the C++ community. And affecting change in a space like that is really, really hard.
This is what the conference list looks like today. I don’t expect you people to read this, but just note, there’s a lot of conferences going on. We have about 17 going just this year. These are all pure C++ conferences. Well, mostly. We also have about six million C++ developers in the world at the moment. It’s a lot of people, a lot of history. How do you actually carve out an inclusive space within this? One of the main digital spaces for C++ has been the Slack channel. I have a picture of the Slack channel’s Code of Conduct from where it started. That’s it. They didn’t have one. And when you have something like this, maybe this is manageable when you have a community of 17 people. Maybe you can kinda self-moderate, you can work out your disputes, you can still have a decent space. But when you have 1,500, that’s not doable.
People get harassed, people get hurt, people start to leave. And we talked about how sometimes these can look like just numbers, but to put a person to this, this year, for CppCon, which is the largest C++ conference in the world, I was in charge of running the diversity and inclusion panel. And when I was putting it together, I contacted someone whose work I really really appreciated, they’ve been doing great stuff, not only in the community space, but technical work, on the Standards Committee, on library development, really amazing stuff. I sent her an email and said “Would you like to be on our panel?” And this is the email I got back. It said, “Dear Sy, thanks for getting in touch. “Unfortunately, I no longer work in C++, but I’m really glad you’re running this. If more people cared about this, maybe I wouldn’t have left.” And this email really hit me. This is someone who I really respected, who’d been doing amazing stuff. And there’s pain behind this email. These simple words, ‘maybe I wouldn’t have left if more people cared about inclusivity, about making good spaces’, this hurt. I don’t want this.
A key point is that this is community building 101, but you’ve got to be intentional about inclusion right from the start, ’cause this will not happen by accident. To take this a little bit further, here’s a quote from Ibram X. Kendi in his book, “How To Be an Antiracist”, which is fantastic and you should absolutely go read it. It says, “One either allows racial inequalities “to persevere as a racist, “or confront racial inequalities as an antiracist. “There is no in-between safe space of not racist. The claim of not racist neutrality is a mask for racism.” A corollary to this statement is, starting a community without thinking about moderation is a racist action. It perpetuates and upholds white supremacy. Furthermore, it’s not only a racist action, it’s a homophobic, it’s a transphobic action. Not thinking about moderating your communities actively harms people, okay. You cannot be neutral about this. Another key point, adopt a CoC. Again, community 101 and enforce it.
Coming back to C++ a little bit and #include itself, for those who aren’t aware, #include is like an import or requires in other languages. So, Guy Davidson tweeted this “Why isn’t the C++ diversity group called #include?” And if you’ve ever tweeted something as a joke, and then suddenly it becomes a thing and you have to actually do some work? Well, this is what happened here. Kate Gregory then replied saying, yeah, we should do it. So we did.
We we got together at CppCon and we put together some goals. Want to be a support group for people who are underrepresented in the community. We want to try and further inclusivity and diversity in our spaces. When we were originally starting, we had some pretty small goals, really. We wanted to maybe get some conferences, to have CoCs, maybe have some more people from underrepresented groups on stage. We were small about it. So we started off on Slack. I made a channel in the C++ Slack. And our idea was to have somewhere to organize, somewhere to discuss, somewhere to support. But then this happened. This is one of my favorite comics. You have a majority group who say “Yeah, you don’t fit in here”. So, we go and we make her own space. And then everyone else comes in and say, “Hey, I want an invite”. And that’s what happened to us. We had this space for organization, discussion and support. And then people came in and said, hey, this channel is useless to me. Why should I care? No one’s oppressed anymore. I’m not racist, but, freedom of speech, you’re silencing me, and all these things, they come together to stifle the actual reason that we’re there. All of these people talking about like freedom of speech are just stopping people from actually discussing things which will make their lives better, it will make our spaces better.
Again, adopt a CoC and enforce it, but that’s not enough. Because quis custodiet ipsos custodes, or who watches the watchers? How do you pick those people who are coming together to moderate your spaces? How would you make sure that they’re actually going to cultivate a community and a culture which you want to see and which will actually uphold people in underrepresented groups? Maybe you have a space, a situation like what we found us in, where we came and we said “Hey, we want to have this space to discuss inclusivity and people are just hacking it to pieces”. Some of the moderators were like, “Yes, you’re right, this is a problem”. And then some of the other moderators said, “Well, no, I don’t see what the issue is here”. You have a process, which is waiting on some resource and holds some other resource, then you have a process, another process, which is waiting on one and holds the other. This is deadlock. And so there is a, when we talk about deadlock in software, we often talk about forward progress guarantees. If you have deadlocked, you have no forward progress. It’s the same in communities. If you cannot agree on how to moderate a space and how to make it better for people, then you have deadlock, you have no forward progress. And then people start to leave.
Curate your moderators. You want to get together a group of people who share a common goal. A group of people who represent the community, who come from a diverse set of backgrounds, identities, people who will actually help create the community which you want to see. As far as how you actually go about getting these people together and making decisions, at #include we use consensus. Here’s a quote by Margaret Thatcher. “Consensus is the absence of leadership.” I never liked Margaret Thatcher. I kinda prefer this quote by Martin Luther King. “A genuine leader is not, it should be searcher for consensus, but a moulder of consensus.” Bringing people together, talking through our perspectives, what we can bring to the conversation, what you can learn from our experiences, molding that into a consensus, which really helps people.
I’m not gonna tell you how to run your communities. We use consensus, maybe you want to do something else. But I will say, be intentional about your organization structure. Think about how you can structure your communities, your communications, in order to facilitate what you want to see, the change you want to see in your communities. Through consensus, we decided that Slack wasn’t working out. We’re making no progress. We looked around for other things can we use, and we eventually settled on Discord.
We made our little space for organization, discussion and support. That was the main point of this. Then we kept talking about C++. Because we all like C++. We made more channels about build systems, about C++, about centralization. And people started to come to talk about C++ and diversity and inclusion and all together in one space. And when you have more people joining, you get trolls. More than one because one was not enough.
What we came up with was, was this kind of way of looking at, of structuring our community. We had a bunch of roles. Of course, we had the traditional moderators. We also had organizers who are people who are interested in organizing community activities and making our spaces better, and maybe had communities of their own, but didn’t want to like be responsible for moderating things like the discord. We then also had this established role, which essentially means that we’ve seen you interacting with our community enough to know that you’re not going to try and actively harm anyone in the community. And this was actually maybe the best decision we ever made. Because then this let us have different channels with different amounts of protection. Anyone could come in and discuss C++, or build systems or audio or whatever. But if you wanted to talk about public speaking, talks you’re working on, and if someone’s just getting into public speaking, that can be really, really hard and really vulnerable. And if you’re doing that in a space, which you don’t know if someone’s watching to put screenshots somewhere else or to tear your talk to shreds, that’s hard.
Having this established role and these protective channels, so that you have some feeling that this is a safe space for you to share what you’re going through and what you’re working on, has been really valuable to us. We also have rules for pronouns. This is one of these things you can do with the tools available for you. We can have rules where we have way, way more than this. This is just a selection, which you can actually read on the slide. But they’re colour coded, which means that if you know what the colour codes look, you can see a message from someone and know how to interact with them at a glance. You can also mouse over their name or whatever. But this is just one of those little quality of life things for if you use your tools effectively. That’s another thing I’d urge you to do. Consider your tools carefully and make the most of them. Think about how what tools are available to you can make your spaces better, can make it easier for people to have discussions, include people.
Also the Ban Hammer. Some tools are there to bring people in. Ban Hammer is a tool for keeping people away. I am a massive proponent of dropping the ban hammer very early. You see, when we’re in the Slack channel someone would come in and say something which is blatantly terrible and obviously forcing people away from the community. The moderators would go in, they discuss it, and they’d say, “Well, what should we do about this? Should we ban this person?”, “Oh well, have they had two strikes yet?”. No, just ban them. Someone comes into our Discord server with a Pepe avatar, they get banned. No one asks a question, it just happens.
Sometimes that does mean we make mistakes. Sometimes, there’s a moderator who wasn’t aware of some cultural thing which meant the intention behind something was completely different from what they thought it was. But that’s comes with this territory. If you’re going to have trolls, you’re going to have to troll hunt. You have to empower your moderators to make mistakes. Tell them your, we’re trying, our job as community organizers is to protect the most harmed people in our communities. If we’re building a community for diversity and inclusion, and we’re not protecting the most vulnerable people, then what are we even here for? You have to empower your moderators to act early and to make mistakes sometimes. But then over-moderation can harm a community. You have to also empower your community to shape itself. One of my favourite examples of this is our welcome channel. We had someone join our server who none of us knew. And they started, every time someone new came into our server, they would send them a message in that server and say, “Hey, welcome, tell us a bit about yourself”. That started two years ago, and he’s still doing it today. Almost every single day, he’s on our welcome channel individually welcoming people who’d come into our community. And this is one of those things that — we didn’t know anything about this guy. His name’s Richard Chandler, and he’s amazing. We didn’t know anything about him. He just came and he made a change. And it’s been one of the best things which has happened to us. Let your community shape itself in positive ways.
Here are the kind of goals that we had, provide support, improve our spaces. And again, we were had a small view of what we could actually achieve. But this is the kind of thing we’ve actually done. We have, now have booths at almost every C++ conference in the world. We’ve sponsored over a dozen people who, otherwise, wouldn’t be able to make it to these conferences, to actually go to network, to interact, to get jobs, to start speaking career themselves. We have our T-shirts, nice T-shirts at committee meetings, on stage at keynote events, from people who have never interacted with our community, they just say, hey, I wanna support this. We have over 2000 people on our Discord. When we started, we had eight. And in our conferences we now see things like gender neutral toilets, live captioning, quiet rooms, Code of Conducts, Code of Conduct teams, diversity and inclusion panels, and more. This is all stuff that we’ve achieved just by talking to conference organizers saying, hey, look, here’s a large group of people who care about this stuff and you’ll make their lives better. You need to do this.
My personal favourite is people who have come into our server, and had no experience with public speaking or giving talks or anything, and we’ve helped them to give their first talk. Just this year, we’ve had a number of people who’d never given talks before, get out there and make something for themselves because of the support they’ve had. Someone even left their job to pursue community and public speaking because of all the work we’ve done, and that makes me incredibly happy. A bonus key point is don’t be afraid to set ridiculous targets because you might just meet them or exceed them.
As I wrap up, these were the key points which I covered. You want to be intentional about inclusion from day one, adopt a CoC and enforce it. Be very careful about who is moderating your communities. Be intentional about your organization structure, whatever that may look like for your community. Consider your tools carefully and make the most of them. Empower your moderators to make mistakes and also your community to shape itself.
Yes, C++ has a diversity and inclusion problem. Yes, tech has a diversity and inclusion problem. But together we can work to make it better. If you’d like to find us we are includecpp.org or @include_cpp on Twitter or you can find me @TartanLlama. We also have a Discord server, or you can just come talk to me afterwards, I’ll be around. Thank you.
Can you make good release notes by collating your commit messages? Eva Parish argues not.
Can negative feedback from customer satisfaction surveys have a positive impact on your developer experience?