Regarding the deplatforming of John de Goes Seth Tisue recently brought to my attention that he and a few prominent members of the Scala community have been contemplating taking the stand of boycotting conferences which invite John de Goes to speak. As a conference organizer who has invited both John and Seth to speak at my conference this year, this has put me in a situation where I’m forced to choose which of them I would rather have speak. It has furthermore become apparent that projects John is involved with have been removed from the Community Build, maintained by Lightbend. I had a chance to talk to Seth at length about the no-platforming idea recently, and we had a very friendly, productive and amicable chat about it, and I’m very grateful that he gave me his time on the matter, though we ended the conversation agreeing to disagree. And with Seth’s agreement, I have now also spent time talking to John for a number of hours about the matter, and what follows serves to report back on my discussions with each of them, and circulate my own feelings around the issue. As I understand it, there have been no decisions yet on whether this should be an “official” action against John endorsed by any groups within the Scala community, or if it should be limited to private discussions conference organizers, but Seth and I agree that it would be difficult for it to be actively applied while remaining secret. Background As Seth has clearly explained to me, the motivation of the action is threefold: John made the decision in 2016 not to uninvite a speaker to his conference despite learning that the speaker was a known racist who had publicised white-supremacist ideas under a pseudonym, and in 2017 invited a keynote speaker who was discovered to hold sexist views. Despite receiving heavy criticism for these decisions, John has never apologised publicly. John has a competitive and even “bellicose” style in conference talks and online forums (for example on Twitter), and no hesitancy to criticise other software on technical grounds. John has chosen to associate himself, through the Scalaz organization on GitHub, with a brand created by Tony Morris, someone who is widely (but certainly not universally) considered to be “toxic” to the Scala community. I hope these are a fair representation of the complaints Seth has levied against John.

While I support Seth’s right, and the rights of other members of the community to take action (and I would go further in saying that I have a lot of respect for anyone who confronts something they believe is wrong, rather than turning ablind eye as I am often more liable to do), I ultimately believe that taking such an action of attempting to deplatform John de Goes will be have an effect which damages the Scala community for several years to come. Criticism

The problems I see with this action are as follows: 1. John de Goes has made a number of significant positive contributions to the Scala community, and a majority of participants in the community recognize this, and support his work This point is amoral in respect of John, but made only with respect to the effect on the Scala community: it should not be underestimated how little support there would be from most members of the community for any action against John. From my experience of visiting almost every Scala conference in the last couple of years, most attendees do not consider John to be anything other than a strongly-opinionated but valuable member of the community. He is popular, encouraging, and people recognize his positive contributions, and either don’t know about, don’t care about, or would rather forget the historical incidents which have given him a bad name. John has also been particularly successful at attracting and retaining female contributors to the Scala community. In a community which is already notable for having very few women participating in it, a significant proportion of those who do participate can (and would be happy to) cite John as being at least partly, and sometimes wholly, responsible for their involvement. I don’t need to speculate that they would be extremely disappointed by other members of the community taking any action that might be detrimental to John continuing the activities which helped them to participate in the Scala community. John runs a mentorship program for women, people of color and other minorities in the community, in which he devotes some of his free time to supporting them online, through conference calls, chat sessions, working on producing good pull-requests to his open-source projects. John also offers free attendance to members of any minority group on his functional programming training courses, and he ensures that no such member is ever turned away from LambdaConf for financial reasons. Having attended LambdaConf in 2015 and 2017, I can attest that in 2017 a greater proportion of the attendees at the conference were women than I have seen at any other Scala or FP conference I’ve been to, including many conferences which have a strong focus on diversity and inclusion. Unfortunately (and I don’t like to put any undue weight on any single phrase that anyone has said to me) but I’ve more than once heard this described as “Stockholm Syndrome”, with the implication that John takes the role of “captor” and the minorities he mentors as “captives”. Of every aspect of the criticism directed at John, I find this narrative most problematic because of the implication that the minorities are deluded, under some spell, or can’t make decisions for themselves. It’s patronising and everyone really needs to think again before ever repeating this.

