Hacker News new | past | comments | ask | show | jobs | submit login
Re: [BREAKAGE] Since 4.18, kernel sets SB_I_NODEV implicitly on userns mounts (lkml.org)
110 points by Valmar on Dec 24, 2018 | hide | past | favorite | 49 comments



I've been extremely critical of Linus Torvalds in the past. I was glad to see him decide publicly to change his behavior, and I am glad to see him doing better here.

Personally, I think this level of disappointment/anger/trust issue would be best dealt with face-to-face or via a phone or Skype call, or at least an off-list email. However, given the unique situation of the Linux kernel, I think it was appropriate to send to the public list.

The only line I'd remove or finesse is "Yeah, this is complete garbage." Otherwise, I think this is a great example of how to convey anger without personally attacking anyone. Linus doesn't swear, he doesn't call Eric stupid or curse him out, but he still says what he means: The behavior was out of line, it has to stop, and, most importantly, it represents a breach of trust.

He's not saying Eric is a bad, stupid or worthless person - he is saying that in this instance, Eric's behavior is bad. That's the key difference.


> The only line I'd remove or finesse is "Yeah, this is complete garbage." Otherwise, I think this is a great example of how to convey anger without personally attacking anyone.

The basic principle that I think Linus is trying to follow is, "criticize the <subject matter>, not the person" (whether you're criticizing someone's ideas, someone's work, or someone's behavior). Linus isn't saying that Eric is complete garbage, he's saying that a specifically quoted statement is complete garbage for reasons that he expands on later.

I have seen things like this interpreted as personal attacks before, even though they don't actually parse out that way logically, but for someone (like me) who has to learn these rules instead of instinctively knowing them by feel, this is an easy mistake to make.


He's still saying that Eric's behavior is so far beyond acceptable that no defense can be offered, and the entire rest of his work is worthless until he admits that. I think Eric probably had a reasonable explanation for this change, and the fact that Linux containers work so well is due far more to Eric than Linus, so in a healthy project it would be worth hearing out Eric and letting the more meritorious idea win by technical argument. But Linus's email closes that possibility.


At no point does he declare Eric's other work worthless or otherwise "permanently" anything.

He indicates that trust has been breached, temporarily, withdraws his willingness to accept patches due to the breach of trust, and specifies precisely how Eric can rebuild trust:

> until you have made it clear that you comprehend this very fundamental issue


