For those of you late to the party, Shepherd’s Oasis and I are starting a new Systems Programming conference named CoSy Tech! There’s the lingering question from the people outside of my immediate circle who keep asking: why?

It’s a good question. After all, it’s not like we have a shortage of C++ conferences. C++ Paris, C++ on Sea, CppCon, C++Now, Pacific++, MeetingC++, code::dive, Italian C++… there’s a lot of C++ conferences, user groups, and meetups that have really come to the table to play. So…

Why?

There are a number of reasons to start a new Systems Programming conference. The two primary reasons are as follows:

  • Broadening the scope to accept folks from other professional backgrounds, hobbies, and walks of life; and,
  • Getting out from the crushing despair that is the current landscape to survive.

Broadening Scope ☀

Several people (myself included) noticed that there was no conference for C programmers. A lot of my work ties to C, talks to C, and as I’ve begun to uncover much more deeply there are a large number of people who have forsaken C++ for C intentionally or use plain C because their environment offers no alternatives. That means there’s a wealth of modern, current C practices that aren’t really elucidated upon by current literature. Meanwhile, most mainstream text about C spends time dunking on it (myself included!), talking about its vulnerabilities, or talking about it as “that ancient thing we need to worry about every now and then”.

How do these people make do?

So, we’re going to invite those developers into the fold, to talk about what makes their code successful in professional and hobby environments. This doesn’t apply to just C or C++, of course: Rust, Zig, FORTH, Nim, OCaml, Haskell, and many more languages have gotten a chance to solve some problems people have. I’d like to give those people a seat at the table and have them focus on how they used their tools to solve the problem at hand, rather than focusing on the tool itself. Which leads me to talk about…

Submissions! 📜

Submissions for CoSy aren’t open yet, but we wanted to approach how submissions are treated and what kind of content we received differently from other conferences. There are essentially two kinds of conference systems: academic and industrial.

Industry conferences zero in on either a specific community/technology (Node, .NET, the JVM) all the way down to an exact tool (Kubernetes, LLVM). They sometimes have themes that encourage a broader range of talks and submissions, but ultimately it’s fairly focused what they’re going after. Talk submissions are generally just an IOU (“I owe you”): you promise to furnish a talk at the appointed time with the necessary bells and whistles. (This changes a little for Poster submissions to said industry conferences, where you have to usually show something real by the deadline.)

Academic and journal-related conferences tend to have higher barriers to entry even if they have broader scope, such as requiring a journal article/paper-like submission subject to rigorous peer review rather than just an outline of a talk or an idea with an IOU to show up and deliver. They tend to require the ability that you write a journal article, have the intent to publish, or are going to publish very soon (preferably, in the journal related to the conference).

There is room for a mix, where we have hobby, industry, and academic professionals/hobbyist strive for a low-cost environment to share what they either love to do or professionally work on, without the high submission cost of needing a whole article. That’s what CoSy is going to be focusing on: everyone, academics and professionals alike, can focus on just delivering a good talk, while still having a pretty broad scope to talk about (Systems Programming). We also hope to reach out to organizations, companies, and people who don’t normally contribute to the aforementioned C++ conferences so we can cycle in many new and wonderful faces and names.

Double-Blinded 🕶

Another big difference is that we’re going to be internally doing double-blinded reviews. This means that all personally-identifying information will be removed (Name, Age, and any other details) from all submissions before being passed on to the Program Committee. The primary reason for this is fairness: we want to be sure that everyone gets their submissions processed with the same opportunity to impress. This actually applies more to “famous people” than it does to any other metric.

For example, some people blindly submit great reviews for talks attached to e.g. Chandler Carruth, Kate Gregory, or JF Bastien because they “want to see their take on the subject”. This can come regardless of the quality of the actual submission. While some people might think this is awesome, this actually hurts JF or Kate or Chandler more than it helps! If they wanted to submit on a new topic they’ve never spoken about before, it can be hard to trust the reviews because they’re biased by the clout/notoriety of who they are. This provides less critical feedback that could actually result in a great talk, resulting in an echo chamber.

