Make Functional Programming Better by Supporting the Ada Initiative and Petitioning the ACM

we reached our initial $4096 goal in just 5 hours! Can you help us raise it to $8192 and double what we hoped to raise?We've now exceeded our goal of $8192, six hours before the end of the challenge! Can you help us bring it up to $10,000?





Clément Delafargue, Adam Foltzer, Eric Merritt, Chung-chieh (Ken) Shan, and I are orchestrating a community challenge to both raise money for the Ada Initiative, and make computer science conferences (specifically, the many technical conferences that the ACM (Association for Computing Machinery) organizes) better. We are challenging anybody who identifies as a member of the functional programming community to do two things:

Donate to the Ada Initiative, a nonprofit organization that is working hard to make it broadly possible for women and people in a variety of other marginalized groups to work in technology. Call on the ACM to consistently publicize their own anti-harassment policy for all its conferences. That is, I'm asking that those -- at least those of you who use Twitter -- tweet a statement like the following one (use your own words, just include the #lambda4ada hashtag and try to include the donation link): I donated to @adainitiative b/c I want @TheOfficialACM events to announce their anti-harassment policy. https://supportada.org?campaign=lambda #lambda4ada

Our goal is to raise $4096 $8192 $10,000 for the Ada Initiative by 5:00 PM Pacific time on Friday, September 19. If you use the URL https://supportada.org?campaign=lambda, your donation will count towards the functional programming community challenge and help us reach the $4096 $8192 $10,000 goal. I have personally matched the first $1024 of funds raised -- that is to say, I already donate $80 per month to TAI, so over a year, my contributions will add up to $960. On Tuesday, Sept. 16, I donated an additional $64 to round the amount up to $1024. I've spent the past couple years struggling to pay off student loans and medical bills despite being generously compensated for my work -- nevertheless, I support TAI every month because I see it as an investment in my continued ability to work. I hope that my example inspires those who have a bit more financial freedom than I do to donate accordingly.

If you are reading this and you have benefited from your involvement, past or present, with any part of the functional programming community, we need your support. It is up to you how much to give, but we ask that you consider how much you have gained -- materially, intellectually, socially, perhaps even spiritually -- from what you have learned from functional programming and from the people who love it. Particularly if you are currently making your livelihood in a way that would be impossible without the work of many people who have and are making functional programming languages great, consider giving an amount that is commensurate with the gift you have received from the community. If you need a suggested amount and are employed full-time in industry who is using functional programming or doing work that wouldn't be possible if not for the foundations laid by the FP community, $128 seems pretty reasonable to me -- and at that rate, we would just need a total of 32 people to donate in order to reach the goal. I think there are far more people than that who do FP for a living!

If anybody assumed that Clément, Adam, Eric, or Ken endorsed anything in the remainder of this blog post, that assumption would likely be wrong. In what follows, I am speaking only as myself and for myself. I am an employee of Heroku, a Salesforce company, but neither Heroku nor Salesforce endorses any of the following content either. Likewise, I don't necessarily agree with everything that Ken, Eric, Adam, or Clément might say in support of this challenge; we are all individuals who may disagree with each other about many things, but agree on our common goals of supporting the Ada Initiative and raising awareness about the ACM anti-harassment policy.

If you've already gone ahead and made a donation as well as tweeting your support under #lambda4ada , great! You can stop reading here. If you're not sure yet, though, please read further.

Why ICFP Is Fun... For Some

Young man, there's no need to feel down

I said young man, put that old journal down

And come publish at... I - C - F - P

It's fun to publish at... I - C - F - P



When your lambda is tight, and your theorems allright

You can come, on, down, and publish at... I - C - F - P

You know I'm talking 'bout... I - C - F - P



There's a place you can go, and lots of friends that you know, at the I, C, F, P.

-- Nathan Whitehead, paying homage to The Village People

