In January 2020, I told two members of Racket’s core team that I would no longer be contributing to Racket or participating in the Racket community. Why? Because of a history of intentional, personalized abuse and bullying directed at me by another member of the Racket core team: Matthias Felleisen.
No facts were disputed. The incidents were numerous, happening over a period of years. They were always witnessed by others on the Racket core team. For that reason, there’s no need to enumerate the details now. Though I will give one example as illustration—
I was at Racket School 2018 in Salt Lake City, UT. The Racket core team had invited me to teach material from Beautiful Racket about lexing & parsing. I would be responsible for one full day of instruction during the weeklong program.
I agreed to do it because I thought it would be good for Racket. I put in about five weeks of unpaid labor preparing my material. I covered my own travel expenses. In short, the gig was neither cheap nor easy.
After the second day of Racket School, the Racket core team and I met to discuss how the day had gone. For whatever reason, Felleisen was dissatisfied with the teaching that day. He started listing his complaints with escalating irritation. I myself hadn’t taught yet; I wasn’t on the schedule until later. Nevertheless, Felleisen eventually swiveled his rage in my direction, verbally impugning my skills and qualifications, and suggesting that however bad things were, I would only make it worse.
The ambush was mystifying: sudden, unprovoked, unjustified. I had literally done nothing that day! But worst of all was its performative cruelty. I was in the room with the Racket core team. I was an invited guest. A volunteer. Despite this, Felleisen clearly took pleasure in demeaning and belittling me in front of this group.
Of course, I did push back on Felleisen. But there was a limit to how hard I could push. Again—I was merely a guest. In the moment, I was struggling mostly to keep my emotions in check. I did assure him that his fears about my future performance were unfounded.
After the incident, I was stunned and shaken. I wanted to leave town immediately. (Remember—this was not the first or last time Felleisen would come after me, though it was the most personal & vituperative.) But the show had to go on. I muddled through the rest of the week. I didn’t let it affect my teaching. At the end, the students gave me the best evaluation scores of all the instructors—Felleisen included.
I should’ve felt great about my preparation & performance. I didn’t. The experience had been ugly and dispiriting. When I returned home, I seriously considered quitting Racket entirely.
Felleisen never apologized. Nor did any member of Racket’s core team hold him to account. Everyone just shrugged and moved on. I was encouraged to do the same.
For a while, I did. Rather than quit Racket, I thought—don’t let the bully win. I persisted another year or so. I returned to teach at Racket School 2019, subject to the condition that I be allowed to teach a separate class, largely so I could avoid Felleisen. It was better. But still not great. By the end of 2019, my stamina was depleted by the accumulated strain of negative incidents.
Why mention any of this now? Two reasons.
Over the last year, friends in the Racket community have asked me why I’ve reduced my involvement. Absent anything else, they assume the most obvious reason: that I’m bored or frustrated with Racket as a language. That I’ve moved on to other things.
Not true. On the contrary, it seems important to reassert: I like almost everything about Racket. It’s still my favorite programming environment. I use it almost every day. I wish I could still contribute the way I did before. But I can’t subject myself to more of the same. In that sense, it feels more like exile than withdrawal.
I’ve been involved with FOSS projects for nearly 25 years. A project that depends on free contributions of time & effort—as every FOSS project does—needs to be an appealing place for others to make gifts of their time. Sure, in any community of opinionated humans, occasional frictions and disagreements are natural. But Felleisen’s outrageous hostility went far beyond anything I’d experienced.
Despite the passage of months and years, I’ve found it hard to shake the negative feelings from these interactions with Felleisen. Why? It’s not because I’m a fragile flower. I’ve navigated plenty of difficult people—LA lawyers, SF venture capitalists, et al.
I’ve realized it’s because I’m still giving cover to the bully by providing what all bullies crave: the silence of their targets. Because silence makes it easier for bullies to avoid consequences and move on to their next victim.
It’s apparent that Felleisen has avoided accountability for a long time. I’m far from his only target. I’ve seen him verbally abuse and heckle others. I’ve heard other accounts privately. But I’m only part of the cover-up if I choose to be. So from now on—I’m not.
BTW, I expect nothing about Racket to change based on what I’ve said here. (That wasn’t the point anyhow.) Felleisen is a founder of the project. Other members of the core team don’t attempt to defend his behavior. Indeed, one of them admitted to me “Matthias is a pain and always has been.” Plainly, they’ve already calculated that the benefits outweigh the costs. That part is out of my hands.
In general, I have a strong aversion to sharing any kind of personal or confessional anecdotes on the internet. I’ve made an exception in this case because the concealment is worse.
Today, I’m a reasonably well-adjusted adult (or at least my dog thinks so). But a long time ago, I was a fat and dorky and smart kid. Because I grew up in suburban New Hampshire, these were huge liabilities.
For years, I was physically and verbally bullied at school. One time, I was sent to the hospital for stitches after a kid bludgeoned me with a sharp hunk of ice. Another time, a kid stubbed out his cigarette in my back. Every school recess was like being sent to the prison yard, waiting to get jumped. It was relentless and terrifying.
But as was true for a lot of kids like me during that era, computers were a refuge. Computers never judged me. They rewarded my curiosity. And other kids that liked computers didn’t see me as fat and dorky. They just thought I was cool. That was a first.
I learned early on that when you tattle on the bullies, they come for you twice as hard the next time. The only workable tactic was to distance yourself and hope they found someone else to pick on. In my case, they did. But I’ve never forgotten that other kids—especially kids whose differences stood out more prominently than mine did—weren’t so lucky.
Felleisen’s attacks negatively affected me for a long time. Partly because that’s the expected result of deliberate cruelty. But also because programming was always a place that felt insulated from the bullies. It hurt to be reminded that wasn’t true.
As for Felleisen himself. I don’t know him well. Over the years, we’ve also had some friendly interactions. I wouldn’t say the toxic side of his persona is the biggest part. Though it does make the biggest impression.
Now that I’m no longer a fat and dorky kid, it’s easier to feel a little sad for bullies. Their defining characteristic is a certain isolation and unhappiness, which eventually curdles into a self-fulfilling cycle. They want others to suffer as they do.
As for Racket. I’ll keep using it. I’ll just restrict myself to the periphery, where most of its users are. I’ll also continue to maintain & update Beautiful Racket, because I know that it’s introduced thousands of programmers to the possibilities of language-oriented programming. That project is much more important than whatever water has gone under whatever bridges.
Still, a thorny question remains: can I endorse Racket without implicitly condoning the abusive behavior? It’s a close call. In FOSS projects, I think we should weigh the software on its own merits, at a remove from its developers, who may be people we don’t find particularly lovable or even likable. Because once code is put under an open license, the inventor doesn’t control the outcome. On the other hand, Felleisen is the self-styled leader of the Racket project, not some incidental figure. His behavior sets a tone within the community.
Today, I have a large labor investment in Racket. Rejecting it entirely would mean abandoning software that’s critical to my work. That, in turn, would only increase the burden on me. It’s more than I can absorb right now. Thus, I’ve chosen to limit my Racket involvement strictly to using the software. The rest, I ignore. For me so far, that compromise has sufficed.
All abuse, harassment, and bullying is unacceptable. It is merely violence by other means. For that reason, I’ve shared my experience. Others can take from it what they will.
A day after I posted this piece, Felleisen contacted me privately by email. Part of me wants to share his message as written, because it was such a strange mix of conciliation and hostility. Also, I don’t want to mischaracterize anyone’s words.
On the other hand, I believe in the norm that private communications should remain so, unless everyone agrees. Here, however, that norm has been weakened, because Felleisen already misused privacy & secrecy in our interactions. Bullies crave silence.
So I’m going to paraphrase his message. If Felleisen feels mischaracterized, I give him permission to publish it.
Felleisen said that he was “shocked and saddened” by what I’d written and that he had “admiration and respect” for me.
He complimented my contributions to Racket.
He did not apologize.
He did not confirm any part of my account of his behavior in July 2018, simply saying “I do not recall any rage and I certainly wouldn’t direct rage at you.”
He said he did “not understand” certain “other phrases” in the piece. But he invited me to meet with him one-on-one to “listen” to my “concrete explanations”, to help him “recognize” what I was saying.
He did not mention the numerous other instances over the years where he had treated me poorly. (I gave one example above. But my exit from Racket was due to his campaign of bad behavior, not one incident.)
The best I can say: I believe Felleisen was sincere in his compliments and his desire to find a way to move beyond these events. I’ve said that Felleisen and I have had friendly interactions in the past. That part is not a surprise.
The worst I can say: by refusing to acknowledge any aspect of my account—let alone offer an apology—he convinced me that I was being steered toward an ambiguous non-resolution where he’d tell me we had to agree to disagree about what happened, or that I was just confused about his intent, etc.
Particularly weird was his request that I provide “concrete explanations”. What was this whole piece, if not a concrete explanation? Furthermore, there were four other people in the room on that day. If Felleisen wanted to check his recollection, he could talk to any of them. If I totally got it wrong, he could then publish a piece called “MB Totally Got It Wrong”.
A day after his first response, Felleisen posted an “Apology” on his personal website. No idea how long it will remain, so I will include the complete statement here:
1 2 3 4 5 6 7 8 9 10 11 12 13
Dear Matthew Butterick, you wrote on your blog that I had bullied you. Allow me to respond: I am truly sorry. After talking to two team members who recalled our staff meeting at the 2018 Racket Summer School better than I did, I think I can put myself into your shoes now. That day, the presentations hadn’t gone the way I thought they should have. We got together for our assessment meeting. I think of everyone in the room as an equal in such settings, and I expect them to see themselves this way. I clearly forget that I am the oldest and most experienced—and I should act this way in a post-mortem conversation. But I didn’t. I got emotional and overly intense during the meeting. I must have directed angry words at you, who clearly had nothing to do with how the day had gone. And this hurt you and it definitely jaded all of our interactions from then on. For this, I apologize. Let me add that I am grateful that you wrote in the spirit of “I am still using Racket, and I don’t want anyone to think otherwise.” It must have been difficult to weave these two thoughts together. So, thank you. Finally, as you surely recall, I encouraged you throughout 2019, in person and in email, to join the Racket leadership; I even proposed you could replace me. I always thought that your experience and your outside view would seriously improve our work. I still think so.
The best I can say: Compared to his first response, Felleisen’s tone has changed dramatically. As I hoped he would, he consulted with two people who were there. He confirms that my account of the event is accurate. He apologizes—twice. If anyone was unclear on the meaning of bullying, Felleisen describes it exactly: he admits that he leveraged his position as the “oldest and most experienced” person in the room to get “emotional and overly intense” toward someone who “had nothing to do with how the day had gone” and that it caused “hurt”.
The worst I can say: it’s been almost three years since this particular event, and nearly 18 months since I withdrew from Racket. This apology would’ve meant a lot more the day after. Better late than never? In one sense, I suppose so. But in the interim, I had to carry the burden. That included having to give up something I loved (namely, participation in Racket).
BTW, Felleisen refers to past statements where he suggested I replace him in Racket leadership. I do remember these comments, which as he says go back several years. But I’ve never actually been invited to join Racket leadership—nor has Felleisen stepped down, obviously—so I’m not sure what to make of it. It’s a compliment based on a hypothetical? OK. But a compliment, however kind and genuine, cannot itself absolve years of miserable behavior.
BTW2, the fact that Felleisen posted his apology on his personal website and not, say, the Racket mailing list is a little strange. Putting this as gently as I can—Felleisen’s personal website is a place that most people in Racket visit once, and thereafter maintain a respectful distance. Indeed, I only found out about the apology from an anonymous internet comment. But better than no apology at all? Of course.
Since I first posted this piece, my inbox has filled with other stories of Felleisen’s misbehavior. I’m not going to characterize them because they aren’t my stories to tell. Though some will come out, I’m sure.
What’s notable is that people have been confiding in me—an internet stranger—because they are plainly terrified of Felleisen and the consequences he will orchestrate if they speak out against him. Most of them are in academia or PL research. A number of them are already in a more vulnerable position because of their nationality, gender or sexual identity, etc.
Initially, it felt good to unburden myself. Now I feel newly revolted.
I’m aware that being a white American male—who depends on Felleisen for nothing—gives me a protected position to speak from, and insulates me from the hottest blowtorches of anonymous internet enmity. (Given that advantage, some may wonder why I didn’t speak up sooner. I have no excuse. Like those who have written me recently—I was afraid.)
In one sense I appreciate Felleisen’s apology. But in another sense, I worry—is it merely a privilege dividend? Because it’s apparent that the event I described here is just one hurt inflicted by a person who’s apparently racked up way more than his fair share over the years. Again, this is not merely hearsay—in addition to my own experiences, I’ve witnessed Felleisen’s mistreatment of others.
Peace, as Dr. King put it, is not merely the absence of tension, but the presence of justice. At its grandest, that idea can apply to societies and nations. But on a smaller scale, it can apply to any community structured around a shared set of values.
Even if the tension between Felleisen and me is reduced, that alone won’t put the Racket community into a state of justice. Racket has adopted certain values against “personal harassment”. Those need to be practiced and enforced. Or they’re worthless.
If Felleisen can’t or won’t adhere to these values, then he should step down from Racket leadership. If other members of Racket leadership won’t enforce these values, or won’t hold Felleisen to at least the same standard as everyone else, then they should step down too.
It’s hard to write that. Racket leadership consists of people I personally like and very much look up to on an intellectual level. But what other principle is defensible? On its current path, Racket may be consigning itself to becoming nothing more than a weird cult at the edge of the FOSS jungle. It’s well past time for Racket to stop thinking in terms of what will be lost by living up to its own principles, and consider what will be gained.