Some japanese companies have requested that the Linux kernel gets a “stable” (whatever) kernel interface for binary drivers.

The obvious reason is, that they want to be able to add (illegal!) closed source drivers to the linux kernel.

This is a bad idea for a couple of reasons, that have been discussed in a couple of places. Instead I want to show you a couple of examples to illustrate that.

First of all, let me name the binary, closed-source drivers of ATI and Nvidia. They totally suck. They are unreliable, cause system crashes, don’t work with power management and so on. Is this the type of driver you want? Commercial driver development is not capable of supporting the development speed and models of opensource. Other examples to show you the problems with all the closed source stuff include many wireless access points such as the isl3893 platform or broadcoms AR7. They duefully released the kernel code they used and maybe some drivers, but even the kernel code they touched is broken to large extends (that’s why Intersil/Conexant doesn’t support https on their isl3893 accesspoints, because they broke their libc in a way they can’t get SSL to work on it any more).

Now let me give you a good example: USB. There the interface to the hardware was openly and clearly specified, also for many many uses. The result is, that today basically any memory stick and digital camera adhers to this standard, and there is only one driver for it. Thats why they “just work”.

So instead of requesting a binary driver API in the kernel, these japanese manufacturers should instead start an industry initiative just like USB to standardize on a common stable hardware interface so we don’t need a different driver for every hardware. Our real problem is that no hardware is like the other, and nothing is properly documented. And hardware manufacturers earn their money with hardware and haven’t got much expertise on software…