Why does the linux kernel use linux-libre code to get rid of binary blobs?
I ask this question because I’m curious as to whether there is some sort of performance advantage offered from the binary blobs that are in the Linux kernel.
Since many of these blobs have been replaced with code in linux-libre, why has that same code not been incorporated into the Linux kernel at kernel.org?
Currently it is maintained by FSFLA, the Latin American Free software Foundation.
According to the about page for the project:
Linux-libre is a project to maintain
and publish 100% Free distributions of
Linux, suitable for use in Free System
Distributions, removing software that
is included without source code, with
obfuscated or obscured source code,
under non-Free Software licenses, that
do not permit you to change the
software so that it does what you
wish, and that induces or requires you
to install additional pieces of
A quick reading of the lastest version of the “deblobbing” script shows that it mostly removes the binary blobs and some documentation. In many of the cases the binary blobs are either hardware drivers are firmware for hardware. Firmware is code that needs to be loaded onto the device itself and is often needed even when a free software driver exists.
As far as I understand, there is no clear performance benefit from these blobs (although, without them, many people would have no performance) and most kernel developers would love to replace them with well-written, Free code.
In your question you claim that “many of these blobs have been replaced with code in linux-libre” and ask why this code hasn’t been accepted. In my reading of the scripts I could see very little code that was replaced. Rather the majority of the script is removing code. The code that is added is intended to “replace the requests for non-Free firmware with messages that inform users that the hardware in question is a trap.” (Linux Libre Release Accouncement)
If you have specific code in mind, please mention it in your question. Most patches for Linux are discussed either on the Linux Kernel Mailing List or one of the many subsystem specific lists. Often the reasons for non-inclusion can be found by searching through these lists.