Feb 26, 2004

Thank Apple For FreeBSD

I have been running FreeBSD since the 3.x days. Right around this time Linux became popular but I stuck with FreeBSD for several academic reasons. At that point one was as good as the other, but as time went on this changed. Linux started gathering a huge following and it really hit its stride. The developers made leaps in bounds in hardware support. Meanwhile, FreeBSD crawled from 3.x to 4.x, which was a great improvement to be sure, but not as rapid or large as what Linux had been offering.

Being locked into FreeBSD by familiarity and investment at that point I wistfully watched the GNU community race ahead. I wish something would start a similar firestorm of FreeBSD development. I thought nothing of it when Apple bought NeXT in 1996. The Rhapsody project, which was basically just adding some Apple technology to OpenStep, didn't interest me. When Steve Jobs announced Mac OS X in 1999, however, my ears perked up at the mention of my favorite Unix. Apple was going to update the very cores of OpenStep into something new. FreeBSD was going to be a huge part of that.

Since Mac OS X v10.0 was released in 2001, Apple has been filtering BSD code in and out of their kernel, userland, and libraries. This code then makes its way back to FreeBSD. Apple's pattern is to sync every major Mac OS X release with the latest major FreeBSD release. For example, Mac OS X v10.1 corresponded to FreeBSD 4.4 and Mac OS X v10.2 matched up with FreeBSD 4.7. By the time Apple released Panther, their contributions back into FreeBSD had amassed into a new FreeBSD milestone, the 5.x branch. Mac OS X v10.3 contained bits of both FreeBSD 4.9 and FreeBSD 5.1.

Mac OS XFreeBSD
Mac OS X v10.1FreeBSD 4.4
Mac OS X v10.2FreeBSD 4.7
Mac OS X v10.3FreeBSD 5.1

Figure 1: Mac OS X/FreeBSD correspondence chart.

Look at it this way, only after Apple started modifying FreeBSD 4.x and submitting their modifications did FreeBSD progress to the 5.x branch. The advanced VM and SMP code that allows Mac OS X to run so efficiently is the very same code that finally put FreeBSD on the level with Linux. I run FreeBSD 5.2 on a four-way Xeon box at work and thank Apple every day. If it weren't for the Mach micokernel from Apple we wouldn't be able to do these nice things with FreeBSD now or probably ever.

It's also kind of ironic how such a big deal was made by Wind River Systems buying out both BSDI and Walnut Creek Software. (Does anyone remember this?) The plan was to merge BSD/OS into FreeBSD and sell a special enterprise edition of the operating system while still maintaining the Open Source project. Sadly this fizzled out. No one ever predicted that Apple, of all companies, would ride in with the cavalry and pick up the pieces. Apple has done much more than Wind River ever managed to.

After such a long and precarious history FreeBSD is finally going somewhere and we no longer have to worry about the latest hardware support of when the next release will be. We're firing on all cylinders now, and within a couple more years there will be more FreeBSD installs than Linux or Solaris! I'm not so proud that I can't see what is behind this. Apple saved FreeBSD and I have no problem admitting or accepting that. I doubt many others who use FreeBSD do, but I just wanted to point it out.

Thank you, Apple, for saving FreeBSD.

1 comment:

  1. Unfortunately, this is all pretty much wrong. Especially:

    "I run FreeBSD 5.2 on a four-way Xeon box at work and thank Apple every day. If it weren't for the Mach micokernel from Apple we wouldn't be able to do these nice things with FreeBSD now or probably ever."

    FreeBSD 5.x does not use the Mach microkernel. The 5.x improvements were more the result of Yahoo's work than Apple's. I'm not aware of a single improvement to SMP committed by Apple.

    ReplyDelete