I’m going to tell two stories about the Ruby community. One happened this past May (2018), and another happened in 2007. Both are about the Ruby community. Both are about what we did and what we stand to lose. Both are about trolls and how we handle them.

One story is small, recent and has a happy ending. One story is old, ugly and cost us something we can never replace. If you want more of the first kind of story, please sit and listen to both stories. The second one is important and uncomfortable, and I hope I never have to start saying, “please listen to the last two ugly stories.” One is plenty.

I have a moral later, and you can skip that if you like. But I have the two stories, and I hope you will not skip those.

Spring, When a Young Man’s Fancy Turns to Impersonating Ruby Core Members

Not long ago, we suddenly got a new Ruby Core member. We were all quite surprised.

The photo, though not the name, was from an existing Ruby Core member. He has a perfectly good name and has not, at last count, changed it. The words in Japanese just say he’s an open source contributor. Which he is – at least, the member of Ruby Core whose profile was copied and renamed.

Our gentleman here suddenly showed up to let us all know that Sarah Mei was a terrible person and we should exclude her from our communities (specifically the Brighton Ruby Conference) immediately.

There was a bit of spirited defense of Sarah – we like Sarah, and she does a lot for our community. And a bit of well-meaning, “friend troll, if you find Sarah Mei to be too much then Brighton Ruby and its organizers may not be for you.” There was also a bit of… not that. I didn’t go through and see whether the ugliness was all trolls and bots. It wouldn’t have to be. There are a lot of humans around. If you want an extra voice to say “person X sucks!”, it’s never hard to find one of those.

And so we had a bit of mudslinging at one of our core community organizers, who has thick skin and shrugged it off with aplomb. Thank you, Sarah! I’m sorry we needed this from you, but I’m grateful. I admire how you handled it.

There was some spirited back and forth between the community members (henceforth: “our side”) and the troll. I’ll give some fun examples later. Find your fun where you can, you know? I learned a bit and you might too.

In the end things simmered down, both sides lost interest, Twitter closed the troll’s account and we all got back to normal. Sarah’s giving a talk on The Evolution of Types at Brighton Ruby in a couple of days.

A happy ending, as such things go.

An Older, Uglier Story

A few of you old-timers and diligent readers may remember Kathy Sierra. If so, you know where this is going.

Kathy Sierra was wonderful. I’ve yet to find anybody else who writes on her topic, let alone at her quality. What she writes is a bit about user interface and product design, a bit about user psychology. It’s about onboarding and pacing and instruction, and… Nobody else writes what she writes. Her book is using her technique to teach her technique and is impossible to adequately describe – just read it. She used to write a lot more. She used to be part of our online communities, when that was an approximately tolerable experience.

She had a huge effect on David Heinemeier Hansson and Ruby on Rails. She was a teacher of Sarah Mei, and of Amy Hoy, and of many other folks who built up our community and taught (and still teach) our developers. I’m a student of Amy Hoy’s. So is Justin Weiss. And Jim Gay. And Joel of egghead.io. And many, many more - likely hundreds, but I only know the 40-ish on my Amy Hoy alumni mailing list. Kathy Sierra added a huge amount to our community. Then she basically stopped in 2007, and is only finally, slowly coming back to occasionally speaking in public. She’s off social media, for very good reasons.

And that’s our fault - all us old guys in the programming community and the Ruby community.

Let me talk about our mistakes. Because if you repeat them, it becomes your fault too.

Kathy got a certain amount of harassment, as does every woman who dares to be well-known on the Internet. But at some point, she was specifically chosen as a target by Andrew Auernheimer (“weev”) and his fan club. You’ve heard many variations on this story before. But keep in mind: Kathy was your people. Kathy helped the Ruby community like few others. This was the teacher of my teacher, and the teacher of Sarah Mei. How many Amy Hoys did we lose? Because for each Amy Hoy we lost, that’s a hundred prominent Rubyists that contributed far less. My book, Rebuilding Rails, came from Amy Hoy’s class. The same is true of Jim, Justin, and many others. If we’d lost Kathy before Amy, how many Ruby books and videos and classes would have silently never existed? The book I wrote, without question.

What were our mistakes?

Kathy Sierra was attacked a lot online. Insults, of course. Death threats. Eventually her personal information (address, social security number, a wide variety of fun slanderous lies) were released for trolls to attack her. If you followed GamerGate, it was approximately their playbook years before GamerGate existed.

We didn’t defend her. My own pale excuse was that I was barely on social media. I mean, I wasn’t going to harass her or anything, but this didn’t concern me. My head was down and I was doing my own thing.

Oops, I guess?

For the people who were on social media, it looked like the worst parts of the happier story above. A few attacked her. A lot of people ignored the whole thing. Nobody really wanted to look at weev, a known Internet celebrity, and say he wasn’t allowed to go after a well-known woman tech blogger. I mean, maybe it’s some kind of personal beef and not misogyny?

By the way, men of social media circa 2007 who defended weev…? You know that whole “the misogyny thing is overblown” deal? As we have since discovered, weev is literally a nazi. These days he’s the sysadmin for The Daily Stormer, which takes its name from Der Sturmer, a sort of People Magazine for literal Nazis in 1940s Germany. It’s one of the largest neo-nazi communities online. If you were calling for “listening to both sides” because maybe he had some well thought-out technical reason… I hope you have reconsidered whether that was a good idea.

