Recently NewsForge published an interview with Linus Torvalds on the similarities and differences between the Linux kernel and the BSD operating systems. As a follow-up, NewsForge asked similar questions of OpenBSD’s Theo de Raadt, and NetBSD’s Christos Zoulas.
Theo de Raadt of OpenBSD didn’t seem very open minded…
Does anyone have a link to Linus’ remarks?
“Theo de Raadt of OpenBSD didn’t seem very open minded…”
lol because linus is ?
answer -> no
I’m not saying Linus is either. It just strikes me funny as someone from a project called “Open”-BSD being so narrow minded.
http://os.newsforge.com/os/05/06/09/2128249.shtml?tid=2&tid=8
One could say the same thing for RMS. These guys just have a very ideology. Theo de Raadt is very protective over, what I would call, the institution OpenBSD. They are doing things their way, they don’t compromise, if you don’t like it don’t use it.
This might seem very elitist, but ensures that OpenBSD stays the way it is, doing just what is set out to do.
If you would like to take the concept of OpenBSD and rather would have it another way, nobody is holding you from taking the source and go ahead and do it, just give props where it’s due, that’s as far as the restriction go BSD-license wise.
While we have an excellent testemonial from Christos Zoulas (the best of the three, IMHO), quoting, or not, Theo would be exacly the same. He didn’t add anything to the discussion, except complaining about GPL.
Theo can be a pain in the ass. Talented programmer, of course.
A prime example:
http://www.derkeiler.com/Mailing-Lists/FreeBSD-Security/2002-06/100…
Seems to boil down to availability of features and the design of the systems themselves. I’ve always been quite impressed with the machine/bus independant device layers that NetBSD developed, and that the other BSDs have adopted, and am quite pleased with the fact that Linux is now moving in a similar direction. There is technically no reason why you should have more than one driver for any given device, regardless of how many different busses or platforms one needs to support.
While it’s true that Linux has more device support, and is in many ways more featureful than the BSDs, it seems to me that the BSDs tend to do things more correctly overall WRT basic architecture (bus_dma, bus_space as examples), reducing redundancy in the kernels, which in the long term makes the systems more maintainable.
This is not to say that there are not things about BSD I personally find to be anything more than “sub-standard” (SMP/NUMA and kernel threading support for example), but I personally prefer that things be done cleanly and correctly as early as possible as opposed to rushing features out the door.
That said, that’s one of the great things about having so many different projects, if one does not support your current needs, there is very likely going to be another that will, and as a whole, we are all better off for it.
He didn’t add anything to the discussion, except complaining about GPL.
“Nor can we permit GPLed code into our source tree, because the GPL has restrictions beyond “give credit.”
If that’s a complaint about the GPL, then when I told my girlfriend she looked pretty the other day, I must have actually meant she looked terrible. That must be why I got slapped! Seriously though, there’s really no complaints.
Maybe he wasn’t the best to discuss the technical merits though.
That said, that’s one of the great things about having so many different projects, if one does not support your current needs, there is very likely going to be another that will, and as a whole, we are all better off for it.
Exactly! And might I stress the word, “NEEDS”. Needs has nothing to do with advocacy, zealotry, or otherwise. It has nothing to do with GPL vs. BSDL vs. proprietary. It’s about getting the job done, maybe even the best way to get it done.
I took it for complaining, since what he calls restrictions, I call it a safeguard to protect my own, and the community, interests. So it was a smooth way of whining, not being factual.
Theo de Raadt: I don’t know. I have never run Linux.
What’s the use asking him then?
Theo de Raadt: Well I am sure by now you all know that Linux is just a kernel, while OpenBSD …
Actually you can stop reading right THERE.
Although the outcome is somewhat interesting. The “wrong questions” are asked to the “wrong people”.
Linus is “solely in the business of” writing a Posix compliant kernel, not a complete OS. Also, being the publically a-politcal creature he is, Linus isn’t in the business of creating controversy by being insightful on two different platforms.
Theo de Raadt is “solely in the business” of being overprotective and abrasive about any topic touching upon OpenBSD. No insights whatsoever to be gleaned.
Christos Zoulas was the only one interviewed, who gave interesting tidbits and wasn’t evasive nor abrasive about the “classic schism” between the BSDL and GPL eco-systems.
If any, the only positive note to be distilled from this interview series is that NetBSD seems to be developed by very open-minded people. Makes me wonder what NetBSD is like.
I took it for complaining, since what he calls restrictions, I call it a safeguard to protect my own, and the community, interests. So it was a smooth way of whining, not being factual.
Nice try, but the safeguards in the GPL are implemented through restrictions on what can be done with GPL’ed code. And since Theo doesn’t want to be safeguarded, his is perfectly right in feeling unnecessarily restricted by the GPL – and stating that doesn’t constitute whining.
Linux is unique among operating systems in that there are “distros”. Maybe Solaris will change that, but what some people call “freedom of choice” also hinders Linux adoption on the desktop…along with no gui standard (which of course the BSDs don’t have either, but are also irrelevant to the desktop…unless you count OSX).
Why didnt NF ask anyone from FreeBSD?
I personally feel that Apple wanted more control over the kernel and the BSD layer. So even if they are using opensource to sync (and re-share) their kernel, I think their choice of not using Linux had more to do with the amount of control they would have on the kernel. Also, consider the BSD world… there is a tradition for forks… Free/Net/Open/DragonFly etc. It would be easier to fork one, keep syncing the good patches and keep one’s control over it.
Please correct me if I am wrong, but doesn’t OSX use FreeBSD with a Mach kernel and not just FreeBSD with a custom GUI?
Apple’s choice of BSD does have something to do with the BSD license. But it is not the main reason. There are technical ones as well.
OS X is built on the Mach microkernel. When it was developed at CMU the developers started with BSD and changed the pieces, so they are closely related. Mach was always meant to host a BSD environment, and BSD is a natural fit. It is in the design docs. NeXTStep, of which OS X is a direct descendant, was based on Mach + BSD 4.2, so OS X is just continuing the tradition. Also Avi Tevanian who worked on Mach and worked for NeXT is now a VP at Apple, so he brought his technology with him.
There are many reasons why OS X is BSD based. I am also fairly certain that Apple never considered using Linux.
Sure… that’s the evolutionary side of it. However, consider the amount of work that needs to be done to get the BSD4.2 + Mach to the stage where FreeBSD is now. Consider the stage where Linux is now. Consider the developments in the microkernel world with the L4 and Pistachio work. And now consider the effort it might have taken for apple to just switch to a new kernel and port the userspace to it given the fact that they were ready to open source their XNU+BSD userspace anyways.
There are many reasons why OS X is BSD based. I am also fairly certain that Apple never considered using Linux.
And the BSD in OS X includes userland. The fact is there isn’t a single reason why Apple should have used Linux. Can anyone suggest at least one?
But if it was going to be BSD based anyway, why not use the BSD kernel over the Mach?
“Why didnt NF ask anyone from FreeBSD?”
They did. No one replied in time.
I didnt notice the last line or may be I thought it is some kinda copyright.
It’s not about being his feelings or not, but the evasive way he speaks about it, suggesting whining instead of just stating facts.
The BSD kernels have problem with smp, and are not as efficient as Mach or Linux. Apple’s Powermac line all are smp. Apple could have employed people to fix this problem, but they didn’t for whatever reasons.
“But if it was going to be BSD based anyway, why not use the BSD kernel over the Mach?”
For starters, at the time, none of the free, open source BSDs had kernel threads, and the message passing infrastructure is used for OS X’s IPC. The native file format also allows for things that are (to my limited knowledge) not possibe with (for example) ELF; such as the ability to host binaries for multiple distinct processors in a single file (what will help to make the transition to Intel based Macs easier).
The version of Mach that they started with was already thread and SMP safe, and had been ported to a number of different CPUs already, so starting with any one of the then existing BSD kernels would have required them to do a whole lot more work than taking the road that they did.
consider the amount of work that needs to be done to get the BSD4.2 + Mach to the stage where FreeBSD is now. Consider the stage where Linux is now. Consider the developments in the microkernel world with the L4 and Pistachio work. And now consider the effort it might have taken for apple to just switch to a new kernel and port the userspace to it given the fact that they were ready to open source their XNU+BSD userspace anyways.
OS X uses Mach 3.x + FreeBSD. NeXTStep used Mach 2.x + BSD 4.2. The BSD layer is basically just user-land utiltiies with the BSD programming environment. The BSD layer translates BSD system calls, signals, etc. into syscalls, etc. that Mach can understand. FreeBSD is a 4.4BSD derivitave so the upgrade was relatively simple. This was a much simpler transition than using a whole new kernel. The OS X developers came directly from NeXT, so they already knew Mach + BSD. It was a no-brainer for them to use Mach + FreeBSD. It mostly amounted to replacing a bunch of files and tweaking the new code. Besides, when the made the decision back in 1997-1998 Linux was not nearly to the point that it is now.
It is incredibly nice of Apple to provide Darwin as Open Source. They are continuing the BSD and CMU Mach traditions that way. They never were required to do so, however. The move basically allows them to get developer tallent for free and create a community around OS X very quickly. Their decision to release Darwin has nothing to do with their choice of BSD over Linux.
Don’t forget that Apple has lots of UNIX expertise and history. They had (have?) an AT&T license for UNIX and developed, for a while, a SysV based UNIX called A/UX. They also did play with Linux for a while. They developed MkLinux. This was a version of Linux that used Mach and ran only on Mac hardware. These technologies were available to them even before they bought NeXT.
When OS X started development Mach + FreeBSD was a more mature solution than Linux. It also had the benefit of being a MUCH simpler transition which allowed them to continue using the NeXT technologies easily. It was also an easier transition than using SysV. It didn’t require an AT&T license for SysV. L4 would have also been a huge transition. L4 is very different than Mach and would haev been a major pain to transition to. Also, I am not sure if L4 was really mature in 1997-1998.
When Apple bought NeXT they had several UNIX options available. They went with the technology that gave them the quickest time to market and best utilized their avaiable developer tallent.
“The BSD kernels have problem with smp, and are not as efficient as Mach or Linux.”
It’s not so much that the BSDs have problems with SMP, it’s that at the time, they had *no* support for it (in the case of NetBSD and OpenBSD), or very limited support for it (in the case of FreeBSD).
Linux’s SMP capabilities at the time were pretty horrid as well. XNU isn’t an especially high performer, but at the time, it had kernel threads, a decent message passing API, SMP support, and a fairly well tested VM system. As they had purchased NeXT, there was really no better option for them at the time, and to this day, it’s still the best choice they could have made.
Hmmm… I was under the impression that the Mach only handled the process and addressspace side of the kernel. With all the BSDs (which started with a microkernel based design but essentially became monolithic), the “BSD” part (which later got fused into the kernel address space) handled stuff like VFS, filesystems and other UNIX specific stuff. This is in addition to the plain userspace libs/headers and tools which are again derived from BSD.
Plus, I used to think that BSDs were based on the Mach itself. I am not sure what happened after the lawsuit (perhaps they got rid of the Mach part and made their own process/addresspace handling component… refered to as the freebsd ‘kernel’ by you?).
Yeah… in the light of the situation in the kernel field in 1997/98… things were certainly different. L4 I think is a farely recent development (My bad… sorry :-P).
“Makes me wonder what NetBSD is like.”
Smooth
Ok, I am nit-picking now, but…
Take a look at http://www.levenez.com/unix/history.html
You will see that in 1985 Mach branches off of BSD, not the other way around. The original BSD (From the UC Berkeley CSRG) was a drivitave of the UNIX Time Sharing System. UNIX, and BSD are both monolithic kernels. They pre-date the Microkernel idea. Today’s BSDs (Free/Net/Open/DragonFly) are direct desecendants of the original BSD, and therefore also monolithic in their kernel design.
Take a look at http://en.wikipedia.org/wiki/Microkernel for more information.
Also the lawsuit was between Novell/USL and BSD. It involved AT&T code in BSD. It had nothing to do with Mach.
Really shows the difference between the NetBSD and OpenBSD mindset…
OI! NETBSD OI!
.adam.
> The BSD kernels have problem with smp, and are not as
> efficient as Mach or Linux.
More efficient at what? Mach is not really a high-performance kernel, and the BSD single server used in OS X does not have fine-grained locking. All of this discussion regarding Mach’s threading primitives ignore that OS X started life with giant locking because of the design of the rest of the kernel, and still has coarse locking. Apple could sell PowerMacs with four processors standard, and it wouldn’t magically make their threading performance any better. Then there’s the overhead of the layering, on top of the overhead for Mach.
> There are many reasons why OS X is BSD based.
> I am also fairly certain that Apple never considered using Linux.
I wouldn’t be absolutely sure on that. For years Apple have actively developed MkLinux, which was Linux running on top of a Mach Microkernel.
Actually my first encounter with Linux was trying to install MkLinux on a PowerMac 7600 (wasn’t all that difficult, actually the first LinuxPPC versions were a bigger pain in the butt to install, because you had to dig around in OF manually).
Performance was crap, so the project went really nowhere (just look at http://www.mklinux.org/ who intended to further develop it but the latest date on the news page is some time in 2002…), the main reason why it survived for quite a time was that you didn’t have to poke around in OF to run it, (=”easier for non-geeks”) and it was probably the only Linux to run on NuBus PowerMacs.