Two weeks ago, kernel developer Arjan van de Ven posted on lkm a hypothetical doomsday scenario:Linux in a binary world. He talks about propietary drivers and about ABI/API compatiblity for kernel drivers. But what about the present and open source users?. Now, my story:
I have a friend whose brother forced him to use only Free Software at home (Linux, and some BSD flavours), that I think that it's good. He is a non-tech user, and he wants just to use his webcam with his friends over MSN. So with some help from other people he was able to install aMSN from the CVS. But his webcam still didn't work. After some more help, and poking with lsusb, finally he got the USB Vendor and product ID of his webcam, and google for it. It was a Logitech Messenger one, that his distro didn't support. So more google until Logitech Quickcam QC-USB driver for Linux was found. There you can see more than 14 diffrents projects with drivers for wild webcams listed by USB Vendor/ID. Get the right one after browsing a little bit, download the driver, configure it, install it, insert it, change /dev/video1 perms, and get it working on aMSN. Of course my friend needed help from a "very advanced user".
So the people in the kernel land is arguing against API/ABI compatibility to avoid vendors making closed source drivers... but they are hurting a lot to users and developers of Free Drivers (update your driver code with each kernel version, update your driver with every kernel update...). That ideal world of all drivers included on the kernel sources is not real: it isn't for those webcams and it isn't for my rt2* wireless card. The only fix then I can see for this hardware problem is in the (cross)distro side:
- Create a Linux Drivers portal for all of these non-in-kernel drivers
- Set up an sandboxed infrastructure to compile each registerd driver against each registered kernel and package it
- Modify hotplug and hadware detection tools from distros to be smart enough to ask the package manager (apt, yum, ...) for hardware support: "I got this hw id... which package is providing a driver for it?
- Make every package manager smart enough to query this Linux Drivers repository to get the drivers and Warn the user that he is going to use a non-standard driver, non-supported or commercial one