Aside from Martin Odersky, John is the most widely-recognized member of the Scala community in a number of different forums, and has done a lot to legitimize Scala as a viable functional programming language. He has been unafraid to support Scala in forums where it receives criticism, and after getting involved in discussions around Scala 3, he has been and intends to continue being broadly supportive of the program of new features in Scala 3. He is working with Martin Odersky to this end. At a time when Scala is going through a critical transitionary period, it is more important than ever to have voices like John’s on-side. Yet I have no intention of becoming a blanket apologist for John, and I continue to disagree with some of the decisions he has made. But the community at large, including the non-vocal majority judges him and will continue to judge him primarily by what they see. This isn’t for me to influence or not; it is simply an observation: we share the community with many people who are disinterested in John’s nontechnical decisions. And this disinterest may exist for many reasons: ingrained cultural differences, familiarity with certain styles of political discourse in their home country, or even everyday experience of greater atrocities, can all make John’s rhetoric and actions appear tamely irrelevant. In this context, a coordinated pact targeting John, regardless of any noble intentions behind it, will appear to the majority of the Scala community to be nothing but vindictive. I don’t think it will reflect well on anyone choosing to be involved. Others will criticize it as “bullying”, a term I strongly dislike because it captures only the gregarious nature of the action, and not its good intent. But it will nevertheless be used. 2. Misrepresentation of John I’m aware that there has also been a dangerous conflation between John’s belief in the primacy of freedom of speech, and the beliefs of those whom his belief enables to speak. In the most simplistic terms I sometimes see John treated (usually on Twitter) as morally equivalent to a racist. It does a disservice to everyone’s intelligence to proliferate this lie. I consider the decision not to uninvite Curtis Yarvin from speaking at LambdaConf in 2016 to have been the wrong one. That’s my opinion, and John knows it well. I think he misjudged the standard that the functional programming community holds its speakers and organizers to, and that the mere presence of a white-supremecist at LambdaConf will have made other attendees uncomfortable. I think that burden should be borne by LambdaConf itself: the decisions organizers make about conferences define how those conferences will be perceived, and who will attend, and I believe LambdaConf suffered because of this.

But I also realise that John’s decision was taken on the balance of one strongly-held principle against another: that speakers should be judged only on the technical merit of their proposals. I disagree with John’s decision, but I defend his right to make it. But holding a strong opinion about a particular concept of fairness is not morally equivalent, by any stretch, to being a racist. 3. The action causes greater harm to the community than to John de Goes I know from personal experience that running a conference is a significant undertaking for anyone. It takes up a huge amount of time, causes stress and incurs personal risk, and this is often a best-case scenario. Most of the Scala conferences which take place each year are run either by volunteers like Gorazd Kosmus or by small companies like 47 Degrees which are committed to Scala. I think that we should be doing everything we can to encourage and support these events. Having John de Goes as a keynote speaker is one way that many conferences have been able to attract attendees in greater numbers over the last year or two. The same is true of many other great speakers who may be considering this action against John. Each of those conference organizers would now be handed two additional burdens: Firstly, to create a compelling conference program with the additional constraint that certain speakers cannot appear together on the same program. And secondly, the more significant personal burden of being forced to make a hard binary decision which may involve choosing one set of friends over another. This is the decision I’m faced with right now, and it’s not one I want to make. It sows discord within an otherwise-friendly community. It is divisive by definition. It does nothing to bring cohesion to the Scala community. It does nothing to encourage new events, or to retain existing events. It does nothing to make me want to run Scala World in 2020. I have also spoken to several companies involved in the Scala community, and they have an overwhelming desire to be seen as “neutral” in any disagreement arising from the community. These companies are important to the Scala ecosystem, some of them are sponsors of the Scala Center or conference organizers. There is no desire from any of them to be the subject of any divisive action which could reflect badly on them. 4. Intolerance of John’s tone or style is not an acceptable criticism While many people find John’s tone and style of communication overly aggressive, I believe that it falls well within the window of acceptability, albeit at the opposite end of the spectrum from the one I try to occupy. I believe that a lot of other people in the community see John’s style as I do: entirely acceptable. John has a style I choose not to imitate, but that choice is precisely my own style, and I am happy to be judged on its merits. I’m not happy for someone to judge the merits of my style on behalf of other people who are not given the chance to do so for themselves. I don’t think John would feel any differently about this.

