Free Linux driver development

Linux drivers

Back in January 2007, Greg Kroah-Hartman, the Linux kernel hacker and Novell/SUSE employee, issued an open offer to device manufacturers.

"The Linux kernel community," he wrote, "is offering all companies free Linux driver development. No longer do you have to suffer through all of the different examples in the Linux Device Driver Kit, or pick through the thousands of example drivers in the Linux kernel source tree trying to determine which one is the closest to what you need to do."

"All that is needed is some kind of specification that describes how your device works, or the email address of an engineer that is willing to answer questions every once in a while. A few sample devices might be good to have so that debugging doesn't have to be done by email, but if necessary, that can be done."

"In return, you will receive a complete and working Linux driver that is added to the main Linux kernel source tree. The driver will be written by some of the members of the Linux kernel developer community (over 1500 strong and growing). This driver will then be automatically included in all Linux distributions, including the "enterprise" ones. It will be automatically kept up to date and working through all Linux kernel API changes. This driver will work with all of the different CPU types supported by Linux, the largest number of CPU types supported by any operating system ever before in the history of computing."

Linux provides native support for a far greater range of hardware devices than any other operating system. Nonetheless, issues remain because of the reluctance of some vendors to release open source drivers or specifications and the addiction of some to bypassing open standards and protocols. Kroah-Hartman's solution has been to create the Linux Driver Project, which consists of a dedicated group of over 200 Linux kernel developers who participate in the development and maintenance of open source drivers in cooperation with device manufacturers.

The modular nature of the Linux kernel, and the deliberate decision of kernel developers to allow the inclusion of binary modules, has made it relatively easy for manufacturers to slot binary modules into the kernel, and some take advantage of this facility, (subject to the relative fluidity of the kernel APIs). But there are ethical, technical and business reasons why open source drivers make better sense. Indeed, there are some GNU/Linux distributions, such as gNewSense, which resist the temptation to include any code that can not be described as free software. gNewSense is a revision of Ubuntu that, according to the gNewSense website, "takes all the non-free blobs out of a rather popular distribution and makes it free".

Blobs and sobs

The ethical standpoint for resisting the inclusion of binary drivers in Linux distributions is straightforward. As Richard Stallman puts it: "The only reason we have a wholly free operating system is because of the movement that said we want an operating system that is wholly free, not 90 per cent free."

GNU/Linux is a free operating system, and the participation of the kernel developers has been predicated on that premise. In the long term, the inclusion of proprietary "blobs" of code is neither desirable nor acceptable. The kernel developers who signed an open letter on the Linux Foundation website expressed the position clearly: "[Binary] modules negate the openness, stability, flexibility, and maintainability of the Linux development model and shut their users off from the expertise of the Linux community. Vendors that provide closed-source kernel modules force their customers to give up key Linux advantages or choose new vendors."