Double-blind submission removes that kind of bias, as well as other biases inherent in humans processing other humans’ work. Of course, it’s not always possible to double-blind everything! If someone writes a submission about how they wrote a Great Book On Large Scale Software Architecture That’s Really Good And Helps You Modularize And Structure Large Software And The Sequel Is Out You Should Buy It Now, they have vastly reduced the pool of people they could be talking about. But that’s the beauty of the system: if you want to rely on fame, then you can name yourself in the submission outline or spell out some easily-identifiable detail.

But! The default is that your identity is unknown, and your work is being evaluated for the quality of its presentation. Name-drop yourself, but only if you dare!

Escaping the Crushing Despair ⚖️

At this point, you can stop reading the article. Most people would be content with the above handling and just leave it at that. But this is one of the most important and driving reasons why CoSy needs to be created, and that’s because the current systems we have created around our conferences and industry are not remotely fixable.

⚠ ⚠ W A R N I N G ⚠ ⚠

The following sections will reproduce some people’s words, exactly. That includes slurs such as the n-word, f-word, s-word and more. If you don’t have a stomach for it, then just take my word for it that it’s nasty and go read some other cool programming articles! But if you want to know why we need a new programming conference and why we can’t just build it like the old ones, well.

Travel on, brave reader.

Closed: Won’t Fix ❌

Yes. I say this after myself and many others have participated deeply in the systems, attempting to influence behavior and ask for changes that protect and prioritize the most vulnerable in our communities. The long and short of it is that the folks who run these programs, donate the most money, and sit at the top of the food chains for these organizations are not open to changing the way they do things. This is fine for them, but it is not fine for the rest of us.

On top of what I myself and many others in the C++ community have experienced, more and more stories have come into my e-mail, Signal, and Discord messages describing in fairly unfortunate detail the level of harassment, sabotage, and bigotry that has infested tech and ultimately destroyed many promising individuals – young and old – out of our most prominent and prestigious spaces. I thought C++ was unique in its terribleness,

but I could not have been more wrong.

From Python to JavaScript, harassment and abuse is a lot more common than I ever wanted it to be. Still, I do not want to talk over other people’s experiences: they can share them at a time when they feel appropriately equipped to do so. I am instead going to talk to, specifically, why I could not do something like hope that C++Now might fix itself or expect that any other existing event might suddenly pivot for the better.

Reactionary Rhetoric: Crafting a Bigot 🔨

We know that there exist places like 4chan where the brutally disgusting “discussions” are disguised under the mantle of “technocracy” and “equal work, equal merit” policies. Obviously, 4chan isn’t a reflection of Boost, any C++ conference, its leadership, or its donors. Unfortunately, I and many others do not have to go to 4chan or the underbelly of reddit to find this kind of plain talk of “niggers” and “faggots”: it was happening right within the CppLang Slack. No other story is as illustrative of that as is Douman’s Story.

An Outsider’s History of Douman 📚

When I joined the CppLang Slack around 2017-2018, an incident occurred. A user by the name of Douman said “nigger”, hard R and everything. Moderation came down on Douman eventually, and he ended up getting banned from one of CppLang’s most rancorous “off topic” channels to help him resist the urge to say it again while still being able to participate. (Don’t ask me how this is supposed to be an effective deterrent.) Afterwards, Douman stated he was sad about the event and donned a Slack emoji in his name with the tag to the effect of “Garbage human being”.

What happened privately, however, was an entirely different story.

Incensed at being slapped on the wrist for his transgression, Douman confided in authorities higher than the Moderation team itself: the CppLang Admins. And in them, Douman found exactly what he was looking for: righteous justification against the “snowflakes” who couldn’t handle his “bad language”. He linked up in a Slack channel called Unfiltered, an at-times locked channel where users did and could scream nigger, faggot, and all sorts of other things, at anybody they wanted to. You think of a slur, and it was said in Unfiltered.

I know this, because for a brief moment I was in there.