The problem is that Linus has transformed a technical disagreement into the language of a breach of trust. There is no argument that Eric can offer to demonstrate that he weighed the factors and determined breaking userspace was the right call (it's certainly a call commonly made in kernel development, even by Linus himself on occasion!). And Eric can't argue fully because he feels a duty to his users to continue the rest of his work, which is now being held hostage. (Should he refuse to concede the point, then permanence kicks in. It reminds me of certain teachers I had in high school who I still believe were wrong on the facts but the threatened social consequences for pushing the point weren't worth it.)

So fundamentally we have the same practical problem as with personal attacks: that it's bypassing what should be a discussion on technical merit. Maybe Eric's feelings aren't hurt, but it's still not clear we're building the best kernel we could.


If you read the rest of the chain til the end, Linus acknowledges that occasionally userspace has to break. He mentions security issues and extremely old code that provides no other option but breaking it, but then suggests that this was not one of them.

> () Yes, there are exceptions. We have had situations where some interface was simply just a huge security issue or had some other fundamental issue. And we've had cases where the breakage was just so old that it was no longer fixable. So even rule #1 can sometimes have things that hold it back. But it is very* rare. Certainly nothing like this.


Eh it’s better, but don’t kid yourself, it’s still pretty terrible.

Still too aggressive, still too personal. The reprimand part of this email really shouldn’t have been made public. The tone used was not necessary to convey the ideas he was trying to communicate.

Don’t get me wrong, the lack of direct insults/namecalling is definitely an improvement, but I’d personally still hate to work with someone who chooses to communicate to their subordinates this way.


This is better than his old style.

If Linus doesn't put his trusted submaintainers into line, they'll think they can violate core rules of kernel maintenance ~ something as bad breaking userspace.

Linus was right to reply exactly the way he did for such breakage.

There's nothing terrible about reprimanding someone you trusted, especially in front of everyone else.

Helps to tell people to not repeat this level of mistake.


> The only line I'd remove or finesse is "Yeah, this is complete garbage." Otherwise, I think this is a great example of how to convey anger without personally attacking anyone.

Strong words are best way to convey the issue in a way that leaves no room for inaccuracies.

Sugarcoating it helps no-one as some people might inaccurately think it was not a big fuckup. If you use words from the very end of the expressivenes range there is no room left to doubt


I think this email underscores something people miss when discussing Linus's communication style.

It is entirely possible, as we see here, to convey the criticality of something without crossing over into personal attacks.


Convey to us reasonable people, reading it at a distance as 3rd-parties?

Absolutely.

...

Convey to the intended recipient, with his inevitable personal/emotional/etc. attachments to the topic, in such a way that it takes the intended effect?

A pending question-of-fact, and one that can only be answered very indirectly and in the long run.

Heck, if the answer really is "no", then it's possible we may never know! (until the NSA pwns us all, or at least pwns the subset of us who didn't kowtow to whoever the central socio-econo-political authority of that era will be)


I don't think it's actually a pending question whether avoiding personal attacks makes people more likely to listen to a message.


> I don't think it's actually a pending question whether avoiding personal attacks makes people more likely to listen to a message.

That depends on the context. When you're talking about changing ingrained behaviors, emotional shock and awe can definitely be necessary and the shortest, most painless path to resolution.

the underlying incorrect assumption is that everyone will do the right thing, if only nicely and logically talked to. This is not true and obvious to anyone with experience managing large amounts of people, especially so when firing is not an easy option.


> the underlying incorrect assumption is that everyone will do the right thing, if only nicely and logically talked to. This is not true and obvious to anyone with experience managing large amounts of people, especially so when firing is not an easy option.

I've yet to see abusive management tactics work in the long term. It might work in the short term, but people with the means will take it as a signal to jump ship because no adult is going to accept abuse if they don't have to.

I've heard your exact sentiment echoed by people who aspire towards management, and it always comes across as a weird power trip fantasy.


> I've yet to see abusive management tactics work in the long term. It might work in the short term, but people with the means will take it as a signal to jump ship.

Like I said, depends on the context. Being mean has it's place, as does being nice. Those are the extremes and the Lions share in the middle is non-emotional transactionalism.


Personal attacks just make people defensive. They’re pretty ineffective at actually convincing people of anything.

This sort of cold-blooded rational takedown is way more effective.


His commit access was removed. If the recipient didn't understand he will when he tries to push his next change.


Damn, cold-bloodedly nice Linus is terrifying.


Indeed. I think this illustrates that being civil is not just about making people more comfortable, it’s also more effective.


A bit offtopic, but it seems the issues the kernel is handling are getting even more esoteric

Iteractions between different permissions and conditions is getting ever more complex

But yeah, kernel shouldn't break userspace, and this should have been internalized already by the maintainers


Strengthening controls on a system while simultaneously not breaking any client is an incredibly difficult goal.

Unfortunately, unless there is a single, united team focussed on this single goal (kernel is not by design). Then some fingers will be burned, because of the complexity of getting it right.

Some contributors will struggle, and others will fail at it. Unfortunately, that’s just stats.


The systemd and various “secure” linux teams keep adding poorly thought out access controls that no one understands, that have escoteric loopholes and break things in terrible ways.

I wish they’d just move back to the original unix permission scheme, plus jails.

BSD and solaris did much better jobs of this a decade ago. Hopefully one of those will eventually take over again.


Solaris and (some of) the BSDs have NFS-style ACLs, and do not have the original Unix permission scheme either.


Haha well at least he isn't cursing anymore


Only time will tell whether that change is for better or for worse.

(Unless your chosen metric-of-value relies on feelings instead of actual concrete results.)


I like the new tone. It is clear and conveys severity/urgency without the swearing and personal attacks.

Compare to: https://lkml.org/lkml/2012/3/8/495 That's the same guy, so clearly, the swearing didn't have much lasting effect :)


That's one person of many. And it's not a question of aesthetics of the message in the short term, but of the quality of the overall results in the long term and the effort needed to achieve them.

Hopefully this won't happen, but it's entirely possible that this change will result in Linus finding himself with a much greater number of broken, half-broken and/or subtly-broken PRs to review than ever before, increasing the chances of something like https://lwn.net/Articles/57135/ succeeding.

And having a kernel backdoor ship worldwide is way worse than having a few recalcitrant kernel developers be exposed to - oh no! - coarse language. Results > the "fee fees".


Are you saying that Linus has been able to review fewer patches because his personality has driven people away, and by being nicer he’d be overwhelmed trying to review code?


I'm saying that the patches he has reviewed may have been given more attention-to-detail by submitters and lieutenants because of his personality, in which case by being nicer he would lend his time to be abused to a greater degree. Note that I said "more patches that are broken/semi-broken/subtly-broken", not "more patches overall".


Far be it from me to recommend CoC's, as they don't seem to add anything more than ostensible aspirations, but has anyone seen the social rules (guidelines) from NYC's Recurse.com?

https://www.recurse.com/manual#sub-sec-social-rules (via Pony lang CoC)


I'm not a kernel dev, I hardly know what the kernel is, but even I know this by now.. if a change breaks something in user space, it's always a kernel bug.


The funny thing is that you've got that drilled into your head even though it's not true. Userspace breaks all the time, it's just that some of them matter to Linus and some don't, and he's never been clear about which is which.

Several months ago at work I found a vendor app that was calling listen(0), i.e., listen for up to 0 connections, and worked fine on older kernels because they rounded to a minimum of 8. Newer kernels stopped doing that. Nobody cared. Nobody got criticized, constructively or unconstructively. (By the time we noticed it was several kernel releases upstream so bringing it up would just be asking for another change to userspace.)

Linus himself broke userspace once in the hope nobody would notice. Spoiler: they did. https://lkml.org/lkml/2017/5/29/541

And that's not counting all the things that aren't part of the stable interface like procfs and sysfs nodes, device names, etc. There is a clear version of what Linus is trying to say. He's just never said it.


So your point is that if you don't report breakage it won't get fixed ?


Yeah that Eric guy really needs to read Linus' mail to Mauro.


Or Linus' mail to himself: https://lkml.org/lkml/2012/3/8/495


Interesting to see the difference in style of old Linus vs new reformed Linus.

Seems like the new style comes across as just heavily disappointed and with a breach of trust, which I guess compared to the plain anger of old is easier to convey without swearing and vivid imagery.

I think I personally would still prefer to receive one of the old style messages, but that's probably just because I better handle people angry with me than disappointed.


> I better handle people angry with me than disappointed.

This, so much this.

I was raised in a hot-headed european household where people would get angry and argue energetically, often using coarse language. It clearly demonstrated care, passion, and a willingness and desire to continue suffering together.

The low-energy disappointed response sends a very different message. It's probably my upbringing, but it leaves me feeling like the collaboration is over and I should pack up my things.


> I think I personally would still prefer to receive one of the old style messages, but that's probably just because I better handle people angry with me than disappointed.

That's actually not that unusual. I actually found this email a lot harsher, in a certain sense.

When you losing your temper and swear at people, it's scary and intimidating because the hindbrain recognizes that behavior as, "this person is very likely to hit me". And since hindbrains are hindbrains, this reaction still happens even if it's over the internet. But you also end up making a big fool of yourself and leading people to discount what you're saying out of hand, because obviously you're angry and worked up. People losing their temper are hilarious from a safe distance, which is among other things the basic premise of Lewis Black's entire career as a comedian.

When you calmly and methodically communicate using only facts and logic, you do lose the hindbrain "this guy is going to hit me" reaction. But you get something more powerful. Heated anger indicates an unresolved problem. That's why you're all worked up--you have a nice little adrenaline rush going because you've detected a problem and you're fired up to go fix it. Being calm, even cold, is much more final: it indicates that everything is resolved. This approach completely disarms the defense mechanism of saying "Linus is just a dick" or thinking that he only said what he said out of anger.


I'd personally opt for the over-the-top flaming myself, as well. Although it doesn't cultivate a professional image, I strongly prefer it over the "but before I kill you, Mr. Bond..." tone that this example gives off. I've worked with people who weren't afraid to pop off with some choice words over poor decisions having been made, and found the impassioned anger toward choices that threaten something they really give a shit about is a lot easier to get over than something like this mailing list post.

People get angry over things they care about, but they'll cool off, and you'll learn what matters to them. However, if you're playing by The Rules and break them, you'll carry that mark for years, regardless of whether or not who's enforcing got over the incident.


I agree. I read this and thought it was really depressing. And I'm not even the person this was targeted at.


A classic Linus rant has all the same basic information ("backwards compatibility is the first rule of kernel maintenance", "you've been a contributor long enough that you should know this", "I'm reverting your changes and no longer accepting pull requests from you"), but it also has the added comic relief of Linus swearing and ranting. Take away the swearing and ranting and this is just uncomfortable to read.


I love how he ends all that with "Really."

In my books, Linus was always alright, but I like more polite yet firm Linus even more. Best of both worlds.

Merry Christmas to Linus and all Linux contributors (!), and thanks for one of the greatest gifts of modern time.


I really like: „We're not masturbating around with some research project. We never were. Even when Linux was young, the whole and only point was to make a usable system. It's why it's not some crazy drug-induced microkernel or other random crazy thing.“

It‘s too direct but easily understandable.


Heh, I know of one time the kernel did break backward-compatibility, intentionally even - https://github.com/torvalds/linux/commit/6b99e3569ba17b9fd38...

My fan controller used the sysfs paths mentioned in the commit message directly. So while the commit is probably correct that users of the lm-sensors library would not be affected, my application was.

It was relatively easy to fix since I was the only user of the application, so I didn't care about being compatible with older kernels.


I've got a good one, I found a Kernel Bug in the memory manager of all places by being a tryhard in mergerfs (and upstream fuse was broken as well)

http://lkml.iu.edu/hypermail/linux/kernel/1610.0/00878.html


This attitude is what has allowed Linux containers to work as well as they do. You can put software built and tested on a very old kernel and it runs successfully on a modern one. Container operators do not have to deeply worry that every kernel update will break all their developer’s applications.


> You can put software built and tested on a very old kernel and it runs successfully on a modern one.

This is factually untrue. CentOS 5's glibc makes system calls using the vsyscall page, which is off by default in e.g. Debian stable kernels because it's a huge security risk (it's a page at a fixed address that makes syscalls, it's an obvious ROP target and makes ASLR completely irrelevant, and it also contains fixed data so it's a useful target for other attacker-controlled pointers too). So CentOS 5 containers do not run on up-to-date Debian systems unless you reboot and change a kernel option.

I think vsyscalls are on by default in Linus's tree but no distributor is gonna turn them on and take the security risk. The knob was put there so it could be turned off.


This attitude is what allows any operating system to be usable. Nobody would want to develop code under Windows (or buy that code) if they knew that it would break when the user moved from Windows 7 to Windows 10. In the IBM mainframe world, people can still run code written in the 1960s (without even recompiling it).

If Linus didn't fanatically enforce backward compatibility, nobody could rely on Linux for mission-critical systems.


There were BC breaks across Mac OS X’s kernel. Windows does a good job keeping things backwards compatible as well.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: