The state of Unix (Jun 18/07)

Oneof the odd things about the Linux movement this year has been the extent to which it has become increasingly defensive about the technology it borrows from Solaris.

As most people know Linus Torvalds tore a rant out of Sun last week - here's part of what he said:

Here's a cynical prediction (but backed up by past behaviour of Sun):

- first off: they may be talking a lot more than they are or ever will be doing. How many announcements about Sun and Linux have you seen over the years? And how much of that has actually happened?

- They may like open source, but Linux _has_ hurt them in the marketplace. A lot.

They almost used to own the chip design market, and it took quite a long time before the big EDA vendors ported to Linux (and x86-64 in particular). But when they did, their chip design market just basically disappeared: sparc performance is so horribly bad (especially on a workstation kind of setup), that to do chip design on them is just idiotic. Which is not to say that there aren't holdouts, but let's face it, for a lot of things, Solaris is simply the wrong choice these days.

Ergo: they sure as hell don't want to help Linux. Which is fine. Competition is good.

- So they want to use Linux resources (_especially_ drivers), but they do *not* want to give anything back (especially ZFS, which seems to be one of their very very few bright spots).

- Ergo: they'll not be releasing ZFS and the other things that people are drooling about in a way that lets Linux use them on an equal footing. I can pretty much guarantee that. They don't like competition on that level. They'd *much* rather take our drivers and _not_ give anythign back, or give back the stuff that doesn't matter (like core Solaris: who are you kidding - Linux code is _better_).

This was part of a much longer term discussion of the changes being considered for the GPL and, of course, driven by a number of "environmental" factors including speculation about Sun's "Project Indiana" and the Microsoft patent agreements so many Linux distributors are getting forced into.

The proximate cause, however, was this bit from comment by Ingo Molnar:

Secondly, ZFS might be interesting in theory, although our prior experience of having compatibly-licensed filesystems ported over to Linux has been pretty negative: XFS ended up being an integration nightmare - and that doesnt have to do anything with the qualities of XFS (it's one of the cleanest Linux filesystems, if not the cleanest), the problem is that components within a kernel are very tightly integrated and rarely does it make sense to port over more than just drivers or maybe libraries. And that's i guess what OpenSolaris lacks and which i suspect it is mostly interested in: lots of nice Linux drivers ;-) XFS, the largest Linux filesystem is 100K lines of code - and ZFS (i've never seen it) is very likely smaller than that. Linux drivers on the other hand, as of today, are _3.7 million_ lines of code and enable Linux to run on 99% of the hardware that is produced today. Guess which one has the larger strategic significance? ;-)

You'd think Molnar's comment would make sense but, on net, it probably does not.

There's no doubt, of course, that a lot of the people who're unhappy with OpenSolaris cite issues related to the absence or inadequacy of particular device drivers - I personally, for example, run MacOS X on a laptop largely because it makes working with things like cameras and other people's overhead projectors a lot easier than Solaris does.

Molnar assumes, however, that it's easier to port and maintain a linux device driver for Solaris than it is to write and maintain a native one - and that's generally not true. There are very fundamental differences in how devices are conceptualised that make porting non trivial; and, more importantly, Linux driver maintenance is affected by so many external factors -including kernel change, hardware change, code fads, and licensing - that such ports require nearly continual re-invention.

At the very grossest level what's really going on with respect to drivers is a continuation of the object versus furball debate that fired off Torvald's first changes to the Minix kernel -changes that traded design clarity for performance by adopting x86 interrupts as the primary means of initiating a process change and that still underlie the fundamental differences between a Solaris leaf driver accessing devfs and a Linux driver that doesn't have to - but relies on unstable kernel and hardware structures for both efficiency and process isolation.

At the more immediate level what's going on is that Linux is under threat with these guys feeling lots of pressure and toeing the party line by acting as if Sun is the enemy: but it's not; and with up to one third of everything in the typical Linux distribution based on code donated by Sun they have to know it.

In truth a lot of the pressure they feel is coming from Sun's success with OpenSolaris and the CDDL - but that's driving positive change for the entire Unix community: Solaris, BSD, and Linux. Unfortunately, however, their refusal to understand who their friends are has the unhappy side effect of making things easier for predators like IBM and Red Hat while fracturing a community whose natural external enemies are ignorance and Microsoft - not Sun and the BSDs.