John has occasionally asked gadflyesque questions of others in the community. Again, this is never a style I would adopt, but the correct response to such questions is for the recipient to heed the implicit criticism. Furthermore, there are many examples of key figures elsewhere in the technology industry (not to mention society at large) whose presentation styles make John’s look unremarkable; Elon Musk and Steve Jobs are celebrity examples, but even within the Scala community itself, other members, whilst not as “loud” as John, frequently use a similar tones. Li Haoyi and Alexy Khrabrov, whom I have no criticism for, are examples. On 25 March, I watched John deliver a ​keynote at Scala UA in Kyiv, and without exaggeration, I do not believe that anyone watching his talk could find a single phrase in his delivery to criticize. Whilst this talk may have been an exception, and I haven’t watched every talk he has given, is this example, John’s style was entirely acceptable. Occasionally, though, John will tweet something less principled: most recently, this was a combative criticism of the Scala Days program committee for not selecting his talk. It’s since been made clear to me that the program committee simply didn’t want John on the program (regardless of the merits of his submission), and in that context, it’s hardly unsurprising that John would be angry. But the tweet was still inexcusable, and realizing this, he nevertheless regretted it and removed it shortly after writing it. This compares favorably with many users on Twitter who can barely get through a single tweet without using an expletive, and John’s tone in conversations has never been anything other than polite and courteous. If people actually listen to and read what John says, he’s combative and confident, but he’s far from the apotheosis of combative overconfidence that he’s made out to be. 5. No effort was made to correct the behavior first The goal of the no-platforming action against John is, I believe, to improve the “welcoming feel” of Scala community, and that should not be forgotten. It should not be confused with a very different goal of “removing John from the community”. If the goal is truly to improve the community, and if its proponents truly believe in that goal rather than simply removing John from the community, then there should be a set of conditions on John which would be considered an acceptable compromise were he to accept them. If the stated goal is the true goal, then every action taken by its proponents should be made in the expedient pursuit of that goal. So I was disappointed that the action was proposed without any attempt to find such compromise with John de Goes. And for this reason, I approached John de Goes on 6 April to discuss these issues.

Remedial action When I actually spoke to John about the three criticisms levied at him, he was willing to discuss and try to improve the situation with all three. 1. LambdaConf Controversies John admitted to having made mistakes around the speakers at LambdaConf 2016 and 2017, and went further than I would have expected in admitting fault, in particular with respect to how he responded to certain people involved with the LambdaConf controversies. It’s not my place to pass on John’s regret for him, and he said that he has been planning “for a while” to write a blogpost in which he addresses these mistakes. But I have communicated to John that in it, he needs to demonstrate that he is fully and viscerally aware of the hurt that many people felt and continue to feel as a consequence of the speakers at LambdaConf 2016 and 2017. He needs to show empathy with people who do not share his privileged status and who are greater affected by his choices than he would be. Not only is that going to be difficult, but it will be difficult to convince readers of John’s sincerity in such an apology. He expressed two concerns to me about this. Firstly, that any attempt at an apology would be seized upon for any perceived omission by those who already disagree with him. And secondly, that he would appear to be apologising only in response to the actions that are being taken against him, which would undermine its impact, and the independence and sincerity with which he wishes to write it. On both points, I feel that the lack of any apology at all is far worse, and if such an apology is forthcoming from John, I would beg that anyone reading it does so in good faith. 2. John’s Combative Style John showed self-awareness of the nature of his tone and style, but acknowledged (as I do) that it is part of his identity. People don’t like to be tone-policed. We discussed some detailed criticism of his style and John made a suggestion that he writes down his own set of “red lines” describing his public communication which he is prepared to adhere to. He suggested that one of these should be that he always directs criticism at software, not at people, and that these red lines would prohibit, for example, his (subsequently deleted) tweet to the Scala Days program committee. John has told me that his presentation style has already changed (for the better) in recent years, and he anticipates that it will continue to evolve. It is in his interests for his presentations to be well-received, so there is the motivation. 3. Association with Scalaz

John told me that he had no particular attachment to the Scalaz organization, but he said that any changes he makes will only be done in consultation with the other contributors to Zio. He has, however, in a move he claims is unrelated to our conversation, secured the “zio” GitHub name and will move the Zio project away from the Scalaz organization on GitHub. I think that this should be viewed as an extremely positive move. These responses may not go far enough for everyone, but I hope that everyone sees it as progress, and progress that has come about as a result of dialog. I only wish I didn’t have to be the person initiating that dialog. Subsequent developments Upon receiving this original ultimatum from Seth, with a heavy heart, I suspended the invitations of both Seth and John to speak at Scala World. Irespect anyone’s right to take a stand on matters which they hold dear, but I won’t accept interference from another speaker in the way I run my conference. The issue Seth raised with me was not an issue covered by the conference Code of Conduct, but I intended to treat it with the same due process. It was my desire that either both John and Seth should speak at Scala World, or neither should. Whilst preparing this response, it was announced that I would be giving a Scala training course at LambdaConf in June, and Seth decided that for this, and a combination of other reasons, to withdraw from speaking at Scala World under any circumstances, in particular because he was no longer looking forward to attending. This is, of course, his prerogative, much as it saddens me to have any speaker feel this way about an event I organize. Regarding the training course at LambdaConf: delivering training in Scala is how I earn a living. I don’t have an employer, and I have no income or savings other than that which comes from training. So I rely on this as a means of surviving while I spend most of my time writing open-source software. Historical Context Following comments I made at the end of Scala World, a few members of the community approached me at various conferences to voice their distaste for what they see as unnecessary “drama” in the Scala community, which they perceive as damaging to Scala, and damaging to their enjoyment of Scala. The nature of my speech in 2017 appears to have given many people the confidence to talk to me about issues which concern them, and so I hear about issues like this at most events I go to. Aside from actions already discussed, actions which people have cited to me as having damaged the Scala community include:

