Linus Chews Up Kernel Maintainer For Introducing Userspace Bug
An anonymous reader points out just how thick a skin it takes to be a kernel developer sometimes, linking to a chain of emails on the Linux Kernel Mailing List in which Linus lets loose on a kernel developer for introducing a change that breaks userspace apps (in this case, PulseAudio). "Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious garbage and idiocy from a kernel maintainer again. Seriously. I'd wait for Rafael's patch to go through you, but I have another error report in my mailbox of all KDE media applications being broken
by v3.8-rc1, and I bet it's the same kernel bug. And you've shown
yourself to not be competent in this issue, so I'll apply it directly
and immediately myself. WE DO NOT BREAK USERSPACE! Seriously. How hard is this rule to understand? We particularly don't
break user space with TOTAL CRAP. I'm angry, because your whole email
was so _horribly_ wrong, and the patch that broke things was so
obviously crap. ... The fact that you then try to make *excuses* for breaking user space,
and blaming some external program that *used* to work, is just
shameful. It's not how we work," writes Linus, and that's just the part we can print. Maybe it's a good thing, but there's certainly no handholding when it comes to changes to the heart of Linux.
...a better love story than Twilight.
Winning friends and influencing people since 1983.
Seriously, who'd put up with this crap? There are nicer ways to make ones way through life.
This is somewhat related with this Linus' post on G+?
Lisias@Earth.SolarSystem.OrionArm.MilkyWay.Local.Virgo.Universe.org
Make a screwup this major, and this is what you get.
It's just a kernel patch, nothing to be actually "angry" about. Why so emotional? And especially when it's somebody who is not an employee.
Just say, "It is our firm policy that we do not break XXX, even when any given developer wishes they could. If you wish to continue contributing, you must follow the policy. Please apply the fix ASAP and acknowledge your understanding of these conditions."
I Wonder how often these kind of conversations are held inside of a corporation and never see light of day. At least GNU movement is candid and open about the kind of mishaps.
yes it is brutal this email thread is in the public. but the mindset linus has about the process is what separates the really good teams for the everyday teams. i had the opportunity to work on three different commercial unix operating system teams and this mindset is consistent with the teams that hit schedule with the appropriate quality.
It wasn't really the bug that set Linus off. At least not in my reading of the post. It was Mauro's cavalier attitude toward the bug. He tried to shrug it off as a problem with pulseaudio, when it clearly was a bug that he had introduced.
I'm not a big fan of this style of management, but I can't fault any of the content of Linus' rant.
Lemmings are silly; dinosaurs are extinct.
can't let shit like that fly. i think Linus did the right thing in the circumstances. i have wished no less than 1000 times over the years that my own various bosses would have shown that they even gave half as much of a crap about utterly unacceptable coding being released into production by my own co-workers.
Seriously, someone makes a coding mistake in a pre-release kernel, there's a heated e-mail chain about it, and now it's on /. Why?
I actually disaggree. This is not a private company where you are trying to spare people's feeling. It is a case of "you screw up, you get yelled at." Because it is a publicly managed project, the yelling happens in public. It also set the standard for every single other developper. The next time a user space bug is introduced. The kernel developer will not try to swipe it under the rug.
I am so tempted to kiss the guy! Linux can't have this type of _OBVIOUS_ audio sabotage at the kernel level if we expect game developers to ever make their products available on Linux. Linus NEEDS to reign this in, we just can't afford it. He is 110% right.
Keep the helm firm, man! That's exactly what we need!
Qybix
Qybix ----- I do not have a belief system; I'm an Anti-theist and proud of it! Saying that not believing in anything i
There are some people who you could site down with and explain things for two hours and they would still go away and do their own thing. IT is particularly full of people like this (and I'm aware of and try to avoid my own inclinations in this direction). Sometimes, you just have to make it clear that something is important and that means raising the temperature even as (and especially as) you remain in control internally.
This is also a valuable parenting skill. I don't think that that's entirely coincidental.
Those two things tend to go together, in the rest of the world.
Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
So it would assume that if the head of the Linux movement had rant like a child, I guess it's ok for all the other leaders of their projects, who don't have any leadership experience to follow this wonderful example.
Look Linus may be a great leader, but pompous crap like this doesn't belong. There's a reason why in management if you need to discipline/warn an employee, you do it in private not over the company mailing list.
The answer is simple: We are Nerds. If you screw up, you say: I screwed up, sorry. And if others screw up, you tell them what is wrong and expect them to not blame others. Case closed. But most people that are not Nerds have the tendency to screw up and blane others. We do not tolerate this behavior amongst us. It's bad enough that the normal guys do that. Hand in your Nerd-Membership card if you think that stupid excuses and blaming others is a valid way of life. It may be for others. It is not for us. We went through a lot because we are what we are. We like working with others as long as they search for the best possible solution with reasonable effort tohügether with us. We get in a loud argument while we search for the best way. And we accept it when the other solution is better. We take pride in being proven wrong and admitting it. Let the stupid folks do the screwup and blame others.
This is Slashdot. It is for Nerds. It says so in the title. Nerds by definition are not the best ar social skills. Slashdot is not for the normal guys that make life so miserable for everyone who works in some Nerd-related field. We are the guys that e.g. think about different browsers and define them. Saves us lots of trouble in the future because the webbased app will most certainly not be broken just because the company decides to migrate vom Internetexploder 6 to a real browser. It is the incompetent Other Guys [tm] that think only 6 months into the future.
And I do not even use Linux. But Linus is obviously right to be upset. Not because of the error. But because of breaking the unwritten major rule for Nerds: If we screw up, we say so. And we do not blame others.
Period.
I wouldn't speak to anyone that way unless I never wanted to see them again. Shaming someone in public like this is a way to not only get them to quit, but to make a permanent enemy out of them.
What this tells me is that Linus is better suited to be a cult leader than a manager of any kind.
That's like saying gouging one eye out is better than gouging bother of them out.
at the end of that diatribe: "Fix your f*cking "compliance tool", because it is obviously broken. And fix your approach to kernel programming"
is:
"How about you go and fix your f*cking social skills. When you can carry on a conversation without resorting to childish profanity, I'll come back and donate my free time to your project. Until then, go f*ck yourself."
Linus is fast becoming another RMS but without the benefit of a cohesive set of values.
I was just thinking that Linus is showing himself to be the bastard child of ESR and Theo.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
News for Nerds, Stuff that Matters! Thanks Slashdot! Its been a while...
Nobodies Prefect
Tidbits for Techs Technology Blog
Sometimes shit happens. Sorry for that.
Cheers,
Mauro
Wrong. Answer.
If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
For example:
Ita erat quando hic adveni.
All open source project have harsh contributors that will flame a fellow developer that made a mistake. But there is something particular with projects that adopted the benevolent dictator governance-style (Linux, OpenBSD): you get flamed by the chief, with no possible appeal or mediation.
In projects that adopted the round table governance style (NetBSD, FreeBSD), you may be flamed, but you never get flamed by the chief, since there is no single chief. Heat is easier to handle, IMO
"On the internet, nobody can hear you being subtle".
Made me think: Alien in a code review.
It must have been something you assimilated. . . .
What someone says about it, says more about the commenter that the situation.
Fugue for Aaron Swartz
If you can put "Linux Kernel Maintainer" on your resume, it's worth a lot more than $0/hour. When hundreds of millions of users and embedded devices run your code, you have assumed an enormous amount of responsibility and performed at least reasonably well.
Unless you fuck up this publicly. Then it's more like being the "Chief Rocket Scientist" the day after the pad explosion that wipes out half the town and a visiting Congressional delegation.
AC, thanks for the link. This post by Laurent Pinchart explains further: https://lkml.org/lkml/2012/12/23/89
"The patch uses the -ENOENT error code internally in the uvcvideo driver to inform the caller function (internal to the driver) that the requested control doesn't exist. It was never meant to be returned out of the driver, and definitely not to userspace. This is clearly a bug."
From reading that, it does seem like, as you suggest, Linus may have jumped to an incorrect conclusion about that error code (intended to indicate a bad path) and why it was in the code. However, he or someone else might have instead, with a more complete understanding of the history of the patch, then reasonably questioned the design choice of reusing that error to mean something a bit different internally, precisely because this sort of problem could (and did) arise.
Of course, if one starts asking questions, then issues like having cryptic error codes is another deeper issue.
Although then one could take that all the way back to even deeper design issues, like how a message passing approach like Smalltalk, Actor, and Erlang pioneered may be better for the kernel of software for the 21st century?
So, "crap" is perhaps relative to your frame of reference? :-)
Anyway, it looks to me like there were mistakes made all around -- the patch developer, the kernel maintainer, and Linus. And that does not include all the other decisions by many other people who lead up to this. See also: http://books.google.com/books/about/The_Berenstain_Bears_and_the_Blame_Game.html?id=p8oMWMMdU2gC
Ultimately, a big piece of software is more a community than anything else. I don't know enough about the norms of the Linux kernel community to know what was appropriate in that context.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
It's not considered acceptable in the wider world; most people barely know who he is and certainly don't know about these childish tantrums.
Slashdotters seem to be falling over themselves to make excuses for him. Imagine if this report was of Steve Ballmer shouting and yelling at a Windows developer.
There are many posts on this thread stating this is how you get quality software. No, it isn't; it's how you alienate volunteers. The way you get quality software is by being a grown-up:
That's the culture: the on-board shuttle group produces grown-up software, and the way they do it is by being grown-ups. It may not be sexy, it may not be a coding ego-trip -- but it is the future of software. When you're ready to take the next step -- when you have to write perfect software instead of software that's just good enough -- then it's time to grow up.
This is how the software that controls the space shuttle gets done. Linus may rule by the cult of personality, but it's not a particularly good way to ensure provably correct software in a situation where it simply MUST work.
What's going on here is the kind of nuts-and-bolts work that defines the drive for group perfection -- a drive that is aggressively intolerant of ego-driven hotshots. In the shuttle group's culture, there are no superstar programmers. The whole approach to developing software is intentionally designed not to rely on any particular person.
An anonymous reader points out just how thick a skin it takes to be a kernel developer sometimes...
Mauro points out just how thick a skin it takes to be a kernel developer sometimes...there FTFY
If it was a patch that broke almost all sound in a RC for MS Windows and the developer blamed something else and refused to fix it I really can see a big chance of them being called on the carpet in front of Balmer. If it was at Apple and Jobs was still around, that would almost be a certainty.
I do not think you've been paying attention otherwise you'd see how ridiculous that statement is. How many of us could even recognise him on sight? We've got more chance with a B grade actor.
The guy deals with A LOT of bullshit on a daily basis, and this was a BS patch anyway. That would be the end of it if the dude didn't start coming up with excuses. If you know you're wrong, fucking say so and make things right.
Sometimes stupid people need to be told they are stupid, otherwise they wont stop being stupid.
The problem is that you cheap fucks don't want to pay for anything.
Lies. Check humblebundle.com, they show how much each OS spends (people are allowed to pay as much, or little, as they want). Currently:
Windows: $6.09
Mac: $7.83
Linux: $10.34
Linux has few users, but they are not cheap.
hobby OS.
Webservers, stock exchanges and electronics are run by hobbists, then.
In my experience, and judging from the comments here, this is a concept lost and unknown to most people these days.
And now get of my lawn!
Bottom line, Linus has been in charge of the kernel for a couple of decades now, and his process is working. He doesn't flip out very often, so when he does, every who counts knows that some serious fuckups happened. And anyone who doesn't count (which in this case, almost certainly includes both you and me) can probably go fuck themselves if they don't like it.
Nobody in the world knows for sure how to manage a project like Linux. It is truly unprecedented. But Linus's way is working better than anyone would have expected two decades ago. If you want to second-guess him, feel free to start your own competing project and manage it your way. His way is working better than anything anyone else has ever tried, even if it's not "the best way".
That said, Linus is too much of a net celebrity to be laying someone out like that. It makes the news, like it did here, and then it makes Linux as an operating system -- and everything that runs on it and depends on it, look bad.
Sure, look how much similar behavior hurt Apple and Oracle.
Linus is just cementing his application for deity status.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Take a look at the call for which ENOENT was returned. The API spec says "EINVAL: The struct v4l2_queryctrl id is invalid. The struct v4l2_querymenu id is invalid or index is out of range (less than minimum or greater than maximum) or this particular menu item is not supported by the driver."
This is from a generic driver mechanism for USB camera-like devices. Because such devices aren't as standard as they should be, there's an insane number of options and possible errors. The spec says to return EINVAL for both incorrect calls and calls for which the device does not support the requested item.
The problem here is that the EINVAL error status doesn't distinguish between "program made bad call and is broken" and "we're iterating through the device functions to discover which ones are available, and this ID isn't meaningful on this device so skip it" EINVAL is supposed to mean "One or more of the ioctl parameters are invalid or out of the allowed range." A correctly made call should not return EINVAL.
The alternatives are limited, though. This is related to a historical Linux design problem, which comes from a historical UNIX problem - system call errors are reported using one error code, chosen from a short list written in the 1970s. "ENOENT" isn't really appropriate. "ENOTTY" ("The ioctl is not supported by the driver"), might be appropriate, except that the usual message for that is "Not a typewriter".
The API is a rather lame and excessively complex way to return what is merely a variable-length list of fixed-format structures. One would think that Linux would by now have a generic way to do that, since it comes up in other contexts.
Here's an example of an application which seems to be crashing because the programmer did not understand the nonstandard semantics of EINVAL in this API.
...and then it makes Linux as an operating system -- and everything that runs on it and depends on it, look bad...
While I agree that this incident does put Linux on the front pages in part of the Net, I seriously doubt the "look bad" part.
In fact, imho, this incident will generate more positive than negative for Linux.
Admins and users that are still sitting on the fence would take note, that Linus just don't take fuck as an excuse - and if anyone dares to fuck up like that fella he will get a public tongue lashing - and the top priority of Linux is to *NOT INTRODUCE ANY USERSPACE BUG*.
Muchas Gracias, Señor Edward Snowden !
This isn't backwards compatibility. It's the same basic rule we have to follow where I work: you DO NOT EVER make unannounced/unplanned changes that break the way other modules interact with yours. Period, end of line. Break that rule with any sort of regularity and you'll be looking for a job. If you need to make a change like that, it's on you to justify why and then to coordinate with everyone else to make sure everything that needs changed gets changed. It's not a hard rule to understand or to follow. If you can't, you have no business messing with an operating system kernel.
The nVidia drivers are developed by nVidia, not the Linux community.
Change is certain; progress is not obligatory.
When every search engine on Earth returns allegations of incompetence by some Überhacker Himself as the first few hundred hits on your name, you can save the time for writing that CV in the first place as HR would often just send it to /dev/null (if they thought in these terms ;-)) unseen anyway.
great reference, great post. although any community where you scream STFU at people seems like not one i want to join.
Once upon a time I was helping a friend move his glass-blowing shop. A bunch of angry 'kids' were involved. One of them managed to stick a claw-hammer through a water main in the basement of the building. I didn't care who did it, or what drugs they were on, or if they were angry, or just stupid.
I had some management experience at that point in my life and tried to be diplomatic. My time was volunteered. If anything, I was simply doing a friend a favor. That all changed when the shit hit the fan.
The water was annoying at first. Attempts were made by a few to control the water.... They failed to contain the issue, because they failed to understand the scope of the problem. In part it was beyond their imagination, and in part it was beyond their scope of experience. They were a bunch of 'kids' that showed up to help a popular glass-blower. In general I was about 10 years older than any of them, the only thing they had on me is that some of them were significantly bigger than I am.
After some time of seeing others fail I envisioned a *solution* and tried to engage a few of the senior (read: *leadership*) members of the crew in that solution... they were already Tharn.
( http://www.urbandictionary.com/define.php?term=tharn )
After a few moments reflection I went DI (Drill Instructor) on the whole crew. I ordered these people around, and shouted down anyone who opposed me. *most of whom did not know me*
It was a rough few hours. The water main had been bypassed years ago the 'kids' I brow beat into finding the mains found it but the valve was inoperative. The city was called, (by convincing a kid to call his girl and have her call in a water leak report) and the city eventually shut the water off. The cops were deflected, by me and the shop owner (who had the gift of knowing when he was out of his depth) The job was completed. No one was arrested or prosecuted. Mission accomplished.
I made some powerful friends. I made some bitter enemies. I do not regret the things I said, or did. No one else present had the balls to do what needed to be done. What I did worked, and that was for that brief time period was exactly what needed to happen.
Some of those 'kids' were so pissed by my 'harsh' approach that I was threatened, publicly shamed, and it let to a few really stubborn ass-hats getting their asses kicked. Two by me personally, (when they tried to jump me) and three others by people who realized I had been for that moment the most effective leader they had seen in their short lives.
Sometimes leadership does not appear until it is needed. I'm not going to say what Linus did is right or wrong. I have read the thread, but I don't think we have all the details. IMO: That man is a gifted leader. I'd give him the benefit of the doubt. If this maintainer worked with Linus for four years, he knows the score... and knows what Linus expects. Nuff said.
If the majority involved in MY little moment of 'management under fire' had not agreed with me. I would not likely be writing this now. I'd have caught some bullets... that is the kind of crowd I was dealing with.
Happy New Years!