ICFP, functional programmers' annual "family reunion" (to borrow a phrase from one of the organizer's of this year's ICFP, which took place two weeks ago) feels to me like more than just an academic conference. The lone academic publication that I can claim (second) authorship for appeared in ICFP, but it's more than just the opportunity to hear about new results or share my own that keeps me coming back. Maybe that has something to do with the affiliated annual programming contest, or the copious number of co-located workshops revolving around different language communities, or maybe it's just about folks who know how to keep the "fun" in functional programming. It's a serious academic conference that occasionally features cosplay and [PDF link] once had an accepted paper that was written in the form of a theatrical play.

The image is from OOPSLA, but was the only Creative-Commons-licensed image of Lambda Man that I could find; from Flickr user drjason.

Wouter Swierstra's introduction to the "Future of Haskell" discussion (about 5 minutes in) is as good an example of the humor and compassion of our community as any -- it was part of the Haskell Symposium, which is co-located every year. Wouter, who was program chair for this year's symposium, describes the Haskell community (and by extension, I think the FP community) as a "safe place for academic discussion that fosters dignity and respect". I think that's accurate for the most part, and I think it's largely because of early members of the community who set a good example and continue to do so. As Wouter says, "we don't see many evil trolls".

Wouter Swierstra presents a great moment in Haskell IRC history