Typelevel forking the Scala compiler

unilateral removal of Tony Morris’s Github commit rights to Scalaz

intense debate around John’s code of conduct (“FCOP”)

negativity towards Scala from Paul Phillips

banning of Sam Halliday from various forums These occurrences of infighting in the Scala community over the last few years, between people in the community who hold strong views about what they believe is right, but who invariably refuse to accept that different people may hold alternative viewpoints, seem all too common. And unfortunately, parties on both sides invariably choose to double-down on their opinions, instead of seeking to find compromise, seeking to better understand the opinions of others or seeking to persuasively change the opinions of those they disagree with. Although I unequivocally share many of the opinions with the people I’ve just described, and unequivocally disagree with others, I’m making this criticism across the board, because even many people I completely agree with fail to understand that in a heterogeneous community drawing from a variety of different cultures, that people hold different viewpoints, and cannot change them overnight. As an illustrative example, it took over twenty years for the USA to switch from being a country with little support for same-sex marriage rights to one in which a majority supported it. It took many years of sometimes difficult persuasion for individuals to change their feelings; feelings which had been ingrained over a long period of time. This battle was not won overnight. It was won year-by-year, gradually, through persuasion and understanding, and it was successful. Unfortunately, when people don’t change their long-held opinions overnight, the response I see is impatience and no effort to try to persuade. As for the average Scala user, who cares less than I do, it simply appears extreme, tiresome, and even depressing. We have lost active and valued members of the community, such as Dick Wall, for reasons of infighting. I have heard from existing members who have told me that they’re tired of it. And this is why I take the position I do. Because I believe that by choosing not to alienate myself from those I disagree with, I’m in a better position, perhaps the only viable position, to persuade them to do better. As soon as I close doors to reconciliation, I lose any ability to persuade or influence them. As soon as I refuse to accept any compromise, I lose my ability to incentivize or leverage them. John de Goes should not be in any doubt about why his actions have caused the anger they have. I know now that I can’t count on Seth’s support in this, but I damned well intend to make sure John knows why this is happening to him, now. But I’m also clear that my goal is to make the community a better place, and not to sow discontent amongst its members. Deplatforming someone because of their views should always be a last resort, reserved only for egregious offenders. We should deplatform people like Curtis Yarvin. But a person who believes so passionately in the freedom of speech that he’s prepared to disagree with me on this is not automatically Curtis Yarvin’s moral equivalent.

Forgiveness Viktor Klang shared an observation to me, recently, about the concept of forgiveness, and how our changed online culture does not facilitate forgiveness. The Internet has a long memory, and statements, quotes and documented actions can be cited from five years ago as fresh as they were yesterday. Unfortunately, in John’s case, one decision he made in 2016 has defined him and what he represents. That context, which is inherently subjective, means that every subsequent action he makes may be viewed through different lenses. So when John says something that’s supportive and encouraging to minorities, or endorsing Typelevel projects, it is viewed on its merits, or may be considered in bad faith. Unfortunately, I believe that since many people made up their minds about John de Goes after his LambdaConf 2016 actions. And anything he now does, even his most objectively-positive contributions, is viewed by these people not in the positive light it deserves, but as a confidence trick which is deluding those who do see it positively. This serves only to frustrate his critics who, in some cases, seem to be more angry now than they were in the immediate aftermath of LambdaConf 2016. This cognitive bias is the only explanation I have for the phenomenon that anger towards John has actually increased since LambdaConf, when the strength of emotion towards most events normally diminishes over time. Summary I’ve been forced into a position where I’m being asked to binarily pick a side in a disagreement I have not been party to, while I prefer to see all human relations as complex, nuanced and nonbinary. I have tried, in good faith, to assess the merits on either side of the disagreement, to understand them as fully as possible, and I have tried to use the best of my amateur diplomacy skills to resolve the dispute for the good of the Scala community. Nonetheless, I’ve failed, and Seth has ultimately made the decision for me that John will be speaking at Scala World. In my discussions with each of them, I have found both John and Seth very forthcoming, open to discussion, and accommodating of my disagreements with them, and from my side, both remain friends. I believe that both are very different, but valuable members of the Scala community. I don’t believe that Seth deserves any reprisal for his well-intentioned (with respect to the community, not John) actions, despite my ultimate belief that they’re misplaced.