Will Linux Ever Get Out Of It’s Driver Mess?

Linux has a scalability problem. The current vision of Linux device driver Utopia is based around “stick your source code in our tree, and as we change our kernel interface, some one in the open source world will fix up your drivers.” This approach simply wouldn’t scale, as the number of drivers in the tree increases.

The Linux Kernel Driver Interface FAQ has a mini rant on how unimportant stable kernel interfaces are, but yet assures us that the syscall interface is very stable and will not break.

I believe the proof is in the pudding:

  • The number of applications that run on Linux is a function of the stability of the userspace interface.
  • The comparative lack of drivers running in Linux is a function of the instability of the userspace interface

In fact, if Linux developers would even make one tiny change in the syscall interface, they’d face such a huge outcry that RH, Novell and Suse would fork the codebase.

Even should the Linux kernel utopia be and there are thousands of device drivers in the tree, who’s going to update every driver when the kernel interface changes? Are these masses of non-existent developers going to show up and update drivers in lock-step? Face-it, not defining a stable driver interface is not a good practice. Even for open source developers.

It’s time the kernel developers recognize that it’s only a kernel that they are providing, and they do live in an ecosystem. Hiding behind the open source argument to allow them to bash hardware vendors does themselves no justice in the long run. For Linux to thrive, it needs to abandon it’s “Aryan-opensource-is-pure” bullshit and embrace the melting pot of an the ecosystem where different participants have different survival strategies. For instance, the enemy of hardware vendors isn’t the open source developers. It’s other hardware vendors.

The Linux Driver FAQ argued that it’s impossible to provide stable binary interfaces. Ian Murdock points out that

that it takes a better engineer to move a platform forward while at the same time making sure things don’t break

After all, if Microsoft weenies could proffer some kind of stable driver interface, aren’t the clever Linux hackers smart enough to come up with an answer? Oh, lookie here, it is possible to come up with a stable driver interface for Linux.

Linux is a religion. There is only one License, and It’s Name is GPL.

Doug Hass points out that the lack of stable Linux driver interface is idealogically driven “Translation: if you choose to use a closed source driver, the terrorists win, you hate poor people, and are headed to eternal damnation.”

I’d contend that Linux’s development model is so broken that it’s precisely why IBM chose to back it, since they realize they can offer a migration path onto AIX when chagrined customers find their servers keep crashing due to driver issues. Hello kernel developers, you are being pwned, and you still refuse to acknowledge the reality of it.

Realize this: drivers take time to mature and become stable in themselves. Pushing implementation-level changes into the driver does nothing to improve it’s stability.

It’s time that Linux kernel developers abandon dogma and start experimenting and adapting. Linux doesn’t have to be a religion. It can free itself to scientific inquiry - e.g. run a stable driver interface for a subset of hardware - and judge the results for themselves.

References:
Will Linux Ever Make it to the Desktop?
I’m OK, You’re Not OK
Linux DDK
API problem much worse than expected
Ian Murdock - It takes a Better Engineer

Counter arguments:
Good Drivers Live in the Tree

Leave a Reply