The first time I left the CppLang Slack was just before the C++ San Diego Standardization meeting in 2018. When Tom Honermann and many others confronted me about my abrupt leaving of the Slack (it was the only way to connect in a real-time chat with other SG16 - Unicode members and thusly I had effectively chosen to lose contact with the one Study Group I was involved in), I cited a hostile confrontation in another channel with another user. But that was only the tip of the iceberg: whether by accident or on purpose, shortly after that confrontation I got access to Unfiltered. And unfortunately, I got to see all of what I spoke about, in real-time. I wasn’t the only one, either: two other moderators found the existence of the channel and other people – frequent Conference attendees and Committee members alike — were exposed to that channel. Despite protests, the Admins did nothing about it. Not just because they cited “free speech” and other tired tropes, but because

the Admins and some moderators were in there, saying the same slurs as everyone else.

Geez… but, Douman?

Normally, this wouldn’t be that big of a deal: bigotry exists everywhere, it’s just the way things are, right? But uniquely in this case was the radicalization of Douman: from LARPing about being sorry for saying nigger, to – under the tutelage of the CppLang Slack Admins – manifesting as a full-throated jerk:

Douman on Twitter, going full-throttle with his homophobia and transphobia by implying women are men and that they are criminals and predators.

Interestingly enough, this is not the first time Douman’s proclivities came out of the closet: he commented on the video detailing some of the problems that the wider C++ community had:

Douman on YouTube, with the comment "Where C++?"

The reason this comment is significant – other than its glib dismissal of the qualitative and quantitative evidence provided in the video – was that it was meant to mirror a specific comment I spoke about in the video itself:

"Where's the C++" comment from the CppLang Slack Admin on my original video.

More importantly, the person who made the original comment was the top CppLang Slack admin. The same person who coddled the Unfiltered channel, who abided by the same slurs thrown around in the CppLang Slack, and ultimately provided Douman with his safest professional-facing haven for his utterly destructive behavior.

And now the circle came around in full: the top Administration of the largest C++ Slack group encouraged and inspired others to be just as malicious and cruel in their treatment of others. Douman was already sliding down the slope, but after getting himself banned from multiple Rust spaces he spent a good portion of his time in the CppLang Slack, in the Rust channel, railing against Codes of Conduct and whatever else he was inclined to be pissed at. From the tokio Community server to many other places, Douman scourged community after community and was served ban after ban, a rather depressingly impressive feat. And yet the only place his wild-eyed, unscientific rhetoric was embraced in whole?

The CppLang Slack, with the top contributors and most vocal proponents of Boost sitting around him in agreement.

Douman isn’t the only one to behave this way in the CppLang Slack or outside of it: the people responding in that 4chan thread aren’t beep-boop-bots. These are coworkers, “friends”, bosses, and top brass. As of right now, I have been doing Committee-related things for just two years. How in the world am I supposed to fix this kind of problem from the inside?

Crafting a Fix?

This experience and many more led me to understand that there is, unfortunately, nothing to craft. There is no fixing this system from the inside. There is a reason much of the old CppLang Moderation team left the Slack for other places, or just dropped off altogether. They were trying to “change it from the inside”: to make it so people can’t do things as controversial and hotly contested as… (* checks notes *)…

call people “Nigger” or “Faggot”.

That’s the hill the Slack Admins – Boost Foundation members, top library contributors, and others – as well as and jerks like Douman were willing to die on. Not in defense of a really good library, not for the ability to have a “strict, equal meritocracy” and their fantastic Boost Reviews. Their most vocal sponsors thought that this was the Great Ideal To Be Upheld. It might even be tolerable if it was just a “Free Speech” argument, too, but it goes even beyond that. These people want to abuse anyone they feel like at the drop of a hat.

Everyone, not just the “Nogs”

While the 4chan thread is filled to the brim with race-baiting and existential angst, what they – and apparently, many other people who commented on the video missed – is that this problem affects everyone.

Take, for example, the section discussing the public attacks made by Boost members against other Committee members for their work. The people who were attacked where not Black, or women. They weren’t even from a marginalized culture: they were white, cis, heterosexual men – in some cases, married with children – working at a big tech company. One of them — Eric Niebler — had contributed to Boost for well beyond a decade: he talked at the very first Boost Con, represented Boost ideals to the Standards Committee, and is one of the most celebrated names under Stepanovian Algorithmic thinking, right next to Conor Hoekstra and Sean Parent!

