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.")
I've thought they've ended this flame war several years ago?
Well then, here we go, let the flaming commence...
Wow,
he couldn't have pushed the "Linux succeeded because BSD had legal troubles" thing any harder
What was that? Three mentions of it?
I don't personally agree, I think Linux succeeded on it's own merit, but anyhow
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
The reasons may also be more to do with Linux and the way it was run! Early hackers have noted that they preferred BSD, but could not use it due to lack of dual booting, this would have meant deleting windows which may have been needed for work. It was also easier for aspiring hackers to contribute to Linux, you didn't have to be one of the inner circle to contribute. There was also a lack of politics, persons within the rival operating systems had noted and open differences which would have affected work.
Minix was my first experience with a Unix-like OS (on my original IBM Personal Computer). It was a wonderful starting point to lead on to bigger and better things.
I'm sure he knows more about operating system design than I will ever even want to know, but he knows jack shit about why Linux succeeded and it has nothing to do with lawsuits against BSDi, which in turn has nothing to do with BSD-4.4-lite, upon which all free *BSDs are based (and so is OSX, for that matter, although it may still retain code from BSD-4.3 for all I know, via NeXTStep.)
Linux succeeded because of the GPL, plain and simple. It had less than a year's start before 386BSD, which was not affected by the lawsuit.
Tanenbaum will say anything to make himself sound like less of a douche for placing such strident restrictions on Minix and thus killing it, and so he wants to take anything away from Linux that he possibly can. If he has to ignore history to do so, so be it. Thankfully there's Wikipedia.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
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.
One thing doesn't exclude the other.
And both Linux and Minix has their merits, but Linux has one big advantage and that is that it has so many drivers that it did overtake Windows a while ago. You may find cases where you miss a driver for Linux for your pet device but it's starting to get unusual unless it's a very new device.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
There's no debate any longer. It's quite clear that BSD-style licenses promote freedom, while the GPL goes out of its way to remove freedom.
That kind of depends who you are and whose freedoms you're concerned with, actually. GPL promotes certain types of freedom, where BSD goes with the idea that "freedom" means "no restrictions whatsoever". I dont think theres a clear cut "this one is more free" because both are certainly correct uses of the word "freedom".
The GPL license is all about limiting the freedom of people to do what they want with the software.
Come on, you know better than this. The GPL compromises the freedoms of future developers in order to guarentee that the end user at LEAST has the freedom to modify and redistribute.
Wikipedia sums it up well:
The distribution rights granted by the GPL for modified versions of the work are not unconditional. When someone distributes a GPL'd work plus his/her own modifications, the requirements for distributing the whole work cannot be any greater than the requirements that are in the GPL.
In a stricter sense BSD IS about maximizing freedom in the sense of anarchy; but US' society was formed with the idea that in order to maximize individual freedoms when groups are involved, you need to do so by setting restrictions (Bill of Rights, enforcing contract law, enforcing theft laws, etc). You lose some freedoms (the ability for a congressperson to vote on a speech law, the ability for you to take Bob's lunch) in order to gain a more stable, guarenteed level of freedom (being secure in your home, being able to agree to an enforceable contract, being guarenteed the right to political speech).
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.'"
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
Linux kernel started in 1991. Lawsuit started in 1992 and settled in 1993. Linux kernel 1.0.0 was released in 1994.
Good to know that mature BSD was no match to Linux v.1.0.0.
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.
A few years later I heard somewhere (May have been Wired) about this spiffy new Linux operating system. By then I had a (more or less) stable internet connection and the instructions were quite easy; download 20-some-odd slakware diskettes from Sunsite and you were in business. Nothing was mentioned about BSD. So I downloaded 20-some-odd diskettes from Sunsite and I was in business.
At least in my case, Linux won out over BSD largely due to marketing and the easy distribution method. No one every really talked about BSD, and Linux worked brilliantly for me, so I used Linux.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
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.
I have to say your right on the money with that statement. One of the things that made Linux so attractive was Linus et el put a lot of effort in allowing people to add driver support for hardware. It stands to reason making an OS for machines people slap together themselves you need to be able to quickly add support for a multitude of hardware. This alone is a huge reason for the success of Linux. The BSD developers on the other hand, had a clear idea of what hardware they wanted to support -- big ass servers -- so the means to support "oh look a new graphics card" type new hardware was low priority and never built in.
Having to work for a living is the root of all evil.
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'
I can say, with some authority, that Linux succeeded on it's own merit, mostly because it supported a broad range of commodity hardware. It got a boost because everyone started buying 386s, which were the first competent hardware for the IBM PC. There were lots of options back in the late eighties, all vying for some kind of position, but most of them had big problems of community: Coherent, MINIX, xinu, Xenix, Apple A/UX, netBSD, OS/2, OS-9, QNX, Lynx, etc. I looked at all of them as reasonable alternatives to the laughable PC operating systems of the day (MS-DOS and Macintosh System 7). NetBSD was a reasonable competitor right up through the mid-nineties, but Linux hardware support eventually blew it out of the water. By 1995 it was clear that Linux and the open source development methodology had won handily.
Yes, licensing had something to do with all of this, but so did Linus' management style: people wanted to work on Linux, and Linus did not turn them away: he welcomed them. I wouldn't want to say anything bad about Dr. Tanenbaum, I have the greatest respect for him and his work, but other than netBSD, none of the other free and open OSs of the day were making any attempt to take the general market, MINIX included. I remember looking at MINIX and rejecting it because of it's limitation to academic use (the limitation to the 286 wasn't that much of a concern, though it probably should have been).
just a ghost in the machine.
I've thought they've ended this flame war several years ago?
Several years ago when BSD based Mac OS X took over the Unix desktop market? ;-)
I think things are a little more complicated than in the 1990s with respect to BSD vs Linux.
People who buy into the "OSX is BSD" idea need to look a little more closely. Of course OSX has BSD code in it; all modern OSes do (even Windows). However, the XNU kernel is very different from the kernels of modern BSDs like FreeBSD and OpenBSD. While containing some BSD code it is also based on Mach and its own device driver framework. While OSX borrows BSD userspace components (like almost all modern OSes) it also depends on GNU ones, most importantly the development tools. The biggest way OSX differs from BSDs is in all the components the user sees, including the window system and GUI libraries; those are proprietary and can't be found in any non-Apple OS.
Though somewhat subjective, I think the typical modern BSD system has more in common with the typical modern GNU/Linux system than with OSX, especially if considering desktop use. Though all three contain code from BSD and GNU origins, only BSDs and Linux-based systems use traditional Unix-style monolithic kernels and X11 as the windowing system.