Is a driver that loads a BLOB Free Software? The problem is connected
with distribution. The BLOB is unquestionably software. It runs below
the bus, which is our usual demarcation between Free Software
and the rest of the system, but it starts life above the bus at boot
time, and we have to distribute it.|
Keep thinking about distribution, that's where our principles are being violated.
There are a number of reasons that a device's firmware won't generally be opened to us:
1. The manufacturer's concerns regarding the proprietary nature of information about their device that is below the bus.
2. The fact that misprogramming the device at that level can damage the hardware.
3. They aren't going to want to support more firmware versions than they have to.
So, about the most we can do with the BLOB is to stick it in non-free, not declare a dependency from the kernel to the driver, and make sure the driver fails gracefully if the firmware is not there.
What about the rest of the driver? I think that if you remove the BLOB, it's Free Software. It talks to a bus interface, which is a natural demarcation between our Free Software and the proprietary hardware design. It loads an arbitrary firmware file into the device. The device might not work without the BLOB, but the driver's still free as long as it does not incorporate the BLOB.
A good hardware design would put this code in FLASH on the board. If you don't have a good hardware design, BLOBs belong in files, not the driver. The 2.6 kernel boots up with at least initramfs accessable to it, and later initrd, if it needs a BLOB it should load it from there.