Still, top Boost contributors used baseless ad-hominem and other gross personal attacks to assault Eric Niebler and his coworkers. If they are willing to do this to a white, cis, heterosexual, and male contributor who had participated and given a large chunk of his life to making the Boost Community better,

what in the world do you think they will do — and have already done — to you and me?

See, at the end of the day, the toxicity won’t just destroy “the niggers”. It won’t just destroy women. Everyone is on the chopping block. Beneath these “rules”, being a 10+ year proven contributor engaging on technical merit means little to nothing. There’s no way to fix that kind of culture “from the inside”.

If the rot starts at the head, removing the head means ultimately destroying that culture. There is no way the head — and the body that takes orders from it — will agree to its own destruction when refusing reform. This is why the old moderators’ attempts and the double digit number of folk asking these communities to be better affected no change. Douman didn’t flourish because Douman is some exceptionally crafty creature: Douman excelled because CppLang wanted a person like him to excel, even if it came at the expense of others. Boost encouraged the environment that resulted in people not wishing to submit reviews for libraries because that’s the kind of behavior they accepted and left unchallenged on their mailing list and in person. It costs them technical contributors and fresh ideas.

“Just Talk To Them Privately”™ 💬

Like other milquetoast suggestions that people love to direct to me, this was already attempted. Multiple times, in fact, with all the delicacy and privacy we could afford! By The Burning Silicon, I do not have enough fingers OR toes to count how many people AND how many times people talked to them. Some had to do it “many, many times” and one participating member said:

I have done it twice. The N word was uttered after I started confronting them once and then when others joined in.

Keep in mind, the person speaking and many others are not the veterans or the experts here. They’re not even the old, burned out moderators. These are – were? – newcomers to the Committee, newcomers to Boost, and newcomers to C++ trying to interface with the veterans. Junior software engineers, Undergraduate and Graduate students, and others who walked into the C++-o-sphere with the expectation to contribute something useful. Instead, they’re running “basic human dignity” check ups for 30 to 40+ year old, fully grown adults.

How deleterious does your community have to be that complete newbies to the community are forced to do basic community handling? How is it that nobody at the highest levels was ever willing to ask their most prominent, money-loaded people to stop being assholes? What happened to every set of rules that boiled down to “don’t be a dick”?

The Cost

Ultimately, what ends up happening is we outsource community management and harm reduction onto the most vulnerable and powerless. It is our careers and forward progress that we’re supposed to put on the line, navigating the deadly maze of properly reporting these sour behaviors. And the powerful and well-settled, who can afford to call out the behavior and be no worse for the wear? Well, even if they knew about it, why bothering saying anything? Don’t rock the boat, and all that!

How surprised are we, really, that we burned out Brian Heim of the Supercollider audio project, or other promising young potential Committee members, from working with the Committee or Boost? Bryce Adelstein Lelbach’s success rate for volunteers-to-prominent-C++-work was close to 70%: all Boost or any other organization had to do was literally pick up these talented young folk and do the barest minimum to accept them. And yet, despite the bar being beneath hell itself, we managed to not only trip on it but in doing so stumble-kick it at the face of willing contributors. Brian Heim was a volunteer through C++Now, who met all the requirements of a great Open Source contributor and more that volunteers are evaluated for. They met these people in person, and only needed the slightest inclination that they would be taken seriously… and we still could not get ourselves together for just one (1) e-mail.

Yet, I’m supposed to sell marginalized folk on the most elite of the C and C++ communities!

Cost: The Whisper Network

One of the most prominent developments one can see during a power imbalance is what is known as a “Whisper Network”. It’s different from the traditional “rumor mill” or “gossip vine” in that it exists as a tool of the weak to protect themselves and, maybe others, from a usually abusive strongperson. The organizational structure, for some reason, has given outsize power to the abuser and they use their standing and community-afforded protections against their victims without reproach. The reaction of the abused is to crystallize their trauma and, when they feel safest, hand that information out to others.

This is, strangely enough, how my first conversation around optional<T&> went in the Committee:

I was perplexed and confused. Despite probing a few people here and there to verify did my e-mail actually send?!, I received little to no information about why everyone was so quiet… until a sudden DM later after the survey was published:

… Thanks for pursuing this. Regardless of what comes out, it’s a worthwhile effort and it’s probably going to be brutal.

