Debian Removes Binary-only Firmware From Kernel
mbanck writes "The Debian Linux kernel maintainer has announced that he will remove firmware from GPL'd drivers which obviously lack source code in its preferred form (i.e. something more appropriate than a hexdump inside a char[]), in accordance with the release manager's decision. The alternatives are user-space loading of the firmware via hotplug's request_firmware() API or making the vendors aware of the issue. How do the other distributions handle this?"
One of the drivers I use - the tg3 Gigabit Ethernet driver - is affected by this. The driver currently contains non-free firmware that is uploaded to the card in a couple of cases.
An interesting thing about this driver is that it appears to work (to the extent that most people need) without the firmware. There has been some attempt on the linux-kernel mailing list to make the firmware part of the kernel optional. That way Debian can just turn that option off and presumably remove the associated firmware from their kernel. Anyone who needs the bug fixes/features provided by the firmware can use a non-Debian kernel.
Not everyone's in favour of this idea though. There's more about it on the mailing list if anyone's interested.
Meep meep
This has been already discused in the past, in fact, Richard Stallman published an article where he states that the Linux kernel is in violation with the GPL because of the firmware included without source code, see the article at here
Debian would be happy with firmware updaters as long as the source to the firmware is available and code to compile the firmware and update the module's binary with that firmware is available. The problem, at the moment, is that rarely is the firmware available.
You are not alone. This is not normal. None of this is normal.
If you redistribute a GPL'd program that you yourself do not hold the rights to, you must release full source code. You can't say "Well, I never had source code to this module that I added, therefore I'm not releasing the source for that", it has to be everything.
The reason I say "you yourself do not hold the rights to" is that a copyright holder, obviously, is not bound by their own license. But you and I and even Linus these days are bound by the GPL wrt Linux, because the copyright on Linux is shared amongst a large number of parties.
Now, everything thus hinges on the redistribution part. If an end user grabs a module with a binary portion, inserts it into their kernel, and limits their use of it to that, then that's fine.
If I find all the copyright holders to Linux, buy the rights, and then release Squigglix under the GPL, with a binary portion, then that's fine too, because I'm not bound by the GPL.
If someone tries to redistribute Squigglix under the GPL (ie they're not asking me first, they're just looking at the COPYING file and agreeing to the conditions), then they're violating the GPL, because they're not releasing full source.
If someone tries to redistribute Squigglix with my permission (ie they've asked me first, or there's a thing tacked on to the COPYING file allowing the source to be withheld for code I passed on to them in binary form only), then they're not violating the license, because the modified license allows them to do so.
If someone tries to redistribute Squigglix under the GPL (ie they're not asking me first, they're just looking at the COPYING file and agreeing to the conditions), but before they do they remove the binary-only portion, then they're respecting the GPL, because they're not releasing full source.
The GPL is very clear about this: If you redistribute and are doing so only because the GPL allows you to, you must include source. If you don't include source, even if you never had it you are violating that license.
Linus's COPYING file does include a get-out in that user-land software does not have to be GPL'd, which is why Debian's saying it's ok to have a firmware binary that's loaded by a user-land program. But the kernel itself really is GPL, and it has to be distributed under the normal conditions of the GPL. Anyone currently shipping those drivers that include substantial binary-only source-unavailable portions, such as those with binary-only firmware code, is violating the license if they're shipping it with the rest of Linux.
You are not alone. This is not normal. None of this is normal.