Down and Out in Statistical Computing

By Os Keyes

This is the writeup of some events that happened last Monday, around the R community, and what I’m doing about them.

TL;DR: I’m resigning from all of my responsibilities and positions in the wider R community and ceasing development of new R packages. I no longer have faith that the R Foundation is capable of or interested in creating a safe and welcoming space for statisticians, scientists and programmers, and do not wish to offer support to an infrastructure lacking these capabilities and interests.

R and I

I have been an R developer for around 4 years now. As a programming language, it was the first one I got very, very deeply into - not just the experience of writing it but the weird quirks, and the wonderful community on Twitter and elsewhere. It taught me how coding works, how coding communities work, it led me inexorably into writing C++ and Java and Python and…pretty much anything else I use. R is what I use, every day, as my go-to for my entire job and most of my recreational work.

This isn’t something I’ve been able to do because I’m brilliant (heck, I’d argue that compared to a lot of the community, I’m pretty dim). This is something I’ve been able to do because there are a load of tremendously smart people, like Jenny and Hadley and Dirk and Martin, doing work to create an environment where statistical computing is powerful and intuitive. And in appreciation for this I’d like to think that I’ve given back a lot more than I’ve taken: on the code front I’ve developed or helped develop 21 packages, downloaded over 33,000 times, and currently have an R Journal paper in review covering some of them. I’ve given talks on my experience and my work at Northeastern, UNH, UseR itself and several other venues. I’ve written a geolocation mirror service for the CRAN team.

Outside of that I’ve done my best to create a more welcoming environment: I serve on the Scholarship Committee for UseR 2016 Stanford and the R Foundation Task Force on Women, have written a load of things in blog or twitter form about the need for a stronger community and a more representative Foundation, and helped Kara Woo and Gavin Simpson draft the open letter to the R Foundation that mandated a code of conduct for real-world events. With all of that I think it’s fair to say that while I’m not a Hadley, I’m at least a moderately-useful member of the community.

R and inclusion

Rewind a week, to last Monday: I’m wandering around Twitter seeing what everyone is up to, reading through, and spot a tweet that immediately makes me headdesk. It points to a line in the R source code containing a variable called, with all seriousness…

iGiveHead

I don’t think that this is an intentional sexual reference - far from it, I’m certain it’s just due to an absence of familiarity with one particularly crass English idiom, and I have only ever known the developer who wrote the code (whose first language is not English) to be entirely proper, entirely reasonable, and the model of what a productive Core member should be.

But it needs to go anyway: it’s exclusionary as all hell to have language like this in the core implementation and we can’t expect people to instantly understand intentions.

So I grabbed the latest development version of R, generated a patch that changed the name, and submitted a bug report with the patch that made clear I didn’t think this was anyone’s fault and I was sure it was unintentional and there were no accusations of sexism or bad intent in play here.

At the same time I realised that these concerns are often subjective, and a very frequent response to them is something along the lines of “you’re being over-sensitive”. Some of the smartest people in the world read concerns like this in other projects in that way, because they don’t quite get the role that subtle context and microaggressions like this play in exclusion. So I poked some cool people like Mikhail and Noam and Steph and asked them to chip in on the bug report if they had opinions.

The Core response

Pretty quickly, two email threads kicked off. One involved a lot of members of core individually asking me to stop tapping people in (apparently every Bugzilla email bothers all of core) and explaining that my suspicion that it was unintentional was in fact correct.

The second - oh, the second.

The second was a set of emails from Duncan Murdoch, President of the R Foundation and an R Core member, in which he dismissed my “bug report” (note the skeptical scare quotes he put on it) “about some variable name that you find offensive is clearly an example of nothing more than shit-disturbing” and stated that myself, and those who had commented in favour of changing it, were no longer welcome to participate in R’s bug-tracker.

I independently confirmed that our accounts had been banned and locked - as had the bug, and replied to Duncan explaining my thinking and motivation and asking in what capacity the ban had been made.

The variable name is still there. I never got any reply to my email.

The result

So: unintentionally offensive variable name leads to a patch and the indication that it is much more than one person finding it offensive, leads to the President of the R Foundation dismissing the concerns as “shit-disturbing” and punishing the people who surfaced said concern.

That’s not an environment I want to be a part of. That’s not an environment I want to contribute to. That’s not an environment in which I can have any faith that there is a strong interest in creating a safe and inclusive space for computing.

Accordingly I am withdrawing from active contributions to the R community. I am not spending my emotional labour on a space that is unsafe, and I am not using my reputation (as limited as it is) to create the perception that this is a great place to be (although the wider community is, genuinely, wonderful).

What this looks like:

  1. I am not developing any new R packages. If it’s not on CRAN, it’s going away. I will not develop more going forward.
  2. I am not developing new features for my existing R packages.
  3. I am resigning from the R Foundation Task Force on Women. While the individuals involved are lovely and brilliant, I cannot implicitly endorse the Foundation as a solution to problems here after an incident like this one. I wish them the best of luck in creating the world we want to see.
  4. I am resigning from the Diversity Committee of UseR 2016 Stanford. Again, this is no fault of the team there (which is great).
  5. I will not be attending UseR 2016, or any others.

What this does not look like:

  1. For the sake of the 33,000/N users of my R packages, I will continue providing fixes to active bugs or compatibility problems for those I have already written - unless CRAN kicks me out next, of course.
  2. I will probably continue using R in my day-to-day until other options become available. Python’s approach to statistics is very clearly programmer-driven, and if Julia’s ecosystem was an actual ecosystem it’d be a superfund site, so there aren’t other options there yet.

So that’s where I’m at. If something genuinely substantive happens - reversing the decisions that have been made, patching the problem, patching the other obvious problems, and acting in such a way that it is clear concerns around inclusion will actually be taken seriously by the people running the show, it may change. But for now I’m tapping out of giving my free labour to support an ecosystem administered by people like this. I would encourage other people to do the same. Our time, all of our time, is too precious to deal with bullshit for free. I’m going to spend it on making the world better in small ways instead.