Personal tools
You are here: Home Users Israel Herraiz blog Linux is not free software (and nobody cares)

Linux is not free software (and nobody cares)

Posted by herraiz at Mar 18, 2009 09:15 PM |

Some days ago, I had the opportunity of attending a talk by Richard M. Stallman, about free software fundamentals (yes, the typical talk by Stallman). Among the many topics that he addressed, he talked about Linux not being free software. Stallman said that within the source code distributed by Linux you will find non-free software. At a first moment, I thought that Stallman was exaggerating, and I did not ask him about it.

But the affirmation got highlighted by a Spanish newspaper, and was commented in sites like Barrapunto.com. The conclusion of the debate was that, as usual, journalists do not have a clue aboue free software, open source and all that stuff.

I decided to investigate further to find out whether or not Stallman was right. I found that there is a Linux kernel source code package distributed by the Free Software Foundation, called LinuxLibre. Actually, there is a list of common distros that distribute the (so-called) non-free version of Linux. Surprisingly, you will find Debian GNU/Linux among them. I say surprisingly because Debian is known to be very strict in all that regards to free software. If a piece of software does not comply to the Debian Free Software Guidelines, it does not get included in the distribution.

How come they are distributing non-free software?

Coming back to LinuxLibre, they also distribute the scripts that are used to remove the non-free parts from the Linux kernel upstream source code. For the latest version that I looked at (2.6.28), the script removes or modifies 28 source code files. Here is complete list of suspicious files, with the link to the source code in the Git repository of Linux:

 

Let's choose one randomly. For instance, the file drivers/net/ixp2000/ixp2400_rx.ucode. Here is an extract of that file:

     .insns           = (u8 []) {
                      0xf0, 0x00, 0x0c, 0xc0, 0x05,
                      0xf4, 0x44, 0x0c, 0x00, 0x05,
                      0xfc, 0x04, 0x4c, 0x00, 0x00,

(120 similar lines)

                      0xe0, 0x00, 0x02, 0x00, 0x00,
                      0xe0, 0x00, 0x02, 0x00, 0x00,
                      0xe0, 0x00, 0x02, 0x00, 0x00,
                   }

What is that? It is the firmware of a network processor, probably used in network cards, or maybe I am wrong, and it is any other kind of hardware. In any case, it is included in the upstream Linux kernel source code distribution.

That piece of software comes in binary form, although embedded in a source code file. It is called a blob. Therefore, it is impossible to modify it. In other words, it is not free software. More dangerously, it is impossible to know whether that piece of software does what is supposed to do, or something else. Being a network driver, it is clear that is a risky part of the kernel.

The rest of files contains similar stuff.

So did this non-free piece got included in Debian (and other distributions) unnoticed? No, it did not. Actually, it became a heavy discussion in the project, that was solved with a vote by the members of the project.

The winning option was Assume blobs comply with GPL unless proven otherwise.

Funny. It is very easy to prove otherwise. Just try to understand what the heck that piece does. Or even better, modify it, recompile, and test whether it still works.

After this vote, the scretary of Debian resigned because he was accused of manipulating the vote counts (that he did not).

If you read all the options, you will see that there were two main fronts: getting a new release so users could enjoy a newer Debian, or cleaning the distribution out of non-free parts. It is paradoxical that the Debian Manifesto says that "[Debian GNU/Linux] must be done by a organization to sucessfully advance and advocate free software without the pressure of profits or returns". Yet they are pushing Lenny to be released and the non-free parts to be hidden under the carpet.

Summarizing, Linux is distributing binary-only firmwares, hidden as source code files (or blobs), and Debian is aware of that, and still distributing them. They assume that those binary-only do not violate the Debian Free Software Guidelines.

Regarding all this story, Theodore Ts'o, a kernel developer, advocates for this option of accepting blob as GPL-compliant. He raises the old debate between pragmatism and idealism, defending that binary-only firmwares are necessary to cover users needs, and that defending free software because of itself is putting ideas over people.

It is easy to blame Stallman or Debian to be radicals of religious nature, that put ideas over people. It is not easy to blame others like OpenBSD to be so though. OpenBSD does exclusively include free software because of security reasons. If they can not read the code, they can not trust it. OpenBSD has rejected to include any kind of blob, because of the following reasons:

  • Blobs can be 'de-supported' by vendors at any time.
  • Blobs cannot be supported by developers.
  • Blobs cannot be fixed by developers.
  • Blobs cannot be improved.
  • Blobs cannot be audited.
  • Blobs are specific to an architecture, thus less portable.
  • Blobs are quite often massively bloated.

If a blob were GPL, it would not have all those drawbacks. If all this blob debate were of a religious nature, OpenBSD would have not any concerns about getting them included in its system.

I wonder how long will it take for the first malicious blob to get included in Linux and massively distributed by third parties like Debian. Maybe everybody will realize all of the sudden that blobs are not free software, and about the dangers of non-free software (that are even worse when we close our eyes and keep thinking that is still free software).

Document Actions

Sigue la discusión en la lista de correo.

Posted by Luis Cañas Díaz at Apr 03, 2009 12:27 AM
Hubo una discusión muy interesante que fue seguida en la lista de correo libresoft-todos@gsyc.escet.urjc.es, que por cierto está en vías de extinción.

OpenBSD

Posted by Anonymous User at Mar 31, 2010 04:08 PM
You are wrong, I use OpenBSD and it comes with non-free binary only firmware images. Sad, however true.

OpenBSD's definition of a "blob"

Posted by Anonymous User at May 26, 2010 11:49 AM
What OpenBSD means by "blob" is different from the usual Linux meaning. An OpenBSD blob is a binary driver. They do not consider binary firmware as "blobs" and therefore, like Linux, do not have a policy excluding them.

More info here:

  http://www.gnu.org/philosophy/common-distros.html#BSD

microcode

Posted by Anonymous User at May 26, 2010 05:47 AM
There are reasons for microcode and driver firmware being distributed as binary only. For example the ixp2400 code, this micro code is very specific to the hardware and very difficult to write. The development manual is held under strict NDA because, understanding the microcode allows one to understand the chip and potentially recreate the chip. IP is being protected here. I don't agree with it but sometimes companies need to do what they need to do to stay in business. The chances of a person ever needing to change the code is very slim and in order to create the binary you need to have the Intel microcode compiler that is not free.

Doesn't matter

Posted by Anonymous User at May 26, 2010 06:46 AM
None of that matters. If you don't have the source code along with the right to modify and redistribute it, it's not free software and violates the DFSG.

It may be that many people are perfectly happy using blobs. Even so, they should be marked as such and excluded from software repositories that claim to be free software.