A Case Study in Not Being a Jerk in Open Source
destroyallsoftware.com
destroyallsoftware.com
But if you instead see him as a CEO, responsible for every single part of the Linux kernel, running on one billion machines, his behavior becomes natural. Even warranted, since, often-times the people at the recieving end of his wrath are not making some whoops-daisy technical mistake; they are trying to exert power and extend their influence through the code they write.
Remember how grsecurity tried to destabilize the Linux kernel?
https://news.ycombinator.com/item?id=14633163
Or how one core maintainer broke userland and refused to fix it?
https://m.slashdot.org/story/179833
Linus shut them down.
Linux keeps a thousand volunteers in line. The vast majority of whom are not subordinates, duty-bound to respect nice words. At this high level, with such enormous stakes, I wouldn’t want a weak willed leader who lets the children run amok.
This is the key difference between kernel development and other volunteer efforts.
Most volunteer efforts are worse off when people are scared away by strong language and pointed explanations of their shortcomings because their performance isn't really that important. It's not that big of a deal if you spill something at the food kitchen or goof up part of the set of the school play.
The kernel is not a typical volunteer effort. You can't show up with nothing but goodwill and be a net good. It requires skill and discipline, and people who don't have that but try to inject themselves into the process need to be told to go away for the good of the project. Pretending otherwise only causes people to get their feelings hurt. I wonder if there should be a different word for it than "volunteer", because the connotation of that word is that showing up and wanting to be helpful is enough.
In a company the Boss can fire the incompetent or malicious. Not so with Linux; The BFDL has to constantly poke and prod the community away from its impulses.
The truth is that leadership without formal authority is messy. It only gets messier as the problems becomes more important and as more people get involved.
The alternative to outbursts is hierarchy; for Linux to structure itself even more, endowing Linus with even more power, such that he could temporarily suspend the contributor at his discretion.
No insults, no screeds, just a silent squelch.
A far neater outcome that would also be anathema to the politically unconscious.
Still seems like a jerk to me.
Instead, I'll offer this. In my experience, great leadership is the skill of getting a group of people to take action on a cause without having/using authority over them. Instead, you seem to think leadership is about taking authority over people by being a jerk to them.
No one's saying that Linus shouldn't be a strong advocate for the kernel. This is entirely about his refusal to acknowledge or improve lousy communication skills that obfuscate his generally excellent technical arguments, and needlessly push away contributors who have actual self respect.
Linus is a jerk and he gets away with it entirely because apologists like you make excuses for him at every turn.
He's a dictator. he can say no and leave it at that. He can say no and explain. Acting like a jerk is not a necessary part of this process.
As Mauro points out in the replies, the patch here was trying to fix an issue where one driver (uvcvideo) was returning error codes that didn't match what the majority of drivers were doing -- something that was also a bug and was also breaking userspace. The -ENOENT that Linus screams about is an internal driver error that accidentally was returned to userspace in one place.
No core maintainer was refusing to fix userspace (read the thread!), they just wanted to understand the breakage in question since the patch was intended to fix something else!
Software is hard and tricky. The correct response to managing this complexity shouldn't be calling someone an idiot for trying.
A lot of the widely-celebrated "Linus burns" have important, nuanced discussion behind them that is thrown out the window when it's reduced to swears and anger.
It's the same set of excuses that justify assholes in any profession, and it suffers from the same flaw: it's not actually necessary to be a dickhead to be good at your job. In fact, being a dick to others makes it less likely for good, qualified, and smart people to want to work with you.
Linus will continue being a dick to others because of who he is - that's never gonna change. But I wish people would stop sticking up for his bad behavior. I don't want people in other OSS projects emulating him.
The reverse is also true.
This strikes me as a self-regulating problem...
Linus gets to Linus for a lot of the same reasons Jobs got to Jobs. Try to port those attitudes to other areas, less successful areas, and you're gonna hit human factors. Namely: people aren't gonna tolerate jerks without cause.
Linus is not a role model, he's running a highly important and specific project. He's not dealing with weekend coders, he's wrangling senior types IBM, RedHat, MS, and Google. If those corporate titans don't like how he writes on his mailing list they're welcome to fork off into the sunset ;)
As to the actual detail of the author's proposed rewordings:
> I'm not talking about the changes themselves - I can live with them. But the _rationale_ is pure and utter garbage, and dangerously so.
becomes
> These changes look OK, but I'm not sure about the rationale.
This rewording imparts an entirely different message to the original. If I read the latter, as a programmer, I would get the impression that Linus thought the commit was "OK". He clearly did not. At no point in his email does he indicate that anything is "OK" about this commit in any way.
> The caps in "AND STANDARD" is another way to indicate frustration [...] None of these carry any meaning about the technical problem; they're just expressions of anger. [...] Most critically, it's possible to describe the danger of this code without
It's important to point out that the author says "it's possible to describe the danger of this code without". He's describing danger but his rewording removes all emphasis, urgency or import in the tone of the email.
> If you were in the "I'm afraid that being nicer would hurt Linux" group, do you think that this email is worse?
Yes.
I'm sorry, but while the argument that Linus makes excessive use of ad hominem and is disrespectul is a valid one, and he could/should temper that, this example is a failure to demonstrate how it would improve things. The final email draft in the blog post is milquetoast; I would forget it within minutes if I were on that list.
As to the supposed “danger,” I think the author may be reading into it too much. Linus himself says he could “live with” the changes. That, to me, does not sound in any way dangerous. What he has a problem with is the reasoning behind why these changes should be made. “This is a bad idea” covers that.
Quibbling over wording doesn’t change the fact that he can effectively get the point across in half the words without insulting anyone or going off on a rant.
Politically unconscious and otherwise inarticulate.
> It [the rewrite] has 43% as many words, but loses none of the meaning. It's still forceful and unambiguous.
Yet, I found the rewrite to be feeble and ambivalent.
> If you were in the "I'm afraid that being nicer would hurt Linux" group, do you think that this email is worse? Yes.
I wanted to add one additional question. Are there environments where ad hominem and disrespect are actually important cultivators of competency and reverence for the nature of the underlying task. Might there be instances where the collective is better off with Mr. Torvalds than Mr. Rogers?
I'll add, you accurately used the word shepherded and I thought, "I imagine there are times when sheep aren't too pleased to be handled by a crook". Maybe the Kernel Mailing List is Linus's crook...
You'd really forget an email from the head of the project (the "CEO," to use another user's example on here) telling you you've messed up, just because the language was neutral?
I'm not sure I understand that. I don't think most people need yelling and raving in order to know something is important or understand what needs to get done.
Even so, I'm sure better versions exist. Do you have an idea of a polite-but-forceful rewrite of this email that'd be more effective?
I don’t know if that matters, but it strikes me as odd that people who seem to appreciate how this site works think that Linus is some exception because of just how mission critical he is. I also think it likely reflects the lack of soft skills some here have that they can’t imagine a better way being as or more effective, despite the living example of HN itself.
It is actually a positive rather than negative if author was not motivated to write his blog post by the Linus rant/abuse. It would have meant the Linus was able to get the message across with his abrasive style.
1. Bad, but I won’t swear at you.
2. I’m not sure what I think, might be ok but needs more discussion
3. Merge them, but I want to swear about the proposed reason, because it’s bad.
I think 3 is the least likely, but nothing in the email unambiguously rules it out. I think 2 is the most likely interpretation.
There’s something funny about people saying “Linus’s style is valuable because he makes things clear” in response to a post where we can’t agree on what he meant.
Consider These changes look OK, but the rationale is dangerously wrong. It doesn't require Linus to pretend he's "not sure" about a rationale that he obviously thinks is both wrong and dangerous, but it's less personally insulting, shorter, and more on topic.
There are plenty of people who happily interact like this daily. It is a personality. People talk and act in different ways, they are different people, I think it is reasonable for them to continue acting like themselves.
I don't find the way Linus writes offensive in the slightest. To me it is mildly amusing while making a point. I don't want to have all communications in a forced polite cotton wool tone, it becomes robotic. Further encourages people to act over-sensitive, making it harder to communicate.
Yes. Parts of the FOSS community have a culture that apologizes for jerky behavior.
>There are plenty of people who happily interact like this daily.
There are plenty of jerks, yes.
> I think it is reasonable for them to continue acting like themselves.
Being part of a team means accommodating your team members. We can argue what is a reasonable accommodation or what is not. But it's not too much to ask for Linus to stop typing in all caps, or accusing his team members of being morons.
> I don't find the way Linus writes offensive in the slightest. To me it is mildly amusing while making a point.
It's possible to be amusing and make a point without singling out a contributor for humiliation. Obviously, we have to be free to criticize other's work. But as the article shows, most of Linus's message isn't constructive criticism. It can be re-written to mean the same thing, yet preserve the dignity of the person he's criticizing.
We need people to contribute to open source projects. Being a jerk to others scares contributors away.
People have cultures and personalities, many which are not understood by other cultures and personalities. I prefer us to exist side by side instead of banning one in favour of the other.
There's no accounting for taste, so you're welcome to find verbal abuse interesting. But the overwhelming majority of people do not like being treated with disrespect.
> People have cultures and personalities, many which are not understood by other cultures and personalities.
This isn't a cultural issue. Linus is from Finland. In Finnish culture, it's rude to imply your coworker an idiot. It's rude in most cultures to do so.
Linus is a fluent English speaker. He knows what "idiocy" means, and he knows that it's disrespectful to Andy. That's why he's saying it.
> Carefully measured polite language is absolutely exhausting for many of us.
Nobody is suggesting we use carefully measured language. That is exhausting.
What I'm suggesting is, just don't be a jerk. Watch how easy it is:
"Andy, what is the background for trying to push this idiocy?"
vs
"Andy, what is the background for trying to push this?"
The second statement isn't cluttered by polite language. And it actually takes less effort to say than the first. Yet it's far less Jerky.
> I prefer us to exist side by side instead of banning one in favour of the other.
In general, people should learn to work with people who are different from them. I work with people who have a different religion from me, speak with a different accent, or have different interests from me. And we put aside our differences to work together. It works well.
But there is one kind of person you can't work with, no matter how many differences you put aside, and that's a bully.
Really? I’m not going to defend Linus’s original message; Gary’s version eschews the unnecessary ranting in favor of more concise language. But the claim above strikes me as disingenuous at best.
There’s a reason we have quotes like, “I’d have written a shorter letter, but I didn’t have the time.” Clear and concise language often requires multiple revisions. I personally think it’s worth the extra effort, but it does require an effort.
I’d be astonished if Gary didn’t spend a lot more time on his version than Linus did.
* "but I'm not sure...", "I think that..." - these are weasel words that weren't there before and which change the meaning of the sentences. If the commit message is wrong, in the context of right and wrong of Linux kernel development, saying so is not Linus stating his opinion. The context of right and wrong might be based on Linus's opinions, but that's a different thing.
* the rewritten version loses the point about unclear standards language not being an argument, even though this is mentioned multiple times in the original. Perhaps because it often comes up as a rebuttal attempt, as indicated by "Don't tell me...".
* The conclusion of the original e-mail, i.e. its main takeaway, is that standards should be questioned. The rewritten version ends with "what are your other arguments?". In fact, the explicit point being made - that the standard should not be seen as an infallible resource - is now only implicitly present.
That said, I agree that profanity, name-calling and direct attacks are unnecessary and that the e-mail would be better off without it. But the author of the blog post also promotes changing clear and direct language to weak statements, which I do not agree with.
Heres to you, Stuart Smalley! You're good enough, smart enough and.... doggone it, people like you!
The moral-superiority bullies are jerks too.
Same as people who use their position to push their politics.
Maybe we should all just be adults and focus on the work.
So it is Linus who is not being an adult.
Your question seems to assume that a prerequisite for a successful project is there being some sort of overlord that runs it.
That's not the only project management style. Many open source projects are instead run by collections of people who are capable of acting professionally to one another and to contributors. We don't hear about those individuals because they are happy to share credit for the project with all of the participants.
If "success" is measured on a personal level, then sure: bullies are often successful by marginalizing others for their own benefit.
Linux is an example of a successful project run by a bully. Here are some projects you may have heard of that have different management styles but are still, by my measure, successful _as projects_ in spite of that success not being attributed entirely to one figurehead individual:
- Python
- NodeJS
- Mozilla Firefox
- Apache HTTPD
- nginx
- Busybox
- Debian
That's a weaker statement to me.
"The changes look OK, but I strongly disagree with the rationale" sounds better.
If you can't point at shit, and say that it is shit, and it needs to be done better, then I don't want to work with you, or depend on your outputs. I am glad that there is someone like Linus helming the ship; Jobs was not different in kind, nor Gates in his day. It's a shame that we don't have more strong, extremely competent stewards like him.
Instead, I offer you this: the revised email is half the length of the original, and still makes the case as strongly as the first based on the logical arguments. How would you rewrite it?
I don’t mind being told “no, don’t do that; it’s stupid,” provided it’s backed up with logic and an alternative way to proceed. In this case, the second email does this (the alternative way to proceed being just don’t merge the changes, or reword the commit messages).
I have no problem with cursing. I probably curse a little too much, in fact, and here it clearly gets in the way of the message, which is, in both cases “I can live with doing this, but your reasoning as to why we should is wrong.” Or, more bluntly, “no, don’t do this for these stupid reasons.”
What I do have a problem with is gratuitous abuse of someone who’s attempting to make a positive contribution and has, apparently, submitted a reasonable pull request.
That's not even the same sentiment. Okay versus Questionable.
Not sure why the Tone Police feel it's necessary to do this.