Even so, Wouter goes on to point out that while Haskell may mostly lack the openly vicious, hostile sort of troll (the kind that's the scourge of the gamer community among others), the community does have a problem what he calls the "smart-aleck" troll. I recognize the behavior patterns he points out in the talk: they manifest themselves in condescension, willfully using inside jokes in front of people who you know won't get them, sneering, and superficially-helpful answers that are intended to display dominance through performative intelligence rather than to engage with another person. I think many of the "smart-aleck" trolls may genuinely believe they are helping, but in practice, they are stuck in solipsism, lost in worship of their own intellectual abilities and unable to connect to or relate with another person. Many of these people are relatively new to Haskell themselves and may be channeling their own impostor syndrome into a performance of exaggerated intellectual superiority that -- because most of them are men -- easily manifests itself using the tools that boys and men are taught to use for displaying dominance. As Wouter said, "we didn't cause it, but it's still our problem".

It is this uptick in what Wouter called "smart-aleck trolling" that inspired Gershom Bazerman to publish his "Letter to a Young Haskell Enthusiast" in August, in which he wrote:

The hardest thing, and the second most important, is to put aside your pride. If you want to teach people, you have to empathize with how they think, and also with how they feel. If your primary goal is to spread knowledge, then you must be relentlessly self-critical of anything you do or say that gets in the way of that. And you don't get to judge that — others do. And you must just believe them. I told you this was hard. So if somebody finds you offputting, that's your fault. If you say something and somebody is hurt or takes offense, it is not their fault for being upset, or feeling bad. This is not about what is abstractly hurtful in a cosmic sense; it is about the fact that you have failed, concretely, to communicate as you desired. So accept the criticism, apologize for giving offense (not just for having upset someone but also for what you did to hurt them), and attempt to learn why they feel how they feel, for next time.

While neither Wouter nor Gershom said so explicitly, I think they are both talking about a social justice issue. While anyone can potentially have an unpleasant experience with a smart-aleck troll that can turn them off of functional programming for good, people who have already spent their lives being told they're not smart enough or good enough are particularly vulnerable to intellectual shaming. (Again, I use the word "shaming" to refer to the effect of this type of trolling, the intent being almost completely irrelevant.)

Likewise, last year's Haskell Symposium program chair, Ken Shan (also one of my fellow lambda campaigners) said in his PC report:

There are some specific ways in which the Haskell community has not been welcoming. We have harmed people disproportionately—I know; I have talked to them—due to how society is set up and their gender. We have harmed people disproportionately due to how society is set up and their race. Or their sexual orientation. Or differences between their gender and assigned gender. Or maybe due to the fact that not everyone grew up in their parents' garage hacking category theory at age 14. So, if you see harm—if you feel unwelcome—you. are. not. alone.

Putting The Fun Back in Functional Programming... For All

While I've quoted people speaking about the Haskell community because that is where I come from, the problems they describe are pervasive in the functional programming community as a whole. The main thing that makes Haskell different is the level of popularity it has attained, with the accompanying influx of new converts. If you stop reading at this point, just remember that making the functional programming community more inclusive will help the community grow bigger and stronger; it will also help more people put their talents to work, people ofraces, nationalities, genders, ages, abilities, and romantic and sexual orientations.The functional programming community has been good to me. I want everyone to have access to what I have found by, in large part, going to ICFP and getting to know some of the people I met there: a livelihood, a career, friendships, relationships, even a sort of chosen family. As a 16-year-old, I got interested in programming language theory and implementation, and particularly in functional languages, for one reason: because I took CS 251, Theory of Programming Languages, from Prof. Franklyn Turbak (aka "Lyn" or "Captain Abstraction" ). A few years later, over the summer I had the chance to get paid to do research, while still an undergrad, as part of the Lumberjack Summer Camp , organized by Lyn and by Prof. Patricia Johann (who I thus knew before she made it big ). Later the same year, I found what, it soon became clear to me, was my intellectual home when I attended ICFP in Montreal as a senior undergrad. I can't overstate how important it is, in an embarrassingly personal way, to have found the sense of belonging that I found in what some might regard as an esoteric scholarly pursuit. I am a child of refugees; while I've always had a place to live, I will probably never really have a home. The closest thing that I've found to a home or a family -- aside from some small corners of the trans and queer communities -- is this community of people who value a particular way of using mathematics to think about computation and vice versa, and have built a loosely knit collection of cultures and cottage industries around it.

When I say that I want everyone to have access, do I mean that I think everybody should be interested in functional programming? No; there are a lot of jobs in the world that need to be done, and very few of them involve programming at all, much less our particular flavor of it. I'm talking about equality of opportunity, though that is inseparable from equality of outcomes. The distribution of demographics that you see in the Haskell Symposium audience (to pick one example) is radically different not just from the underlying population, but from academic computer science as a whole (hardly the most egalitarian field) too. This isn't and can't be because women just would rather work on databases than on programming languages, or because Black, Latino and Latina Americans would just rather study machine learning rather than type systems. If we had equality of opportunity, I think the faces in the Haskell Symposium audience, in the aggregate, would look very different. The change would not be subtractive -- no one would leave unless they wanted to. It would be additive. Based on my own experience, I think it's relationships that largely determine what a young scholar becomes interested in, more than any sort of innate characteristics. If Lyn had evangelized for a different sub-field of CS, then that would probably be what I was doing now. I think many people have a similar story of one or two people who were influential in their lives and steered them in their initial direction. The opportunities that I've had mean that I am fantastically lucky. I've had some adverse experiences both in my programming career and in my life as a whole, but it's not worth dwelling on them, because for me, ultimately, the privileges I've been granted have meant much more. I see my trajectory as having to do more with caring people who took an interest in me (where the interest was mutual) than with the nuts and bolts of a specific set of technical skills. I love what I do now, and if things had gone differently, I might be doing very different work and loving it just as much. I don't see anything wrong with that.

I'm emphasizing the importance of relationships rather than innate interests because a common derailing tactic for diversity discussions is to say "well, what if women just aren't interested in computer science?" Or "what if women just aren't interested in programming languages?" Or, "what if women just aren't interested in writing Haskell?" Or, "what if women just aren't interested in studying the equational theory of monadic recursion schemes?" I'm exaggerating the specificity of these claims to show how risible they are, but I think it's true that the goalposts continue to move -- once, the argument was more likely to say that women just didn't want to do CS (an absurdly ahistorical argument, since women once dominated computer programming and were systematically forced out as part of professionalization, the process that birthed the term "software engineering" for what was conceived of as clerical work when women did it). It's hard to say that with a straight face now, so instead, insecure and territorial men harness biological essentialism to claim that women just don't want to study the more mathematical parts of CS, or that women really want to do work that involves talking to other people (people saying this apparently believe that you can do research without talking to other people). It's hard to imagine how they say that with a straight face, too, given that mathematics has far more representation of women than academic computer science does as a whole, and that in many nations other than the US, mathematics is conceived of as a "girls'" interest.

We can shut down this form of inquiry-resistant speech if we notice that patterns of who is interested in what have a lot to do with relationships. And so, if we are interested in inclusion and diversity, we have to look at how relationships form and who is more likely to enter into a mentoring relationship with whom. Personally, I have no doubt that a lot of my very early success arose from having access to mentoring that I had largely by virtue of being a student at a historically women's college. Amusingly enough, I was not a woman, but many people perceived me as one, so if I'd been an undergrad at a place like MIT or Stanford, I suspect I just would have gotten ignored -- out of male grad students' or professors' fear of being accused of sexual harassment (seeing students who one believes to be women as lawsuits waiting to happen rather than as people wanting education seems fairly common), or simply from a preconceived notion that my body shape marked me as someone not interested in theoretical computer science. (Both schools have women CS professors, of course, but statistically, I would have been likely to spend most of my time in classes full of male students, taught by male professors.) At my undergrad institution, though, because almost all students were women, the baseline assumption was that at least some women would be interested in computer science, and in any given sub-field of it, so the kinds of relationships that foster career development actually happened, and continue to -- between students, and between students and faculty.

Microaggressions: A War of Attrition

As a general rule, computer scientists and programmers could do well to appreciate the importance of relationships -- rather than innate interests -- for community-building. When you are a newcomer to a community and you are made to feel unwelcome, like you don't belong, it's hard to build relationships. And when you have been in that community for a while but you are still subject to a constant stream of ambient microaggressions, the cumulative effect of those microaggressions is to stress you out, potentially making you physically and psychologically sick -- at which point it would be a very reasonable decision to leave.

When do you feel unwelcome? When do you feel like you don't belong? I don't know about you, but I feel this way when somebody makes a remark that is othering to me, whether they are addressing it specifically to me or not. Here's an example from the second time I went to ICFP, in Pittsburgh in 2002; I'm quoting verbatim from a blog post I wrote about it at the time.

The keynote speaker this morning was Brad Myers of Cornell, who gave a talk on making functional languages more usable.... As an illustrative example at the beginning, he said, "All the men and women in the room, raise your hands." Almost everyone raised their hands. I did not. Then he went on to say that if anyone didn't raise their hand, it must be because of the ambiguous meaning of the word "and". If you're going to be pedantic (i.e., if you're a functional programmer), you can interpret that sentence in two ways: "if you are a man or you are a woman, raise your hand."

"if you are a man and you are a woman, raise your hand." Neither interpretation would have resulted in me raising my hand. As more or less any group of people but a group of geeks would know, "and" is far from the most ambiguous word in that sentence!

A few things have changed since then: at the time, I identified as genderqueer, and now, I know that I am (and was) male and simply wasn't comfortable asserting that at the time. That's beside the point, though, because even though I'm not genderqueer, many peopleand would have felt just as othered as I did by Myers' example. The other thing that's changed is that I'm now aware of just how many geeksunderstand that not everybody is a man or a woman, and that some people's genders include"man" and "woman". Nevertheless, I've seen perhaps a dozen examples, especially in talks about databases, that -- in order to make some abstract point and relate it to everyday life -- assume that everyone has a single binary gender marker that never changes, or that marriage is between one man and one woman.

This kind of othering is an example of a microaggression. On its own, such a comment would have little effect; the problem is the cumulative effect of hearing people say things, over and over, every day, at work that amount to either your non-existence or to denial of your agency or autonomy. The problem is also the frustration of having peers who say they want more diversity, but fail to ever use their privilege to call out people who make these remarks. That leaves marginalized people with the burden of deciding whether to risk humiliation by speaking up, possibly without support, or internalize more pain and frustration by remaining silent. Neither option is appealing, so really, the apparent choice is a non-choice; this is an example of oppression. When people get frustrated and decide to seek out a more welcoming community in which to make their living, that's one reason why.

I would rather not be talking about diversity. It's not what I like to do the most.

I would rather not talk about diversity, inclusion, feminism, gender, race, and sexuality with my colleagues. The difference between me and -- say, the young male graduate student who attended Wouter's Haskell Symposium talk and later tweeted something to the effect that Europe didn't have a good record when it came to distinguishing people based on race and gender -- isn't how interested we are in lambdas, type theory, theorem proving, compilers, or whatever happens to make our synapses light up. We both are. The difference is that I cannot do my job while ignoring the constant drone of small -- and occasionally big -- indignities and violations that make my friends who are also my colleagues sad and, sometimes, drive them out of the field altogether. Sometimes, as a queer trans man, I am collateral damage in the war against women in tech -- more often, I just can't tolerate what's being done to people I care about. Most of these indignities and violations are not intentional, but that doesn't lesson the effects they have on real, living people. If you are skeptical about diversity discussions, please understand that all of us who talk about diversity just want to have fun (in the same geeky, abstract ways that you do) -- we just can't stand by idly while our colleagues carry prejudices from the larger world into our community and enact them on our friends and us.

Microprogressions: How The Ada Initiative and Conference Codes of Conduct Are Helping

Pardon my vanity.

So far I've talked about problems -- what about solutions? Well, people should be able to talk about what's bothering them without being expected to solve the problem at the same time -- solutions are the responsibility of the people causing the problems, not the people reporting them. Even so, there is a positive step towards change, and actually, this step has been taken already:

institute a conference anti-harassment policy

The Ada Initiative (TAI) has done extensive work to encourage tech conferences to adopt codes of conduct and anti-harassment policies (AHPs), and over the past few years, that work has been fruitful: a large number of tech conferences (including academic, industrial, hobbyist, and those that span multiple realms) have adopted anti-harassment policies. Many of these policies are directly adapted from TAI's model AHP.

The ACM already has an AHP adapted from the Ada Initiative's model policy, and the ACM's AHP already applies to conferences sponsored by the ACM, including ICFP. The problem is that at least when it comes to the conferences that I tend to go to (ICFP, PLDI, and POPL), I doubt very many attendees are aware that the AHP exists. While in the case of severe incidents, it's still useful to have the policy as a guideline for what to do about people who willfully and unremorsefully violate it, I think that most people are well-intentioned, and want to behave respectfully. AHPs help people who want to do the right thing but don't know how (which is to say, all of us, at one time or another), by giving us guidelines for doing so. So, they prevent incidents before they happen, which is clearly preferable to remediating them after the fact. This past year, ICFP-affiliated events included at least two incidents of people making comments that made the environment less welcoming and inclusive. In one of these cases, the person making the comment issued a public apology, and I believe in both cases, awareness of the AHP ahead of time would have resulted in the individuals thinking about what they were going to say before they said it.

How You Can Help

So as members of the functional programming community, we are calling on anyone else who identifies as a member of our community to take two positive steps for change. We are particularly calling on people who (according to their own self-assessment) also belong to multiple majority groups that are dominant both in computer science and in their local community as a whole (for example, a white cis man in Boston, Massachusetts would be a member of at least three majority groups that are dominant in both). You may have noticed that us five initial bloggers are all men -- this is not a coincidence. Women do plenty of the work of diversifying communities already, so my call for contributions is mainly addressed to those who feel that the system as it is has worked well for them. We, and the Ada Initiative, will be very grateful for donations from anyone in the community who feels they can afford to donate. I just think those of us who have an unearned advantage from male privilege should do our fair share.

Donate to the Ada Initiative in order to help sustain TAI so that they can continue tirelessly carrying out their mission -- which is not focused specifically on functional programming but nonetheless has made our community manifestly better (as witnessed by the direct connection between the ACM AHP and TAI's model AHP). Not only do you get the satisfaction of helping pay for the work they're already doing for us, if you donate $128 or more, you get an awesome sticker "Not Afraid to Say the F-Word" sticker. If you use the URL https://supportada.org?campaign=lambda , your donation will count towards the functional programming community challenge and help us reach the $4096 $8192 $10,000 goal. Call on the ACM to consistently publicize their own anti-harassment policy for all its conferences. I have already spoken with members of the ICFP program committee and they are enthusiastic about taking this step for ICFP in the future -- specifically, by putting the text of the AHP in the conference booklet, making sure in advance that all speakers are familiar with the AHP, and requiring acknowledgment of the AHP as part of the conference registration process. So I 'm picking a more ambitious goal: encouraging the ACM to make sure that all of their special interest groups (SIGs -- individual SIGs within ACM run specific conferences -- for example, SIGPLAN, the programming language SIG, runs ICFP) do the same. To be concrete, I'm asking that those -- at least those of you who use Twitter -- tweet a statement like the following one (use your own words if you prefer, just include the #lambda4ada hashtag and try to include the donation link): I donated to @adainitiative b/c I want @TheOfficialACM events to announce their anti-harassment policy. https://supportada.org?campaign=lambda #lambda4ada If you feel like doing more, tell your friends in the community about this campaign. The most effective way to do so is through individual, direct communication (e.g. a personal email or taking to somebody face-to-face), but tweeting about it and using the social media of your choice to publicize it is also helpful. If you feel like doing even more, write a blog post about your own reasons for joining the challenge, tweet it with the #lambda4ada hashtag, and let me know about it so I can edit this post to link to it. (You can do that by leaving a comment on this post, tweeting at me, or emailing me.)

In the FP community, we will have an easier time with this particular step along the way to inclusion than some other communities do: for one thing, a code of conduct already applies (at least to ACM-sponsored events; for the moment, I'm not addressing events such as local meetups and user groups, but I hope that there will be a ripple effect). We do not have to have an exhausting debate over whether codes of conduct should exist in the first place, something that has strained many communities. Rather, it's a matter of being good semanticists and making explicit what most of us expect in the first place.

Also, at least as far as I can tell (and my perspective is skewed by having been seen as male for exactly half the time I've been doing functional programming -- the more recent half), we do not have a big problem with the most grotesque and overt forms of harassment, so we're doing a lot better than many tech communities. We are also overtly courteous much of the time; we don't have anything resembling the repulsive, toxic "griefer" culture that is currently tasking itself with driving women out of video game development. Those are two huge assets.

We do have a problem with inclusion. The audience at any ICFP or Haskell Symposium talk I've ever been to looks even more uniformly white and male than the tech industry as a whole, or even academic computer science as a whole, and that's saying a lot. I think that's connected to the problem with "smart-aleck trolls" that Wouter pointed out at the 2014 Haskell Symposium: while many of them may have completely good intentions, these members of the community function to patrol the boundaries and keep out people who don't pattern-match as being vaguely similar to people who are already inside. That's harmful.

I'm suggesting that we support TAI as well as calling on the ACM to systematize their conference anti-harassment policy not because I systematically went through all things we could possibly to do make our community more inclusive and picked the two biggest and most important ones. (I didn't do that thing.) Rather, I picked these steps because they are concrete and actionable, and to me, it's more important to do something about the problem than to do nothing -- at least when it comes to social justice, aspiring for perfection later can be the worst enemy of doing something good today.

I began this post by quoting Nathan's ICFP song, which I think is cute and funny. But just to be clear, it's tongue-in-cheek. ICFP, and the community for which it serves as a gathering place, are not just for "young men", even though it would be a reasonable conclusion to draw empirically. It's for everybody who loves language, elegance, formal systems, rigor, puns, humor, logic, and beauty. The only criteria for being at the table ought to be caring about a flavor of intellectual work that prioritizes those values, and willing to treat anybody else who also cares with the respect and dignity due to any human being. Let's work together to turn that "ought" into an "is", and support the Ada Initiative as they make technology as a whole a safer place in which to be a human being.



