Editor's Note: It's Time to Break Up the Linux Monopoly!
Linux is Not a Monolith
Judging by the traffic on developer mailing lists, user discussion groups, and IRC channels, it's clear that there's only one way to derail the Linux juggernaut: by having the government step in and break up the potential Linux monopoly.
OK, so I'm being facetious here: Linux isn't close to establishing a monopoly, although it's clear that Linux is becoming a such a serious player in the server field that it threatens to seize some meaningful revenue from Microsoft.
But I am serious about breaking up Linux. And here's why.
One of the things that Microsoft did right with Windows is to offer it in different versions for different uses. Windows NT/2000 has been a success because it was marketed solely for servers and hardcore users, while Windows 95/98 was a good fit for the home/SOHO markets. And while there have been some spectacular failures along the way--anyone remember Windows for pen-based computers?--by and large the marketing strategy behind Windows has remained sound.
And so has the technical strategy of ensuring that Windows was relatively scalable in that applications could be written to work based on available resources, not because of specific Windows versions. A Windows application should be able to run on any Windows platform. High-end Windows applications will require high-end resources and perhaps some advanced features in Windows NT or 2000, but at their core they are Windows applications.
One of the major problems with Linux is that it tends to be ghettoized in the server field, which is where it's the most useful and the most entrenched. That's great: this server usage helped spread Linux more than any single commercial Linux vendor, and it's set the table for growth in the desktop and embedded fields.
But the needs of the desktop and embedded users are not the same as on the server. As the Linux kernel expands and expectations are raised, these disparities are even more pronounced. Let's face it: server installations don't require sound drivers and XFree86, while most desktops don't need multiprocessor or RAID support. And the embedded field--which certainly is not a monolith, either--doesn't need any of these.
Luckily, the embedded-Linux field has already forked into its own entity: it won't be long before we see embedded-Linux applications that won't run on a regular Linux desktop or server. (This is a good thing.) But we still have development on a single version of Linux that's supposed to fit all. True, the distros do a pretty good job of differentiating between server and desktop users, but their differentiations are not consistent.
So, my solution is simple: use the Linux Standard Base to define both desktop and server parameters for a Linux system. On one level, Linux is Linux, and LSB can reflect this. But on another level, the LSB as it currently stands (see http://www.linuxbase.org/spec/spec/book1.html for 0.3, the current version of the spec) really is so baseline that it's hard to apply in specific situations. An application written for a Linux server should not necessarily meet spec for a desktop system, especially where things like graphics and sound are concerned.
I don't expect much to come of this: leaders in the Linux community tend to focus so much on the kernel that they sometimes seem oblivious to the marketing and public perception of Linux. But let's face up to it: Linux is now mature and can't just keep relying on a core of enthusiasts to sustain growth. Linux remains amazing for having such an active developer community, but increasingly development is occurring in the corporation (IBM and Red Hat Software have literally hundreds of developers working on Linux development), and the long-term future of Linux lies in these corporate efforts. By breaking Linux development into server and desktop implementations with the core kernel development going on in its present form, Linux could gain even more desktop users while continuing its amazing growth on the server--and that growth bodes well for anyone interested in Linux.