Unique innovations are wonderful, but do Linux distributions have to differentiate at such low levels?
The whole PC world is plagued by a lack of good standards. Some of the most frustrating standards problems are hardware-related. For example, what brainiac thought it was a good idea to make the FireWire connectors and USB connectors on motherboards identical? The motherboard manuals are usually careful to point out that if you mix these up, you can damage the motherboard. That's nice, but who made it possible to mix them up in the first place? Dumb.
It's just as troubling to see a continuing lack of good, comprehensive standards among Linux distributions. As with hardware, you can almost always find a way to make something work if you are careful and know what you're doing. But that's no excuse for the lack of standards across distributions, and the few inadequate standards that exist.
Here's what inspired this complaint. If you've been following my columns, you'll know that I've been trying to put together a MythTV box. I followed several how-to pages for installing special drivers for the tuner cards I have tried. Most of the published instructions, including those linked to by some hardware vendors, tell you to place firmware everywhere but the place Ubuntu stores firmware. Ubuntu looks for firmware in the /lib/firmware/<kernel version> directory. Most instructions tell you to put the firmware in /usr/lib/hotplug/firmware. One card, the Hauppauge PVR-150/500, wants firmware files in multiple locations, including the /lib/modules/ directory. It uses different filenames depending on the version of the kernel and driver. I've tested three cards so far, and I finally ran out of patience and used a shotgun approach. I put copies of the firmware just about everywhere but my son's sock drawer. All the drivers work now. I have no idea which copies of the firmware files they are finding, but I don't care anymore.
Personally, I like the Ubuntu approach to locating firmware. Ubuntu uses udev, which many agree is superior to hotplug. It lets you install separate versions of firmware based on the version of the kernel.
Some may argue that this differentiation is what open source is all about. If Ubuntu's choice is good enough, other distributions will cream-skim it, and it will become the standard. Fair enough, but wouldn't it be more efficient for customers if the distributors simply agreed on such fundamentals as udev and where to put firmware? At least that way we'd be less likely to run across how-to pages that don't apply to our chosen distribution.
As much as I like this one thing about Ubuntu, Ubuntu is far from perfect when it comes to establishing or observing standards. Try to install a vanilla kernel on Ubuntu and see for yourself. You'll notice that you can no longer mount some disk partitions. Ubuntu, by default, installs and uses a logical volume manager (LVM) and enterprise volume management services (EVMS), one or both of which break how Ubuntu works if you use a vanilla kernel. I managed to fix the mount problem by editing the configuration files for LVM and EVMS to ignore all the drives on my system. The next version of Ubuntu will add ivman, yet another volume manager. I can't wait to find out what I'll have to reconfigure when the new Ubuntu is ready.
Unfortunately, my suggestion that distributors collaborate is utopian and unrealistic. They don't even work as a team in ways that would benefit them most, such as pressuring hardware vendors to preload Linux. When it comes to standards, most distributors aren't even willing to agree on a package format let alone build a package system where you could install a Mandriva RPM in Fedora without running into dependency problems. They can't agree on where to put firmware files or whether EVMS should be part of the basic system.
The best possible solution would be for all major distributors to build on a single base distribution. This was one of the original ideas posed when Linux Standard Base was first formed, but distributors rejected the idea in spite of the fact that it would save them all a lot of duplicated effort. Why are distributors disinclined to agree on a comprehensive standard distribution? Competition. A standard base distribution would lower the barrier of entry for new competing distributions. Put more bluntly, despite all the lip service Linux distributors give to how their commitment to open source and freedom empowers end users, they really do like having a degree of customer lock-in. Their lock-in just isn't as severe, obvious, destructive or effective as Microsoft's lock-in.
Don't get me wrong. I don't want to see the Linux market homogenized so much that distributions start to disappear. I'm glad there are many distributions from which to choose. I would simply like to see them differentiate their distributions at a much higher level, a level that eliminates needless compatibility problems. But I confess that there are times when frustration leads me to the temptation to start a crusade to get everyone to run Debian. What do you think?