… Uh. Excuse me?

Nobody officially replied to my e-mail in public, but everyone had an opinion they wanted to whisper to me privately on the subject. It’s not as high-stakes as a real abusive situation, but it’s indicative that the conversation around the topic as toxic or, indeed, “brutal”.

This was the same thing that happened after I released the video.

E-mail after e-mail. Signal message after signal message. “Well, this bad thing happened!”. “Since you’re here and I can trust you, you might as well know…”. “I’m leaving tech, and here’s why…”. On and on: a smörgåsbord of grotesque behavior from every part of the the broader programming community, brought to me like I had smashed the “order” button on every trauma delivery app I could get.

The cost of the Whisper Network is, of course, a lived experience. Someone has to remain in the abusive organization and somehow survive the abuse, while building up an institutional knowledge. They then dispense this information whenever some conditions are met, to select people. This notably fails if you are the first or the only one to experience the abuse. If the first person burns out, then the abuser gets even more power because nobody knows what happens and the whisperer is gone, leaving the abuser the maximum good faith to work with for their next victim. It also fails if the whisperer can’t get to you in time, to warn you of the behavior or slip you inside information that could protect you or your work. Or, they can simply decide you are not worth the risk of exposure, since the core pillar of the Whisper Network is secrecy from the abuser.

All of these are imperfect means to managing a toxic environment.

Fighting the Root Cause

Even if it is a tool, the presence of a Whisper Network belies a toxic community where people cannot speak freely without incredible backlash on normal, technical subjects (see: what happened to Eric Niebler). One of the easiest ways to not allow a strongperson of abuse to take hold and the Whisper Network to start is to craft a community that makes it clear that, from the beginning, the most vulnerable people can always confide in the most powerful and have their concerns meaningfully addressed. For CoSy, that means at the bare minimum the buck always stops with me. I can’t claim to be the most learned or the best, but with Shepherd and many others behind me I can promise you that your concerns will be addressed and accountability will be recorded, for each and every one of our events.

This does not mean anonymous people will have an unlimited hammer to wield against anyone they so choose. Closer to the conference, we’ll be releasing some guidelines and talking about some helpful tools in helping you catalogue abuse, especially in the context of a virtual conference environments.

Building More than just C++

The reason CoSy is going to be a Systems Programming conference, and not just a C++ conference, is because these tales extend far beyond the C++ ecosystem as I have alluded to above. The harassment at Python conferences (at the highest levels of personnel, not just attendees), C shops, C++ game development studios, user groups run in Germany, discrimination in South Asia, .NET programmers struggling, Rust whisper networks protecting abusive individuals, Web Development communities doing some awful trash, literal bruises-on-body domestic violence in InfoSec and IT conferences and communities… how much abuse are we, as a community, willing to accept? I would like the answer to be “None”, but increasingly I’m finding the answer to be an unholy metric ton too much.

In Perfect Honesty

I cannot lie to you: I would love nothing more than to just attend CppCon or C++Now or MeetingC++ and pretend like everything is okay, like I did a year ago. That is far and away much less work than having to run interference on several communities hellbent on ignoring its own cannibalistic practices towards many kinds of developers. Still, as famous “Anon Anon” was quick to yell out for everyone to see in the fabled YouTube Comments Section™:

Anon Anon comments: "You can make your own spaces for whoever you want, that is fine. Just don't bother white people about it. Why are there talks about minorities in conferences attended by white males for example? Talk to minorities about your minority issues, stop bothering whites about everything. Must we do everything for everyone?"

I mean, if you insist! And while it’s tempting to take the racists at face value:

4chan post commenting: "Give him an all jogger conference then. Segregation is what we want anyways."

No, we won’t be excluding white people, or males, or whatever other weird arbitrary bullshit line you want to come up.

We will be excluding knee pancakes like you and Anon Anon, though!

We’ll build something, for the good folk. There will be a place where we focus on the technology, and worry only about the content of our characters. We’re going to get there. I’m going to make a comfortable conference, surrounded by a strong policy for equitable and fair treatment that Boost and its peers have failed to live up to.

See you at the CoSy-est conference of 2021. 💚