For a mercy, I did not call for “listening to both sides.” I have been young and stupid, including not defending people who deserved it. But I skipped that specific mistake by being in the wrong place.

Where Are We Now

Wouldn’t it be nice to look at these two stories and say “look how much we’ve learned?” Wouldn’t it be wonderful to say “we’d never do that again?” Or “it’s all fixed?”

Let’s not. That would be a very bad idea.

We did have Rubyists venting their unspecific frustrations there. There was some lack of solidarity.

But more importantly, our troll was an idiot.

He impersonated a Ruby Core member but had no idea what that meant. He decided that using a Japanese alias would cover him but he knew nothing about Japan. He changed his bio repeatedly but didn’t even make a new Twitter account, giving ample reasons for suspicion. He used specific-sounding names and titles, then reverted to acting offended when people acted as if he had said them.

Our enemies will not always be so foolish.

“Enemies?” Isn’t that a bit melodramatic? Nope. They’ve taken some of our best and brightest from us. They’re coming for more of them. “Enemy” is exactly the right word. But our loss may yet make us cautious. “The soldier who has lost two fingers will not misplace the other eight so quickly. It is his comrade with a full set of digits that will soonest lack a limb.”

Morals, Tactics and Entertainment

You know the moral here: defend those who contribute to our community. If you’re ungrateful and apathetic they won’t keep helping us out. And the pillars of our community have enemies coming for them – especially if they’re the kind of people who get harassed online (e.g. women, transgender folks, gay people.) And while the people coming for them won’t always be literal nazis, you really can’t trust their motives. And would you rather make sysadmins for The Daily Stormer welcome in our community, or people who actually do the work? So: not too painful to sit through, right?

But you read this far for examples of stupid stuff the troll did, not for the moral, right? Let’s do that.

By calling Sarah out publicly on a well-trafficked thread, he was asking for allies. That didn’t go too well – we’re a small, tight-knit community and we appreciate people like Sarah who put on conferences for us, give talks and otherwise help us out.

(Do you have to be a liberal to love this? I’d argue not. You want people doing good things for you in the Ruby community rather than being chased off for daring to be a competent woman, right? Alternately: liberal or conservative, this is maybe not a guy you want to voluntarily associate yourself with.)

He tried to attack back as if people not liking him were attacking “Japanese culture”, but in an amusingly tone-deaf way. So that didn’t go great either.

And when that didn’t go well, he retreated back to whining about how the Ruby community is a toxic cesspit of big bullies. You know, after starting off the way he did. I love to call the people I’m trying to convince names as a method of persuasion, don’t you?

Okay, so that was the “low-skill troll, good community defense” feel-good section. Go team!

Next let’s talk about the parts we need to worry about.

In other words, would you like to get smarter for the next troll, who may be better at this game?

What If They’re Not Quite This Bad At This?

Here are some things the troll did right and/or we did wrong.

The troll is playing for the later audience, not to you at-the-moment. He wants to look good in retrospect and in screenshots. He doesn’t care about the people he’s actually debating. And this guy’s griefing and comment-deletion were both pretty good. For instance:

Jorge does a great job here of being restrained and careful. Those “Tweet unavailable” gray comment lines are the various awful and incendiary stuff the troll was saying in between. If Jorge had taken the bait, you can bet the troll would have screencapped the result and added more “look how toxic the Ruby community is” posts. The troll in general had a lot of parting shots trying to do exactly that:

I wish I’d thought to screenshot some of the ones he tried on me. But he’s a troll - outright lying, insults and so on are exactly his playbook. And if you engage on the same terms, you’re helping him out. I feel like we collectively did a good job on this, but… Watch out. Again, this guy was bad at what he did, and we were not perfect. When somebody’s needling you and you want to reply, figure out how your reply will look after he deletes his. Because he’s going to.

(Tactical addendum: screenshot things, because they may get deleted.)

Your Own Words

Related: expect to have a lot of your own words thrown in your face in awful ways. If you can, try to ignore it. I don’t mean “treat it like it didn’t happen.” I mean don’t engage with it. If it happens to somebody else, try to be supportive of them.

The problem with traditional-style “Don’t Feed the Trolls” is that it leaves their targets feeling unsupported and like they can’t talk about it. May I recommend not responding directly to the troll, but making it clear you’re on the target’s side?

With that said, expect awfulness of this general kind (n.b. Adderall is prescription ADHD medication, mostly similar in effect to caffeine):

Defense and Proportionality

Related to both “your own words” and “playing to the audience”… Try not to react too hard to the troll directly. Keep in mind you’re writing a collective narrative for later readers. The troll is annoying, but he’s like a minor Disney villain - trying to get a rise out of you, but not really the threat.

I two-hundred percent understand where this guy is coming from, but… Try not to let trolls get under your skin, if you can.

But… What Do We Do?

Right now, there’s a lot going on to make you unhappy. No matter where you’re at online or on the political spectrum. If you’d like to keep your community healthy… Don’t let things slip by. Show up.

One thing I don’t recommend is immediately going to talk to the person who is targeted. They’re probably already awfully busy. A comment on the thread is fine, but if you don’t already know them, this isn’t the time to introduce yourself.

But be around, and make it clear that attacking the central figures of your community is not a winning strategy. Because if you understand what you’re losing, it really shouldn’t be.