10 ms·
“Because I'm a bastard, and proud of it” (2000)
- hoodoof 11y agoIt's possible that it might be appropriate for the leader of the Linux kernel but for other programmers and leaders - don't model your own behaviour after this. You're not Linus. You're not Steve Jobs either - also known for his abrasive style. Firm but fair kindness, diplomacy and a lead-by-example approach are the keys to leading a technical development effort over the long term. Do make tough decisions, do hold people to account, do work hard, do expect the best from other people, do get rid of problem team members and do address under-performers, but all that can still be done with patience, kindness and diplomacy. I made the mistake in my early career years of modelling my leadership style on Bill Gates also known for the same abrasive, no holds barred style. It doesn't work.
- moron4hire 11y agoYeah, you get to act like this when you're a popular iconoclast, having surrounded yourself with sycophants. Everyone else in normal scenarios cannot afford to do this.
- deleted 11y ago[deleted]
- golemotron 11y agoPeople go out of their way to condemn his style. The reason why is because it is the complete antithesis of PC culture. It wouldn't be an oversimplification to call his leadership style a "Dad" style: "it's not about you, it's about the system" versus the "Mom" style that makes nurturing paramount "if we make everyone feel good we can all win." Both work. No seriously both work. It's just politically incorrect to run Dad-style projects or companies now.
- deleted 11y ago[deleted]
- golemotron 11y agoPassive voice. Who are you speaking for?
- vezzy-fnord 11y agoI like how everyone here is discussing the rhetorical style and ignoring the fact that his rejection of kernel debuggers is batshit insane and idiotic, which is the main topic.
- edejong 11y agoHe's acting as a teacher in this email (like in many situations) and trying to explain that, in a deterministic and transparent system, the usage (and necessity) of a debugger is a clear signal of the inadequacy of the design. If you have to use a debugger, you should go back to the drawing board! You've made a fundamental design flaw in your abstractions and following a poor instruction pointer will not help you find that flaw. It's kind of ironic to see that, nowadays, with the increased necessity for concurrent and multi-agent systems, a debugger becomes even more obsolete and cumbersome, since you're often fighting a race-condition or some kind of resource starvation. Personally, I see his rhetoric in this email as highly intelligent community leadership in which Linus is arguing for better systems design (inside, or outside of the Linux kernel).
- vezzy-fnord 11y agoAnd yet, hardened Linux developers like Al Viro will rant all about the awful systems design inside and outside of the Linux kernel constantly (cgroups and udev are frequent targets of his). We can thus extrapolate that a lack of a kernel debugger has not reduced leaky abstractions in any measurable way. At best we can only speculate in counterfactuals. Solaris has a kernel debugger and a more concise architecture.
- edejong 11y agoLinus argument is that use of debuggers may contribute to bad design, but he does not prohibit their use. As Linus was not the core contributor to cgroups (Google was) and kernel debugging certainly was available when cgroups was first implemented, I would say the opposite might actually be true. Personally, I think the UNIX OS design is a poor fit for the requirements of Docker et al. The problems with cgroups should be a signal that it breaks the fundamental design assumptions of Linux (doing fundamental resource separation and multi-ring security in a monolithic kernel).
- joslin01 11y agoWould it be fair to say that the best leader is a hybrid of mom & dad style? Or would you say that the best leaders oftentimes fall into just one camp?
- cbetz 11y agoHow can you make the claim "It doesn't work". By what metrics? Both Linus and Bill Gates were extremely successful. Are you claiming they could be more successful with a softer style? I have another conundrum. Assume both these individuals would have to to do some real amount of work to change their personal style. This translates to time spent not doing the other things they are perhaps excellent at. Wrapping your argument in nice words all the time is actually really hard. It takes time. Frankly it is not always necessary depending on the relationships between individuals. Let's say you and I start an open source project and we both find it really hard to say things nicely, but we have X hours a day to contribute and get stuff done. So I propose to you: "Hey, let's get in the habit of saying what we feel. We'll remember and accept that humans aren't always rational and we're going to hurt each others feelings sometimes. We'll remember that we all say and do dumb things all the time, so it's no big deal to call somebody out for it. But we think this will save us time in the long run, since we suck at sugar coating our words and feelings." What stops us from building a highly successful project of like-minded individuals? What do we lose when somebody comes along and says "hey, you have to be nice now!"? Should we refuse to work with such people? These are real questions and I don't think they have clear answers.
- paxcoder 11y agoIf you want freedom and manners, don't follow Linus.
- seivan 11y agoMaybe I don't want your definition of manners, the same way I don't want Westboro/ISIS definition of religion. Don't read too much into vulgarity. Linux is vulgar, but that's pretty much it. Doesn't mean he's a bad person. His opinion can be bad without resorting to bashing his personality style.
- paxcoder 11y agoDefinitions are only useful when agreed upon. Being vulgar and unpleasant towards people means Linus(with an s) has bad manners. You can choose to tolerate that for some reason, but you cannot expect it of other people. Instead, it is expected that people moderate their own behavior. P.S. Ask yourself why you have double standards with regards to "bashing".
- seivan 11y agoWhat double standards? I think you're reading too much into the word "bashing" - proving my fucking point. Exceptional.
- deleted 11y ago[deleted]
- paxcoder 11y agoI'll be curteous and elaborate: The double standard is allowing Torvalds to bash, but disallowing "bashing" his bashing. I refrained from guessing the cause of this before, but I believe it is you being a fan of Torvalds' and/or being sympathetic to his unwilingness to moderate own behavior. Please address my point about definitions or explicitly introduce a new point if you really want to argue the other thing further.
- seivan 11y agoI like his vulgar style, but that's pretty much irrelevant here. How can one think debugger is a bad thing? I feel kinda incompetent as I am missing something here, does the inclusion of a debugger, even when not in use hamper performance or anything in particular in anyway? Is it the same type of debugger, where one could step through code and inspect objects or is this something completely different when it's related to the kernel?
- unusximmortalis 11y agogood questions, however, the answers are all in his email :)
- seivan 11y agoI guess I was shooting for more technical answers related to e.g security, performance or etc.
- outside1234 11y agoThis seems like one of those false "tyranny of the OR" logic bombs: we can have 1) high quality software OR 2) a kernel debugger. It seems to me that these two things are not actually logically connected and we can have both: underthought code is a unrelated problem to a debugger. Its like saying you can't build world class woodwork if you have a router. Instead you must only have awls so you have plenty of time to think about it. It strikes me that simply means there will be less software in the world at much higher dev cost and that isn't a good thing necessarily.
- blowski 11y agoThe other false dichotomy here is: You can be 1) a nice person or 2) a good manager. That Linus can't get good results without "being a bastard" is a shortcoming, not a management style to be admired and emulated.
- DSMan195276 11y agoI wouldn't say you're particularly wrong, and as someone who does kernel development I can't say I agree with Linus here (though I may very well have in 2000 when he wrote this) - I use GDB to debug my kernel a fair amount, but it's also 2016 and it's rare that GDB helps besides notifying me when a condition happened and killing everything. I think I understand his point though. Kernel debuggers aren't amazing by any means, not at all comparable to standard application debuggers, and a lot of the actual hard problems you run into when dealing with a kernel can't be easily solved by debuggers anyway. Single-stepping through kernel code is filled with bugs and he's right when saying you can't really trust it. Kernel debuggers can be helpful, there's no denying that, but if you're relying on a kernel debugger to solve your problems then you're doing it wrong, and I think that's his point. There's too much that could go wrong that a kernel debugger couldn't easily catch for you - And I'm sure the debuggers in 2000 weren't as good as the ones we have now. Not having a debugger removes the risk of people doing that, and he'd rather have less kernel developers that are more aware of the code they're writing, then more that don't know as much about it.
- VLM 11y agoA better woodworking analogy (or parody) would be: Gentlemen, I am well aware that many woodworking shops have a FooBar2000 scrap wood burner. This shop will not. I am not saying woodburners are always bad, or the FooBar2000 is individually bad. Or pretending that scrap never happens. Why I enjoy a warm toasty winter night in front of a fire like the next lad. However having a scrap wood burner implies we create scrap that needs burning. And I will not tolerate that in my shop, nor encourage other shop owners to recklessly generate scrap. Gentlemen, here we make keels of ships. The entire ship relies on this keel never breaking, creaking, cracking, groaning. Upon those ships... Lives depend. Businesses depend. Governments depend. And I will not tolerate scrap as a boat keel and all the destruction failure can cause. Therefore given that we can't afford to create scrap, we will work slowly and methodically and intelligently so as to not create scrap, and thus have nothing to burn in the FooBar2000 scrap wood burner, thus we do not need one. In the unlikely event that I or someone else make a keel that needed some scrap to be disposed of, well, if it tests good, thats OK. But I'd never tell a dude setting up his own shop that if he's going to build boat keels he badly needs a FooBar 2000 scrap wood burner because he'll probably screw up a lot, because if he's screwing up a lot, I don't want the world depending on his boat keels and I won't accept that caliber of workmanship in my shops nor stamp my name on it. Gentlemen, you may not like my opinion about your deeply held beliefs about woodworking. I sympathize. I don't agree with everyone else either. Thus I'll give you a psychological outlet by talking like a pirate for a bit now, and making light of your mother's parentage and something about elderberries. Thus if you're insulted by my technical evaluation of your woodworking skills, you can tell everyone else you're actually insulted by my talking like a pirate. Then everyone goes home happy, and the world gets safe strong indestructible boat keels.
- thebiglebrewski 11y agoLol if everyone did open source like Linus, we'd never get any new contributors. I have no idea how this even works in their context either
- draw_down 11y agoAnd yet, and yet- his contribution to open source is almost unfathomable.
- vezzy-fnord 11y agoAbsolutely not. Linus has been doing nothing but a managerial role for a long time. His initial cloning of Unix is something that university students across CS departments everywhere practically did as a rite of passage. Theo de Raadt, on the other hand, has never stopped hacking since his days in NetBSD.
- dasil003 11y agoWhat makes you think management does not contribute? There is no way you can quantify the number of kernel bugs you didn't have to deal with because Linus said no to an ill-conceived feature.
- vezzy-fnord 11y agoThat he has vetoed various frivolous proposals is undeniable. There's nothing "unfathomable" about it. I strongly approve of his visceral policy against people breaking userspace. His particular post linked here is nonsense, however.
- dasil003 11y agoI'm not arguing for his post, I'm just offended by your casual implication that "nothing but a managerial role" is an insignificant contribution to the software world for a project like the linux kernel.
- unusximmortalis 11y agoI love Linus point of view here because although he is using words which can have negative connotation to describe his position here ("I am a bastard", "I do not care", etc), he is actually looking to steer the community towards the greater good.
- nickbauman 11y agoI'm not a kernel developer but his rant strikes me as very platonic, and not in a good way. Platonic in the sense that real knowledge requires turning away from the cosmos and "deeply introspecting" to obtain a "gnosis" of sorts. Plato, for all his contributions, was at heart a religious ideologue closely aligned with the corruption of the Pythagoreans that came before him. Reality was "the cave" and the gnosis was leaving the cave. Full disclosure: I don't use debuggers myself, partly because it isn't practical (I spend most of my time in Go these days, rather unwillingly I might add, and Clojure. Both languages aren't terribly friendly to step-debugging.) but when I need one I really, really need one.
- tremon 11y ago> Plato [..] was at heart a religious ideologue Which religion would that be?
- nickbauman 11y agoI don't know it by name but this quote reveals it pretty soundly: "We shall approach astronomy as we do geometry, by way of problems, and ignore what is in the sky." (Plato's Republic) This kind of thinking is likely the same sort of thinking that got Kepler off the track trying to force the Pythagorean solids into planetary orbits in his Harmonices Mundi. (maybe call it "Pseudoscientism" a belief that merely scientific-looking commonalities are in fact universalities)
- tremon 11y agoI am unclear how "We shall [..] ignore what is in the sky" translates to a religious ideology. It sounds to me like Plato is arguing against the Greek tradition of trying to explain a natural phenomenon by tying its existence to a god, and arguing for (what we now call) scientific rigour. Can you clarify what you mean with "this kind of thinking"?
- moron4hire 11y ago>> And quite frankly, I don't care. I don't think kernel development should be "easy". Aaah, the myth of the Protestant Work Ethic.
- draw_down 11y agoIt's entertaining to see people rhetorically pat Linus Torvalds on the head. Yes, he is clearly an imbecile in thrall to myths. Sheesh.
- venomsnake 11y agoYes because this can attract people that like easy. And easy should be reserved only for people that don't mind hard.
- VLM 11y agoPossibly the part you misread, or Linus being a Finn, he might have poorly expressed in English, was the "start being careful early rather than late". The whole essay hinges on that. Look we're all devs here, and everyone who's written more than fizzbuzz has run into judgment issues about speed. A military campaign analogy fits really well. You can advance slowly, defensively, without possibility of failure or accident, with full knowledge of every little step you take, every footfall of every process is understood and safe. In which case your code will never crash and people can run nuclear reactors with it and coincidentally a debugger would be a complete waste of time because it'll never be needed. Or you can ambitiously run ahead in a reckless offensive charge, probably right into a swamp or ambush or minefield, and then you'll need a debugger to pick and prod your way out of a self caused disaster. That obviously requires a debugger. It also results in code that possibly thru sheer luck didn't crash into the debugger being shipped, and then killing people when the nuclear reactor controller crashes or whatever. There are whole swaths of logical errors and race conditions and spec problems that debuggers won't help with but sitting there and thinking hard will avoid, and nobody wants to find all those mistakes the hard way in shipped deployed code, and then Linus has to find what should have been an obvious bug had the dev slowed down and thought a bit first, etc. If you needed a debugger because you were too lazy to check a memory reference before you freed it or whatever, that's probably the quality level of code that also "forgot" to check for trivial buffer overflows or null termination of strings or just basic foolishness. He just doesn't want it. Note that this is ultra low level kernel code that entire systems are based on. You have to be more paranoid and slow and methodical than everyone else with this kind of code. Probably the completely wrong attitude for someone who just installs wordpress, etc. Note that he expressly denies the work ethic... if you can send him production quality code despite having used a debugger and despite having intentionally avoided thinking hard, if its none the less good he explicitly says he will take it... he (and I) just think it very unlikely that situation would occur. If he demanded the work ethic he'd be insisting on testimony that you meditated on that function for a minimum of two minutes per line or something equally effort based rather than achievement based.
- luso_brazilian 11y agoConsidering the date (6 Sep 2000) this should have the [2000] tag for context.
- davesque 11y agoYes, this. The culture of software development was different back then. My opinion of this little snippet changed a lot when I saw the date.
- deleted 11y ago[deleted]
- pliu 11y agoI wonder if Linus has changed his opinion, 15 years later.
- gdubya 11y agoI hope not!
- unusximmortalis 11y agoI'm willing to bet he did not
- draw_down 11y agoWhat I don't get is why he chose to live in Portland. People here are... not really like that at all. It must drive him nuts.
- mr_tyzic 11y agoProbably because he isn't really like that.
- vezzy-fnord 11y agoWhat the fuck? Everybody here is praising Linus for some of the most perverse and regressive logic imaginable because they enjoy his supposed bravado. What nonsense. You can apply his exact same logic about kernel debuggers to reject all advances in software made after 1968. If only all programmers used nothing but DOS and ASM on 4-bit CPUs, we would finally be liberated. Finally let "Darwinism in software development" take its course. (Of course, I'm sure most people commenting here have never hacked on anything more sophisticated than a V7 Unix derivative.)
- twic 11y agoLinus's argument here isn't just wrong, it's bloody obviously wrong. And not for the first time. Does anyone remember the Git generation number debacle? Or the business about wanting fixed hardware interfaces to video cards? Linus is an uncommonly gifted low-level x86 hacker. But his technical judgment is mediocre. I just don't get why he's held in such esteem.
- dmethvin 11y agoOne of the insidious things about debuggers is that they let you be lazy when reasoning about the code you've written. When you don't have a debugger, you need to be more careful about what you do and really understand the complexity of your code, because a misstep when writing the code can take hours to remedy. With a bunch of safety nets at hand, you feel like you can just blow out some code and work it out via the compiler and debugger later. There's no doubt that better tools have let us be more productive, but in the process we understand the code we write less deeply than we otherwise would, because we are required to spend less time contemplating it.
- unusximmortalis 11y agoone of the few that got it... :)
- iofj 11y agoLet me just replace debugger with supermarket. Hopefully you will see how this is a stupid argument : One of the insidious things about supermarkets is that they let you be lazy when getting food. When you don't have a supermarket, you need to be more careful about what you do and really understand your food, because a misstep when collecting food can take lead to death. With a bunch of safety nets at hand, you feel like you can just blow out and get some food and work it out via diets later. There's no doubt that better tools have let us be more productive, but in the process we understand the food we eat less deeply than we otherwise would, because we are required to spend less time contemplating it. Now do the same replacement for compilers, as they seriously lower programmer's understanding of what happens in their program. Operating systems, because they prevent most programmers from knowing how they're using hardware resources, and therefore lead to suboptimal resource usage. It's absolutely true what's being stated here. Yet when you apply it to anything else it shows it's utter stupidity. Without tools we are less, it's as simple as that. Doesn't particularly matter what tool you're talking about, debuggers or supermarkets or cars. Let me tell you the one advantage that producing throwaway "software" that is 3 page webpages, at most, with 2-3 features. The one property this has is that it's cheaper. Due to a horrific accident of history it has an easy and mostly idiot-proof distribution system it also pays more. I would also like to point out that when desktop apps were the norm, and an environment without debuggers just simply didn't exist, desktop software was large bodies of code where you could fill books with their feature list. In fact people did [1]. Today a webpage with 5 screens is considered a lot. Not doing massive code reuse was considered lunacy, where now nobody does it. But let's not kid ourselves. Software 10 years ago beat the crap out of webpages and android apps in features, documentation, ... everything. [1] http://www.amazon.com/CorelDRAW-X6-The-Official-Guide/dp/0071790071 http://www.amazon.com/CorelDRAW-X6-The-Official-Guide/dp/007...
- overgard 11y agoThis is such a dumb thing to be proud of. Would you want to hire a contractor who says "I'm not going to use a hammer because this rock I have works just fine for driving nails! Sure if you use a rock maybe building a house is slower and you smash your fingers a lot, but I wouldn't want to work with builders that take the easy way out!"
- falcolas 11y agoA better, though still poor analogy is to say "the house keeps falling down when u build it, so I'll use an ultrasound device to inspect every nail as its pounded in to find the one that fails." Linus, in his own way, is pointing out that an ultrasound will not identify that your house is missing a wall.
- pklausler 11y agoAbout the time this post was written, I ported the Linux kernel and basic userland to what was then a brand new instruction set and system architecture (the Cray X1 and its successor). It was much easier to do this in a simulator environment with breakpoints and tracing than it would have been on real hardware, had I even had any. Is that a debugger? Fine. I think Torvalds is off base here, trying to blame crutches for somehow causing lameness.
- irascible 11y agoThis rant overlooks the use case of stepping through new code in a debugger regardless of whether it actually works or crashes. Inspecting intermediate values.. making sure execution follows the right paths etc. Debuggers aren't just for bugs.