Archives

Categories

Are Assholes Essential to a Free Software Project?

What do Assholes do?

Rusty just wrote a post titled “If you didn’t run code written by assholes, your machine wouldn’t boot” [1] about some of the anti-social tendencies demonstrated by programmers, including some that are implied to be fairly important. His post seems to imply that there are really great programmers who are anti-social and that we should just put up with it because of their great code.

One of the problems with his post is that he doesn’t define “asshole”. Holocaust deniers and all other Nazi supporters seem to clearly by assholes by any definition. People who have silly ideas about medicine and tell others seem to be merely misguided (although my dictionary gives “stupid or irritating or ridiculous” in the definition of “asshole” so technically they can meet the criteria).

In the comments Rusty states that “nuttiness is relative”. While that is correct it doesn’t seem to have much bearing on whether someone is an asshole. For example I know some very nice people who are utterly convinced by creationism.

Is Anyone Essential to Free Software?

Most projects have one person or several people in leadership positions, usually there seems to be a combination of project management and lead-programmer positions. Such people are obviously quite important to a project. But we have seen examples of people dying, being employed by Microsoft, retiring, relicensing the source in a bad way, and just losing interest without the project ceasing.

It seems clear that in most cases when a project which has a significant amount of use has significant bugs and no maintainer then someone will step in. The cases where no-one takes over the project are often resolved by someone creating a competing project. If no-one takes over an abandoned Free Software project then it’s a strong indication that the project wasn’t particularly important anyway.

I have no doubt that if any bug or missing feature made Linux systems stop booting then someone would fix it quite quickly.

In a more general sense it seems that every time someone takes a position in a project that is of wide interest they are displacing someone else who might have done the job. When you volunteer to do significant work for a project you may be displacing someone who is more skillful than you – this isn’t necessarily a bad thing as there are plenty of other projects to work on, some of which require more skill.

Growing More Programmers

It seems to me that a large part of becoming a great programmer is facing great challenges. People who could be described as “optimistic” or “arrogant” will tend to take on more challenging tasks and therefore learn more. I’m sure that there are a lot of people out there who have the potential to be great programmers apart from not taking on the challenging work, this seems to be an unfortunate waste of talent. Given a large enough population if someone leaves a senior position there should be someone else who can obtain the skills needed to take over. One advantage of this for Free Software development is that even if the best person to take on the challenge isn’t living in the most convenient continent that won’t be an obstacle, while with proprietary software development projects the teams are small and it’s common that no-one else is capable of stepping up to a lead position. Another advantage is that when the lead developer leaves there are generally many candidates to replace them, all of whom can start work and be judged on the work that they do.

I think that the best claims that can be made regarding essential people are not in regard to technical skill alone but to a combination of technical and people skills. Getting a group of programmers to work together is really hard but it’s something that needs to be done for any significant project. Also the larger projects tend not to stand alone, being able to get changes included in other projects requires some skill.

Ben Collins-Sussman and Brian Fitzpatrick gave an insightful talk at Google IO 2008 titled “How to Protect Your Open Source Project From Poisonous People” [2]. The first half of their talk is mostly about people who are misguided or difficult rather than what most people would consider “poisonous” and the second half is more about people who are actively poisonous and need to be removed. They advocate a community based on Politeness, Respect, Trust, and Humility. They describe in detail how the methods they advocate result in the members of their community being more productive, it seems obvious that those principles will lead to better career growth for people within the community and more friendly people wanting to join.

When is being an Asshole OK?

I once worked for a company that apparently had a team consisting solely of assholes. Apparently one asshole got promoted to management and after some internal transfers they ended up with all the assholes in the company on one team. I guess that when someone has negative interactions with everyone they won’t notice the difference if they are put in a team where everyone is difficult. For a corporate environment that lacks a “no jerks” hiring policy this is probably a good way of improving productivity overall. I am not aware of any significant Free Software project that was comprised of mostly jerks – although I have seen a few with dysfunctional environments that encourage the worst behavior from their members.

The smaller Free Software projects have less need for people who can relate to other people. There are many useful Free Software projects which have only one developer, in most cases anyone can take the source code and use it without dealing with the author. But even for a single-developer project an asshole can cause some serious problems. One example I know of concerns a developer who had unclear licenses and started making legal threats in response to a request for a clear license. Another example is of a developer who released code that was designed to not work when one particular user compiled it and redistributed the binaries. Both of them caused some significant amounts of time to be wasted by people who were unfortunate enough to develop systems that interacted with the code in question, and even more time was wasted when some misguided people defended them in the inevitable flame-wars.

Even for a project with only one developer it’s still better for everyone if that developer isn’t an asshole.

One comment I’ve seen related to this issue suggesting that some types of asshole behavior shouldn’t be a problem – an example that was cited is a colleague who cheats on a romantic partner. Jeremy Clyman (who is currently doing a Ph.D in Psychology) has written an interesting article about this for Psychology Today [3]. He reviews the movie “The Dilemma” which deals with someone catching their colleague’s wife cheating. Jeremy analyses the psychological issues involved and how they can (among other things) impact the ability for such people to work. I once worked in an office where two married employees were very open about having an affair and we were all apparently expected to lie on their behalf if necessary, it really affected the quality of the working environment.

Extreme Assholes

There are lots of people involved in Free Software development who are difficult and many who are to some extent assholes. But some of them take being an asshole to the extreme, such as Holocaust deniers (an example which Rusty used). In the comments on his post the Westboro Baptist Church is also mentioned.

It is possible to entirely disagree with someone on a contentious issue such as abortion but still be able to get along with them. But when someone supports a hate-based organisation such as the WBC or supports Nazis in any way then there will be many people who just can’t tolerate them – and no-one should be expected to tolerate such people.

I have seen two instances where Free Software developers advocated pro-Nazi positions (one had an archive of neo-Nazi propaganda and the other claimed that Nazis were not responsible for the Holocaust). Neither of the pro-Nazi programmers was evicted for defending Nazis, but both of them ended up leaving the community in adverse ways – after causing other damage in the mean time.

I don’t think it takes any great ability to predict the future to determine that someone who defends Nazis will eventually end up doing something that requires expulsion and drive away users and developers in the mean-time. There is no possibility that someone can support the Nazi or WBC ideology only when not associated with your project, it will affect all aspects of their life.

When a Holocaust denier is allowed to be a member of a community it also sends out a message that members of the groups which were persecuted by Nazis aren’t particularly welcome in the community.

Helping Minor Assholes

There are a lot of people who don’t have malevolent aims but who unintentionally cause some difficulty (it seems that the truly malicious are a tiny minority). I don’t think that excusing the bad things that they do on the basis of writing good code helps them in the long term. Many of the suggestions that Ben Collins-Sussman and Brian Fitzpatrick make seem likely to help people who don’t want to be assholes and direct them towards positive involvement in the community.

One trend that seems apparent is the non-linear response to certain types of bad behavior. There is often little difference in severity between something that gets almost no attention and something that results in a large and extremely hostile reaction. If someone persists in acting like an asshole for long enough it seems to be inevitable that they will eventually exceed some threshold for what is tolerated and get a very significant negative response. It would be good if things didn’t need to get to that stage.

I think that the most unfortunate aspect of Rusty’s blog post is that most people will probably interpret it as encouragement to write better code as a way of getting a free pass for being an asshole. I know that this isn’t what Rusty intended, but most people on the Internet don’t know Rusty as well as I do.

Conclusion

Ben Collins-Sussman and Brian Fitzpatrick seem to have some of the best ideas for how to deal with these issues when you control a project, but most of us aren’t in that position.

Everyone can advocate better behavior.

Extreme assholes need to be removed quickly and without a great debate about their contributions, freedom of speech, or other issues.

Since considering this issue I’ve been wondering about when one should avoid the lesser assholes and asshole-positive environments. People tend to adapt to their environment, so if you associate with assholes a lot then there’s a good chance you will start to become like them.

12 comments to Are Assholes Essential to a Free Software Project?

  • etbe

    I’m not going to approve comments on this post which identify individuals unless there is a really good reason.

    To the guy who commented, if you had used a working email address in your comment we could have discussed this by email.

  • k3ninho

    “The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.” [1]

    The trick is balancing the unreasonable *ideas* which promote progress in your field with the unreasonable ideas which harm us. I’ve no solutions; it’s a tough, ongoing problem (which is ongoing because day-to-day life means we each have to negotiate every human interaction and every shift in the social space around us).

    Unreasonable *people* who are fixed in their outlook and skills have a limited shelf-life because, once their contribution is done, they can’t move on. I can’t think of an easy way to talk about this without using utilitarian language, which is distasteful to me because of its partial dehumanisation of the people; but we have to work together when it is beneficial and call it quits when it’s a waste of time and energy…

    Take care.
    K3n.

    1: GEORGE BERNARD SHAW, Maxims for Revolutionists, quoted at http://www.notable-quotes.com/s/shaw_george_bernard.html

  • MorayJ

    “Extreme assholes need to be removed quickly and without a great debate about their contributions, freedom of speech, or other issues.”

    Tch – that pesky freedom of speech thing. The will of the people needs to be expressed, without consultation, by an executive. The community will be purified and all undesirables will be removed!

  • etbe

    Moray: Freedom of speech is about government restrictions, not about mailing list policies etc. The people who pay to run mailing lists and other services get to decide what the policy is, people who want to publish material that contravenes that can use their own blog.

  • mirabilos

    # SCNR
    Package: arsehole
    Essential: yes

    Source: mirbsd
    Build-Depends: arsehole
    Binary: mirbsd, mksh, …

    (I won’t name him, but most will know.) Not to forget that my contributions to Debian mostly grew on that soil, too… (even those not related to BSD in any way).

  • While I would not say that we need to keep “assholes” in any project, I fear that once you start to remove someone, you have less issues to remove a secund one, and so on. And I would fear this would create another type of bad environnement.

    I have seen this on some irc channels non related to free software ( ie, not freenode, oftc , etc ), once operators started to ban people, everybody complained to ops about anything that offend them. Then you are forced to write some rules ( or face the accusation of being arbitrary ), which make things worst since some people try to bend the rules and others tend to follow the rules to the letter , which create disconfort. ( rules sometimes create situation like those of the stanford experiment, and I would prefer to avoid that ).

    I have also seen this on some distribution channel, and I was not really confortable to say anything on the channel for the aformentioned reason. ( despites being unaffacted by the rules, and understanding them ).

    So the question is how to remove poisonous people without causing others types of trouble ? And how to do it in a fair and transparent way ?

  • Re-reading How to Ask Questions the Smart Way in this light, it seems of part of what they say is: «If you come asking for help, you may have to tolerate assholes, but don’t make an asshole of yourself». I’d add that I’m more attracted to projects where the general ambience is the opposite of assholeish, and from comments I’ve seen (like, “How nice a mutual-help newsgroup!”) in newsgroups and mailing lists related to such projects I think I can say I’m not alone.

    I agree that “nice” behaviour gets better results faster; in addition, in a mutual-help newsgroup an asshole will soon get marked as a troll, and with the help of the custom, “Don’t feed the animals” (i.e., don’t interact with trolls), he will soon find himself being given the silent treatment, which of course discourages assholeish behaviour.

  • Brian Hamlin

    Behavior outside of minimum acceptable standards is the realm of police, by definition. You are taking on the realm of law, not so much civil society. There are a couple of thousand years of history on this sort of thing.. I do find it unwise to summarily dismiss free-speech in one line at the end, and also to use as your sole example a particular German situation seventy years ago.. This is not an easy topic

  • etbe

    Michael: I agree that rule-lawyering is a problem. But sensible people can work these things out, and they have been solved in the past for some projects. Also I think that if you have a serious rule-lawyering problem within a software development project then you probably have some big problems that will slow down the work.

    The Subversion people in their Google IO talk seemed to have some good ideas and some experience at implementing them. It worked for them and it can work for others.

    Tony: Not all people who ask questions can tolerate assholes, and it would be good if they didn’t have to. As for the “don’t feed the trolls” line, that doesn’t seem to work well in practice. I’ll write another post about that.

    Brian: If you define the minimum acceptable standards as not physically attacking people then it’s a matter for the police. But if you desire any better behavior from members of your community than merely not assaulting each other then the police can’t do it.

    I didn’t choose the Holocaust revision example, Rusty chose it. It’s not an example about something that happened ~70 years ago, it’s about what people are doing today.

    I’m not dismissing free speech, merely noting that you can create your own mailing list or blog to have as much freedom of speech as your government allows. If you use someone else’s mailing list or want your blog syndicated by someone else’s Venus installation then your speech is limited.

    While on the topic of free speech, the US government is the only one to claim to permit free speech. Most countries have significant limits. As I’m basing a lot of my server stuff in Germany I couldn’t legally host anything that’s positive towards Nazis even if I wanted to.

  • Juan

    etbe: There was really nothing much to discuss about. And you could have redacted the identity of both this person and its affiliation if you really wanted to.

  • VelvetElvis

    Something else that needs to be taken into consideration is the relatively high number of people with Asperger’s or high functioning autism in the IT and free software community. A direct communication style combined with poor to mediocre social skills can easily make one come off as an asshole.

    Being a mildly afflicted aspie myself, I know I’ve come off as an asshole countless times without meaning too and I’ve witnessed many flameouts in the open source community where the person obviously had some kind of ASD.

    I think separating the aspies from the assholes is an important consideration that needs to be made. Given the gravitation of aspies towards technology related fields, the impact of our personalities on the social dynamics within the open source community is something that needs to be directly addressed and understood.

  • etbe

    VelvetElvis: I was thinking of that when writing the post, but I try to avoid having posts about such issues be about me. You are welcome to add such things as comments though.