For those not familiar with the Linux kernel contributors, Alan Cox wrote large parts of the networking stack, was the maintainer of the 2.2 branch, and was commonly considered the "second in command" to Linus Torvalds at one point: http://en.wikipedia.org/wiki/Alan_Cox
He released what people considered to be the stable branch of the Linux kernel (the -ac branches). Linus was moving quickly and Alan would package up the releases that everyone would use.
I just learned, from reading that wikipedia page, about the falling out he and Linus had.
And, interestingly enough, a senior maintainer who quit because he got sick of Linus' behaviour.
https://lkml.org/lkml/2009/7/28/373
Yes, I'm familiar with the incident. I was reading LKML when it happened. It's a counterpoint to the usual "Linus's style doesn't cause any problems."
It may be a counterpoint, but it is also one of the milder rants from Linux: No expletives; no colourful descriptions.
Yes, it's critical, but is the criticism unwarranted? He is questioning why one of the most senior maintainers is directly contradicting one of the most central "edicts" from Linus on the kernel development: Don't break user-land. In the message, Linus directly quotes Alan as arguing that breaking userland is ok.
Of course Alan was/is free to disagree, but he should have known very well that Linus would never let that fly. Not least because Linus had told him it wouldn't, and he kept pressing for it.
What was the alternative? From the outside, it looks like Alan repeatedly avoided doing what Linus told him needed doing. Linus could not have backed off without sacrificing the guarantee of not breaking userland.
If you read the whole thread Linus was wrong. He was constantly confusing two different bugs (despite Alan pointing this out to him multiple times), and the fixes he was yelling at Alan for not applying would have caused other things to break.
Ooof. If I'm reading that thread correctly, Linus wanted to leave in a bug that would probably allow a local attacker (or maybe even a remote attacker) to execute arbitrary code in the kernel, just to avoid the risk of breaking userland code that did questionable thing that happened to work before by fixing it.
So reading this thread, I keep asking "could Linus have said what he needed to say in nicer terms and gotten better results?" I think so. In every Linus rant I encounter he goes on and on about the problem, then the person causing the problem, and typically attacks the developer. It's one thing to rule with an iron fist, it's another to target individuals and not the behavior.
> It's one thing to rule with an iron fist, it's another to target individuals and not the behavior.
Quite honestly, I don't see any of this in the thread in question.
Where he's practically yelling "WHY?". Here's how it could be re-written to be a more effective email:
"Hey Alan,
The problem is that while you make pty.c have the correct behavior, lots of legacy userland code relies on the current implementation. Since as kernel developers, we must avoid breaking userland code at all costs, a better solution is to change the behavior, but implement a compatibility layer. Once enough userland code has been fixed, we can remove the compatibility layer. This has been our standard approach for these types of issues, and I think it would work here. While I understand how frustrating it is to not be able to fix this once and for all, I think we need to address our users' needs first.
Thanks, Linus"
Shorter, nicer, more to the point, and with much less time wasted on emotional outbursts.
The bottom line is a kernel developer, a senior kernel developer at that, should know this already, and should never violate the golden rule of kernel development, and if they did somehow, should not argue against reverting their userland-breaking changes. Seems to me, given the circumstances, Linus was much more reserved than he could/should of been. A great way to make people think twice before doing something stupid is to call them on the carpet when they do something stupid. There was no name calling, no profanity, no personal attacks here.
That's not to mention your snippet above would have received the same exact pushback (maybe more) from Alan at the time since Alan believed he was in the right.
I agree, it's strange that Alan knowingly broke userland, and then argued that he was right. Something more must have been going on.
At the same time, do you really believe that the only way to get people to see the error of their ways is to be as harsh as Linus usually is and to resort to personal attacks (referring to your line about how he could and should have been harsher)? This is indeed Linus's usual style. The reality is that maintaining some basic level of respect with your colleagues would mean not losing great kernel developers to Linus's outbursts. Alan leaving was a big deal and was widely publicized. How many others have left to never return after receiving a nastygram from Linus?
Let's take it further: if your boss publicly called you a "fucking idiot" as Linus is known to do, every time you screwed up, would you want to continue working for her? Chances are, most people would resign on the stop.
Lastly, I disagree. Even if Alan still thought he was right after receiving my version of the email, he would have a much harder time arguing with a more reasoned version. He would certainly be less likely to throw his hands up in the air and leave the team. This whole "Linus needs to be an asshole sociopath to get shit done" is simply not true: most effective project managers don't resort to this type of behavior because they have better ways to get things done. Linus has fallen into this MO, and it's working for him, but I argue that if he was a better manager and a nicer person he would get more stuff done, not less.
> Something more must have been going on.
I think we can both agree on this point.
Typically, when I've noticed Linus explode at someone on the mailing list, he is usually the last person to put his 2 cents in. As-in, many others in the mailing list and bug trackers are the first to point out the problem(s) yet the maintainer/patch-submitter argues back and refuses any changes. Usually after a long while, someone pings Linus and asks for his involvement (the kernel is far too large for any single person to be paying great attention to all components). Linus typically comes in as the last line and just unleashes at someone who has already made a much larger problem than it ought to have been -- sort-of the "buck stops here" thing.
The most prominent example I can think of off the top of my head is the Kay Sievers fiasco. People had been going back and forth with Kay for weeks/months before Linus finally weighed in. It resulted in Linus banning any PR's from Kay.
I don't condone all of Linus' outbursts -- but we do need to remember it's the internet and more importantly a select group of people on the LKML... it's not an office building where cordiality trumps directness. Sometimes being direct is the best approach, even in "real life".
Agreed on most points except last.
Linus is never direct. He takes the scenic route, describing, someone's ancestry, mental capacity, and personal hygiene (figuratively speaking), and only after he is done taking down the individual, does he get to the actual behavior. His exchange with Kay could have been much shorter too:
"Kay, this behavior is unacceptable here. I read through the threads and it looks like you are causing real problems. Because of this, I am blocking any future PR'a from you."
More simple, direct, addresses behavior and let's everyone know that the buck stops with him. And this probably would have taken much less time than his actual rant.
> Linus is never direct.
He was direct in the discussion with Alan Cox that this thread started with. He didn't act the way you described in this case.
It takes a lot to get Linus to the point of a rant of the kind you describe, and they are exceedingly rare compared to his usual behaviour.
> Yes, I'm familiar with the incident. I was reading LKML when it happened.
Probably the link was posted for the benefit of others.
Yes, thanks. I should have mentioned that.
not being familiar with this case -- but from an outside perspective reading the mailing list now, seems Alan introduced a patch that broke userland code -- which is the biggest No-No in kernel hacking, ie. the number 1 rule is don't break userland. Alan appeared to argue userland code was broken and not his patch, which just made Linus mad (as expected). The kernel strives to never break userland, even when userland is relying on legacy and/or broken pieces of kernel code (the idea is to code around the broken parts and provide compatibility until userland changes/fixes their problem -- ie. no kernel change should ever mass-break userland code).
> code around the broken parts and provide compatibility until userland changes/fixes their problem
read: provide compatibility indefinitely.
yes that's the idea. in fact, it was only last year (or maybe 2012) that intel 386 (an almost 30 year old cpu) support was finally dropped. This is how binaries from 20 years ago will still run on today's hardware and kernel with zero modifications. That is a good thing, especially for enterprise.
it's not that they leave security vulnerabilities in, it's that they build compatibility for any software that may expect something to work a certain way, while simultaneously fixing the underlying problem. To software, it should not care what kernel it's running on going forward.
That's not true at all, Alan Cox stated himself
> I'm leaving the Linux world and Intel for a bit for family reasons. I'm aware that "family reasons" is usually management speak for "I think the boss is an asshole" but I'd like to assure everyone that while I frequently think Linus is an asshole (and therefore very good as kernel dictator) I am departing quite genuinely for family reasons and not because I've fallen out with Linus or Intel or anyone else. Far from it I've had great fun working there.
https://plus.google.com/u/0/+AlanCoxLinux/posts/KW3TdRYwjr9
This is a much more recent incident. The time he abruptly resigned as maintainer of the tty code was clearly a "fuck this, if you don't like the way I'm doing it, fix it yourself" resignation in direct response to some classic (if mild) Linus-in-your-face criticism.
Aren't they the same incident? His G+ posts talks about resigning from tty duties among other things -- but also states there was no beef between him or any other kernel maintainers.
January 2013: "I'm leaving the Linux world and Intel for a bit for family reasons."
July 2009: "I've had enough. If you think that problem is easy to fix you fix it. Have fun. I've zapped the tty merge queue so anyone with patches for the tty layer can send them to the new maintainer."
No, they're not the same incident.