Torvalds' Secret Sauce For Linux: Willing To Be Wrong (ieee.org)
An anonymous reader writes: Linux turns 25 this year(!!). To mark the event, IEEE Spectrum has a piece on the history of Linux and why it succeeded where others failed. In an accompanying question and answer with Linus Torvalds, Torvalds explains the combination of youthful chutzpah, openness to other's ideas, and a willingness to unwind technical decisions that he thinks were critical to the OS's development: "I credit the fact that I didn't know what the hell I was setting myself up for for a lot of the success of Linux. [...] The thing about bad technical decisions is that you can always undo them. [...] I'd rather make a decision that turns out to be wrong later than waffle about possible alternatives for too long."
Microsoft, who thinks very clearly and thoroughly over their decisions regarding Windows.
At this very moment, my dad's computer is attempting to download Windows 10 in the background, automatically without asking permission.
He has Dialup internet.
Let that sink in.
Clear and through decisions my ass.
He's managed lead one of the most elaborate software development projects ever undertaken for fifteen years, taking it from a tinker-toy up to one of the most successful of all operating systems. That's pretty impressive. Managers may not produce anything directly of value themselves, but that doesn't mean they are not important for the success of a project.
In the late 1970ies and early 1980ies, especially the University of Berkeley in California (UCB) added a lot of valuable tools to UNIX, which on many commercial Unixes were installed in /usr/ucb. They even started to reimplement Unix from scratch and created their own distribution of a UNIX kernel and a userland, called the Berkeley Software Distribution (BSD). AT&T, which acquired Bell Labs, the owner of the original UNIX source code at the time, tried to claim ownership on everything that was added to UNIX with the argument, that all the programs and extensions were derivative works of the UNIX source code.
To avoid a similar disaster, Richard M. Stallman tried to start from scratch, creating a complete UNIX environment which was not tainted by any proprietary code, and also invented a licence that guaranteed that it remained so for all eternity.
I used GNU and other free software tools on SunOS several good years before Linux existed. The GNU tools were better in every way than the SunOS ones. Each GNU knockoff of a UNIX tool had many more features. The C compiler was better than the Sun one, and so was the debugger. There were many new applications that I used that didn't exist on SunOS. At some point I was running a system where SunOS was just a kernel, and everything else came from free software. Linux mostly replaced this SunOS kernel by a different kernel - nice, but not a mind-boggling innovation.
At the time of Linux's gestation, BSD was under a legal cloud because of licensing issues with AT&T - a nice quote from Linus is "If 386BSD had been available when I started on Linux, Linux would probably never had happened", and 386BSD was only not available because of the ongoing legal cases.
Each GNU knockoff of a UNIX tool had many more features.
Yeah, but they were missing features too, like for example that feature where sedcore dumps when you give it a "long line": GNU sed lacks that feature. Ans so on.
Facetiousness aside, the GNU tools didn't just have more and richer features, they were much, much better implemented and even the core feature set was more solid, more reliable and often substantially faster.
I remember in the 90s having to work on a mishmash of SunOS (was it SunOS or Solwaris then?), IRIX, HP-SUX, AIX, Digital UNIX and maybe one other that time has removed from my memory.
First order of the day was always to install the GNU tools because oh my god the system tools were bad on those platforms. Slow, features ossified from two decades before, arbitrary length limits, terrible error messages. Yuck!
Shit, many of the machines didn't even have a shell with tab-completion installed, and certainly not installed by default. The next thing was then to install a version of vi which didn't stink. Back then I used elvis.
Back then GCC was not a 100% clear winner. In terms of engineering it was a better compiler. Much less frequent coredumps, more solid and so on. Problem was it didn't have a great optimizer then and frequently the otherwise worse system compilers produced substantially faster code. GCC is now top notch.
One thing though, GCC has only just caught up to the late 90s ear HP-UX compiler in that the C++ compiler then would offer a list of "near matches" for when an identifier doesn't exist, something GCC only has in a pre-release version.
SJW n. One who posts facts.
Linux was successful because most of his decisions turned out to be right. The guy is a genius.
I'm not sure decision-making is really his big thing. The first reason Linux was successful is that he's a doer, there's plenty of flag-wavers that want to lead other people but who couldn't get a kernel project off the ground if their life depended on it. Linus is more like the first soldier charging, everyone else coming up from behind. Git is another fine example of this, if you know exactly what you want then just do it yourself. You don't wait around for someone else to write it for you. Obviously this is also a bit of luck with timing, but it's still not a common quality.
The second reason is that he managed to let go, so many people when they create something it's their baby and they want to control everything about it. I'm sure he was as opinionated as ever, but he wanted patches and mailing list discussions. That's why he got talked into using the GPL, it would have been easier to just sit in a corner and say I'm working on it, leave me be. And it never would have become more than a little hobby project by a CS student that'd die when he got a job or girlfriend and couldn't commit the time.
The third reason and maybe biggest is that he never started getting into business or politics, I remember him saying something like that he's building the best kernel he can make and if that'd dethrone Windows it'd be a wholly unintentional side effect. Which means that he's not taking guidance from marketing and sales on making an ABI so you can have proprietary blobs so you can increase revenue or go off evangelizing like RMS, to him the kernel is the ends not simply a means to an end.
Also I'm sure he could have become a CxO somewhere if that's what he'd wanted, but he never wanted the suit. Now many engineers don't want that, but a lot of us would do it anyway if it came with a fat paycheck. As far as I know he's not anyone's boss, the only authority he's got is final say on what goes into the Linux kernel tree. And he's always focused on having a vendor-neutral position, you don't get to hire him and tell him what to do next.
The fourth reason is that he managed to delegate, I've seen people stretch themselves thinner and thinner as the project grew and just burned themselves out. It might come naturally to a manager whose main job is delegating anyway, but it's always hard for a person who likes to know the details to accept that you can't be everywhere in every discussion reviewing every line of code. I think trust comes hard to Linus, he's erred on the side of caution and found conservative maintainers that are in it for the long run though he might have lost some good but impatient talent along the way.
He's always come across to me as a very pragmatic kind of smart, I think "street smart" would be undervaluing it but not the kind of academic 150+ IQ kind of smart. Just a fairly straight forward engineer who will dead-end discussions he won't have or arguments he won't accept in a blunt and occassionally rude way. I'm not sure his decisions are the best, but he's pretty good at cutting through the fluff and getting to the core of the issue. I wish I could do that in my job, no one hour meetings to "discuss" things. Give me the 30 second elevator pitch and I'll tell you if it's worth bothering with. Sigh, a man can dream...
Live today, because you never know what tomorrow brings
I'd rather make a decision that turns out to be wrong later than waffle about possible alternatives for too long
Linux was successful because most of his decisions turned out to be right. The guy is a genius.
QFT, I would actually further argue it is lucky he was right so often as he has shown a complete arrogance and unwillingness to admit when he is wrong despite what he says.
Nope. Linus is perfectly willing to admit he is wrong when proven so. Don't confuse that with backing down out of politeness to appease and avoid confrontation. He doesn't do that, and thank goodness for that.
Here's the thing that many people don't understand: Linus places *technical correctness* above all else.
That is one of the reasons Linux has been successful - he is unwilling to compromise that technical correctness for the sake of politeness, "getting along", appeasement, "business reasons" and the like. That, coupled with the fact that he's a very good engineer and project leader has kept the project on a steady path of constant and *consistent* improvement.
In the early years of the project, that was really important, IMHO, because Linux wasn't perfect and often inferior to an existing technology. But it was good enough, generally rock solid when it got things right and everyone could count on the fact that it would improve rapidly and consistently without much backsliding, if any. In other words, what Linux was good at, you could count on staying good, and what it wasn't good at *yet*, you could count on getting better in the future.
Now that I think about it, that sense of future reliability was probably a very important factor in the success of Linux, because it allowed people to lay the foundations for projects and businesses that relied on Linux, and by they time they were ready to go into production, the kernel was solid enough handle the job, usually at a fraction of the cost of existing commercial solutions. In other words, Linux turned out to be a safe bet. So Linux adoption was quite rapid (as soon as it was ready to take on a task, if not slightly before) and steadily increasing. I attribute that in no small part to Linus and the rest of the kernel developers, both because of the 'willingness to be wrong' (which kept the project moving steadily) and the complete unwillingness to let things stay wrong when it was clear they were.