Andrew Tanenbaum On Minix, Linux, BSD, and Licensing
An anonymous reader points out an interesting, detailed interview with Andrew Tanenbaum at Linuxfr.org; Tanenbaum holds forth on the current state of MINIX, licensing decisions, and the real reason he believes that Linux caught on just when he "thought BSD was going to take over the world." ("I think Linux succeeded against BSD, which was a stable mature system at the time simply because BSDI got stuck in a lawsuit and was effectively stopped for several years.")
No, Linux "succeeded" because BSD was frozen out of the market by AT&T at a crucial time.
Having lived thru that, I'd disagree. BSD was way too elitist, "oh, you wanna run a BSD flavor on a 386? Oh how cute, but you suck. We all use PDP11s here. We'll let you try, if you promise not to pester us with bug reports and things, now here's a nickel kid, go buy youself a real computer like a VAX.". Minix wanted you to buy a book and the hardware support was kinda limited so its unclear if you'd be wasting your money or not, which in the pre-amazon days meant finding out the ISBN and pestering an intimidating bookstore clerk to order it for you and then rolling the dice once it arrived. Linux? That was just some downloads off the local BBSes and/or early internet provider link, and everyone was mostly friendly most of the time, unlike the *BSD guys.
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
I don't understand how one can say BSDI suit could do anything much for Linux. The suit did not preclude the creation of FreeBSD/NetBSD and thus Linux and BSD both had opportunity. If the claim is that BSDI lent some sort of credibility/support, during that time Linux had none of that either (Red Hat didn't even technically have an offering until 94, and I would say it wasn't worth taking seriously until '97 or so).
Whatever went 'right' for Linux and 'wrong' for BSD had nothing to do with that suit.
XML is like violence. If it doesn't solve the problem, use more.
Linux was behind, but generally expressed a more practical set of sensibilities that caused the relevant bits to catch up and pass BSD a bit quickly.
All of them sucked on driver support, but I seem to recall Linux tending to getting more drivers more quickly than BSD. Some of the quality was less than stellar, but there was a willingness to go with something that mostly worked and refine it in the larger community. This sort of approach was pretty well required to work as a software platform running without the cooperation of the hardware platform you are on.
GPL may have scared off companies in the beginning and maybe even a few to this day, but the value of companies that would reject GPL and embrace BSD is rather low to the community. GPL forced the companies that *did* use it to contribute back. BSD-only companies felt any and all work they did was theirs and theirs alone and BSD upstream didn't benefit. Over time, it's snowballed and most successful companies cannot ignore the benefits of Linux. It may be common sense now that their is lower maintenance cost of submitting it upstream even if not required by license, but had GPL never made waves, the 'keep your code to yourself or else' mindset may have persisted.
XML is like violence. If it doesn't solve the problem, use more.
He comes off as a super-asshole in general. "I published a paper in 1978 on something very close to the Java Virtual Machine, but we never got much credit for it although we were years ahead of Sun. Such is life sometimes." Too bad it was just a paper. But the truth is that Smalltalk is the language which actually existed which deserves the credit that Java got technically, but it also went nowhere because it was neither packaged more marketed attractively. The state of documentation for Squeak is distressing. So, Java it is!
Tanenbaum is clearly grumpy about continually being asked questions about why Linux ate Minix's lunch, and he's very defensive of his stupid license choices which have kept Minix an "also-ran". Maybe if they couldn't get a rise out of him, people would stop asking him about it. As long as he says stupid quotable things about Linux the questions will keep coming.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
It requires the same amount of effort to politely redirect someone to the appropriate place, without mistreating the "ignorant". They are ignorant, because they don't know, they are trying to learn, but instead of being helpful, you turn to being abusive? I wouldn't call someone like that elitist, I'd simply call them an asshole.
Try doing a simple modification to the MINIX kernel like adding a new system call. The new system call doesn't even have to do anything interesting or touch hardware: just add some numbers and return them, for the sake of argument or something. Last I tried in MINIX this required touching something like 6 or 7 different files in the source. There are a lot of different components in the kernel that need to know about the new system call, which component it gets forwarded to, how to package up the message to send to that server. I think Linus is bang on when he says microkernels add complexity on to the interactions between components, which is where the worst of the complexity was to begin with.
Linux does run every component of the kernel in the same address space, which has its downsides (a buggy video driver can theoretically affect your network driver), but I haven't seen these downsides come up in practice. Truth be told, if one of your drivers crashes, there's little hope of maintaining a useful system and you'll likely want to reboot anyway.
As far as AST's assertion that Linux is "spaghetti" code, no no no, look at the code for yourself. The components in Linux are very well separated. Linux keeps them separated by coding discipline rather than by some technical enforcement (like different address spaces), but this discipline is kept up very well. I suspect the high-level Linux developers (like Linus) spend a lot of time and effort tracking people down and yelling at them for breaking this discipline and trying to put in some spaghetti, but in my dealings with the kernel, they've done a very good job of staying disciplined. I haven't come across anything in the Linux kernel that I'd call "spaghetti".
Back to the example of adding a system call, I think in Linux this requires 3 source files that need to change. I've only spent a few weeks on each of them, but in my experiences, Linux has the edge on MINIX when it comes down to keeping components logically separated. In Linux, what you do in one place, no other code ever needs to know about that. In MINIX, you have to worry about how and where to forward messages and, while it is sort of elegant in its design, but I don't see an actual benefit coming out of it.
When you came to BSD in 1996 you were five years late to the party, since 386BSD came out in 1991, and didn't support FDISK labels, preventing users from dual-booting. Indeed, early versions of FreeBSD and NetBSD, both of which grew from 386BSD, shared this lack. Linux used fdisk from the start (Linus not seeing a need for eight confusingly-identified partitions) which permitted dual-booting if you had partition slots free.
So you're being elitist, but ironically, not elitist enough to know what you are talking about.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
The question is not why Linux succeeded, but why Minix failed.
The answer is simple, Tanenbaum refused to develop a 386 version,
claiming bizarrely that there were so many 286's in the world
that people would always use them.
If he had brought out a 386 version of Minix
I doubt if Linux would have taken off.
My impression at the time was that he got bored with Minix,
and wanted to move on to other things.
But the way in which Minix has been written out of the Linux story
is very strange, in my opinion.
In its origins, Linux was simply a fork of Minix.
Admittedly Torvalds had to re-write everything,
but that was just because Tanenbaum had a veto
on Minix development, and only allowed a tiny handful
of devotees to add code.
Torvalds was infinitely better at getting a team
to co-operate with him.
That was the secret of his success.
In hindsight, perhaps, this is all clear. At the time, would you have bet your house on the proposition of 386BSD remaining unscathed if the BSDi lawsuit had come to a different outcome? But wait, I have a reference.
From Open Sources: Voices from the Open Source Revolution:
Yeah, totally clear how 386BSD was free and clear of the legal fog of war. And a huge debt owed by everyone to Marshall Kirk McKusick and friends who fought this battle on our behalf while Linux thrived under the legal radar.
In my own view, Linux had a crazy-making anthill culture, which appealed to many young coders with more energy than brains. But you know, I wouldn't bet against energy in retrospect. The annual ipchains rewrite boggled my mind. Not my cup of tea. An even crazier splinter group made hay with PHP, breaking just about every rule of thoughtfulness and elegance known to God and man. And look where that got them: pretty damn far.
I would personally, however, have jumped on the BSD wagon at the time had it been able to promote a coherent vision of life after lawsuit. What would be the balance be now if BSD had gathered twice as many elitist greybeards into the fold? I have a feeling it would have continued to lag in the department of crappy consumer product device drivers, compromising a major defection path from Windows 98. Greybeards don't do popularity worth a damn.
Debian zealots notwithstanding, Linux quickly became popular enough to become a willing host for binary blobs.
So the HP guy comes up to me (at the Melbourne conference) and he says, 'If you say nasty things like that to vendors you're not going to get anything'. I said 'no, in eight years of saying nothing, we've got nothing, and I'm going to start saying nasty things, in the hope that some of these vendors will start giving me money so I'll shut up'.
Hardware donations do not come from vendors who use OpenSSH on parts of their stuff. They come from individuals. The hardware vendors who use OpenSSH on all of their products have given us a total of one laptop since we developed OpenSSH five years ago. And asking them for that laptop took a year. That was IBM.
Yes, people have mentioned a million times how much BSD has done for OS X. What has OS X done for BSD? On the desktop it's fallen off the map, it used to be listed at 0.01% at hitslink now it's nothing. Nobody uses just BSD and I strongly doubt anyone using OS X contributes much to BSD so that the next version of OS X will be better. That I think would have happened with or without Linux. At least on the server side there's a few using BSD as-is, perhaps we'd have a BAMP stack instead of a LAMP stack. But without all the corporate contributions I'd probably be more of a Win/Unix market with BSD as a simplistic, free server.
BSD depends on people and corporations that are willing to give, give and then give some more. Would Linux be where it is if everybody has constantly grabbed features to put in AIX, SCO (before they turned troll), Solaris, OS/2, MacOS, Windows and so on? No. The BSD license lacks the self-preservation to exist as an independent product, sure the code won't go away but all the users disappear on proprietary spin-offs and so too in essence all the potential developers. With or without Linux it'd end up just as libraries for products people actually use. Then you can pound your chest and say our BSD code is in the TCP/IP stack of Windows, while Microsoft laughs all the way to the bank.
Live today, because you never know what tomorrow brings
Bullshit.
My experience with BSD development is that it comprises core teams of fairly smart geeks with tireless sycophants on the sidelines taken under the wings of the elders on the basis of their ability to suck up. This is why everything BSD beyond the kernel and a few specific userland apps is an also-ran.
And the BSD operating systems are "so damn solid" only in the sense that many parts are very mature and the pace of development is fairly slow, lagging well behind Linux for a good decade. This is not to say that stability isn't sometimes a good choice - which is why many people choose Debian.
Linux, meanwhile, is much more meritocratic. Your code good enough? We'll take it, even though we're not sure who you are. Big business wanting to contribute time, money and resources? We'll take it. Not up to scratch? We'll give you advice but we won't include you in anything mainline. Hell, we'll not only give you advice but we'll point you to the copious amount of documentation produced to help kernel and userland developers.
Here's a simple challenge for you: try writing a functional network card driver for Linux over a weekend. Now try the same in FreeBSD.
And to get it, you had to buy a book that cost more than I paid for a used car that year. (Yes, I did buy the book too!)
Sent from my ASR33 using ASCII
Tanenbaum has always been the kind of person with good technical insights, but no sense whatsoever about what makes something successful as a product or "in the real world." I have a lot of sympathy for that, because I'm like that as well. I'm a researcher - I write papers, they have good technical insights and contributions, they definitely impact the science of the field, and I hope that along the line they can affect practice - but I know there's a world of difference between what I do and making a product. Tanenbaum doesn't seem to get that.
And as far as the Java bit, yeah a LOT of people had that idea. It long predates what Tanenbaum did, back to o-code in the 1960's and p-code in the early 1970's (with the most popular version, remarkably similar to the Java/JVM model being UCSD's Pascal/pSystem). Those didn't take off like Java either - because there's a huge difference between having a good technical idea and having a successful product. Some is timing, some is "cool factor", some is marketing and sheer determination and drive. But superior technology, or having the first idea technically, has very little to do with it. See the success of MS-DOS or Windows for further examples... :-)
Any non-trivial software is sueable.
Not really, *BSD was taking off and the Linux devs made liberal use of the FUD that resulted from the lawsuit to scare people off of *BSD. Linux itself, by Linus' own admission, probably wouldn't exist if he had had a copy before he started Linux.
The GPL itself has its utility but in all honesty, let's be honest about the effect that had on developers early on that weren't just hobbyists. The BSD license is one of the main reasons that the internet was able to grow so quickly despite MS not having a viable TCP/IP stack for its OS until late. That never would or could have happened with the GPL just because of the way it's written.
In its origins, Linux was simply a fork of Minix.
Oh come on. How many people still believe this Ken Brown nonsense? Even Tanenbaum himself said this is complete nonsense.
"If 386BSD had been available when I started on Linux, Linux would probably never had happened."
Read the current article, then the one linked to another interview with Linus. It will become clear.
The simple answer (and probably one of the more correct answers) is GNU/Linux won because it works. I love BSD, especially OpenBSD. I buy OpenBSD's CD's to contribute money to the project because I admire the hell out of it, but rarely do I try to run it. OpenSSH? Amazing. And that it came from such a relatively small group, just shows what a complete powerhouse the OpenBSD group is. However, when I got my OpenBSD CD's in the mail, I figured let's do the twice-a-year dance where I attempt to run OpenBSD. Results? On my primary workstation, OpenBSD's X doesn't agree with my video card. On my primary laptop, though I can get OpenBSD to install via CD, once installed, it doesn't recognize my DVD drive, and on my EEE machine, it doesn't recognize my wireless. Now, let's look at one of my favorite GNU/Linux distros, Trisquel. Which uses the linux-libre "deblobbed" kernel. It works, flawlessly, on my workstation and both laptops. Zero un-free drivers, blobs, or software. People can come up with as many theories on why GNU/Linux overshadowed BSD, but in my case, and in the case of many, GNU/Linux works better. BSD might have more elegant, bug free code, but for the vast majority of users, that doesn't matter, working features matter.
To the best of my knowledge, the ath5k/madwifi drivers are the only Linux drivers to be ported from the BSDs (OpenBSD/FreeBSD) to Linux. Which other drivers out of the 56 Linux wifi drivers were ported from the BSDs to qualify the "large number of WiFi drivers were written for FreeBSD or OpenBSD and then ported to Linux" statement?
Linux has had its own 802.11 stack called mac802.11 since the 2.6.22 kernel four years ago which was developed by Devicescape. The only driver I know of that carried a (Net)BSD 802.11 stack over to Linux was madwifi which had net802.11, was never mainline and was superseded by ath5k... The madwifi driver never went mainline, nor did its net802.11 stack. Why do you think that the 802.11 stack from a BSD needs copying into a Linux driver when mac802.11 exists?
In 1992, the ability to put Linux on its own partitiion and have it coexist with DOS on a single physical drive was the *ENTIRE* reason why I originally decided to go with Linux instead of 386BSD, which was also freely available at the time, even though BSD offered considerably more functionality than Linux during that period.
It had absolutely squat to do with lawsuits.
File under 'M' for 'Manic ranting'