Last week's column on virtualization and the Linux kernel drew some flak from readers who didn't agree that VMware's VMI (Virtual Machine Interface) proposal offered a better approach than that of the open source Xen project.
"Contrary to the tone of your article, all is not perfect with VMware's VMI interface," writes Pete Flugstad. "It requires loading a binary 'blob' into the kernel, which would NOT be open source."
Pete is, of course, correct; VMware has no intention of open-sourcing its virtualization products. Instead, VMware is proposing a generic kernel interface that would allow it to load its virtualization code in binary form at run time. Anyone else could use the same interface to load open source virtualization code, but VMware would essentially be using it to skirt the license restrictions of the Linux kernel source.
I still believe that VMware's proposal is better than Xen's. That's not the same as saying VMware has the moral high ground; that would be going too far. But the dirty little secret of real-world Linux installations is that they load and execute proprietary, binary blobs all the time, and users hardly bat an eyelash.
At the heart of the matter is hardware. Hardware vendors have been reluctant to delve too deeply into open source. They worry that by releasing open source drivers for their products they will give their competitors too much information about their hardware. As a result, Linux users are regularly forced to compromise their "pure" open source environments for the sake of hardware.
Wireless networking cards are one example. Wireless drivers for Linux often come in two parts: a GPL-compatible module for the Linux kernel, and a closed, binary firmware that gets pulled in as the driver loads. For particularly poorly supported cards, hackers have even managed to load entire Windows device drivers into the Linux kernel -- a technique other developers have used to gain full read/write support for Microsoft's proprietary NTFS.
The worst culprits, however, are graphics card drivers. Most Linux distributions come with open source drivers that take care of the basics for most cards, but the specs for advanced features such as 3-D acceleration are typically kept under wraps by hardware vendors, making it impossible for independent developers to support those features. If you want full use of the latest card from ATI or Nvidia, you have no choice but to use a proprietary driver supplied by the vendor, which effectively loads a binary blob into your system every time you log in.
Is this an ideal situation? Of course not. But the reality is that the number of Linux users who are staunch open source idealists pales in comparison with the number who defer to simple pragmatism: It's better to put up with proprietary code than to give up a capability altogether.