GNU/Linux and freedom: non-free software hidden in your GNU/Linux distribution

GNU/Linux and freedom: non-free software hidden in your GNU/Linux distribution


Most people with an interest in software freedom will turn to GNU/Linux as their operating system of choice. Few realize however, that the vast majority of GNU/Linux distros are not entirely free. Imagine migrating away from Windows, only to find that by installing GNU/Linux you are accepting a restrictive Microsoft license!

Many distros promote the use of proprietary software, knowingly show incorrect licenses, and attempt to hide the problem under the guise of an 'option of freedom'. When the majority of developers of a collection of software don't care about freedom, neither will their users. Non-free distros make almost no attempts to inform their userbases of the importance of freedom, even though they wouldn't exist without it. I will discuss how the option of freedom is an unacceptable solution, and propose some real fixes.

The problem

I've been using GNU/Linux for over 5 years, but I've only recently discovered just how much non-free software my distro contains. I decided to search through my system and remove everything that was non-free, and there was quite a lot that I removed.

A levitating GNU--a symbol of software freedom and tranquilityA levitating GNU--a symbol of software freedom and tranquility

Here is what I found:

The Linux kernel

The Linux kernel released by Linus Torvalds et al via kernel.org, known as the vanilla kernel, contains many pieces of non-free firmware (see footnote), that mainly exist to support hardware for which free firmware doesn't exist.

Imagine migrating away from Windows, only to find that by installing GNU/Linux you are accepting a restrictive Microsoft license!

Although most distros maintain their own kernels, they are all heavily based on the vanilla releases, and typically carry-over the non-free blobs.

One solution is to use the Linux Libre project, which is a collection of the vanilla kernels stripped of all the non-free firmware. Most distros don't even offer the choice of a free kernel, never mind recommending one.

Non-free drivers

Many distros include non-free drivers for things like video cards and wireless adaptors. Since the hardware is closed and undocumented, they include such drivers in an effort to improve hardware support.

Many distros promote the non-free versions *over* the free ones

In a lot of cases, free replacements for the drivers do exist, yet many distros promote the non-free versions over the free ones.

General non-free software

Many distros provide other non-free software that doesn't fit into the above categories. This includes things like non-free web browsers, video conferencing clients, and other general applications. The system doesn't need this software, and it is included only as a convenience or to make the list of packages bigger.

They are telling their users that freedom is a secondary issue, and leading them toward using non-free software

Although some distros will maintain non-free software in a separate repository, this means nothing to the average user. By advertising both free and non-free programs, they are telling their users that freedom is a secondary issue, and leading them toward using non-free software.

One package I removed from my system was corefonts, which is a non-free font package with a Microsoft license. The license restricts the use of the package, and forbids modification. Corefonts is an optional dependency when installing ImageMagick, and in Gentoo, it is turned on by default.

ImageMagick itself is free software. This means that most users installing it would assume that it was free, and end up with corefonts on their system by mistake. They would then be subjected to a restrictive non-free license.

Summary

These are just some examples of how many GNU/Linux distros restrict their users freedom. Another issue is that just checking what the package manager says about the licenses of various programs is not always reliable. For example, the Linux kernel is often labeled as being solely GPL-2, yet it includes non-free software.

Without clear policies stating exactly what software may be included in a distro, and exactly how it should be licensed, even the most careful user is likely to install non-free software.

The option of freedom

Some distros try to fix the problem by offering a separate free version, or by offering tools that help users to keep their systems free. This doesn't fix the problem at all though, as the vast majority of people aren't even aware of the issues of software freedom, and therefore don't end up using such versions. Furthermore, distros rarely do anything to promote the free versions, or even inform their users of the advantages of using them.

Mandriva

The important goal of informing the masses about the issue of how proprietary software gives the developer power over you, and how to escape from it, isn't touched upon at all

My first example is Mandriva, who offer what seems to be seven different versions of their distro, only one of them being entirely free. Most people visiting their website will download the Powerpack version, as it is the first one displayed, and its name insinuates that it's the most feature-full version available. There's no description of the differences between them, and there's nothing promoting or even explaining the advantages of using only free software.

The net effect of this, is that the only people that will use the free versions are the people that already know and care about the issues. Those people are probably already running 100% free systems. The important goal of informing the masses about the issue of how proprietary software gives the developer power over you, and how to escape from it, isn't touched upon at all.

Gentoo Linux

Another example is Gentoo Linux, who offer an optional license filtering system, that can help users eliminate the installation of proprietary software. This case is even worse than Mandriva's, as the filtering features are barely even mentioned in the documentation, and there's no recommendation of their use whatsoever.

This means that the only people that will be using free versions of Gentoo, are those who have specifically searched for how to filter software based on licenses. The vast majority of their users won't even know that the features exist. Furthermore, some of the licenses (for example, the license of the Linux kernel) are incorrect. So even with strict filters, proprietary software will almost certainly still slip through.

I pointed out on the Gentoo developer mailing list, that the licenses shown for the Linux kernels were incorrect. I asked for them to be updated to include the non-free firmware licenses, so that people could accurately filter their software. Although a few developers supported this idea, the fix was initially rejected by some members of the kernel team. Shortly after this article was published, I was informed that the licenses have now been updated, by one of the original supporters. [This paragraph was edited after publishing the article]

Summary

Non-freee distros make almost no attempts to inform their userbases of the importance of freedom, even though they wouldn't exist without it

When the majority of developers of a collection of software don't care about freedom, neither will their users. Non-free distros make almost no attempts to inform their userbases of the importance of freedom, even though they wouldn't exist without it. A distro's influence over their users is tremendous, and they have a social responsibility to promote the use of only free software.

The solution

The obvious real solution would be to switch to a distro that respects its users freedom. The FSF maintains a list of entirely-free distros that you can use. The developers work collectively to protect their users freedom, and try their best to maintain an entirely free system, by looking into and fixing all reports of non-free software that has slipped through by mistake. Other non-free distros will likely ignore such issues.

Switching to a new operating system is not always desirable however. You may prefer the design of your existing non-free distro. If this is the case, you may wish to convert your installation into an entirely free operating system. This will be a lot of work, but it's possible:

  1. First, you should remove the non-free software from your system. This will likely involve switching to a Linux Libre kernel, and scanning through your installed packages, checking all the licenses. This can be a large tedious job.

  2. It is silly that every user should have to do this. You can contact the developers of your distro and tell them, in a polite message of course, that you think software freedom is an important issue, and suggest that they take steps to improve the freedom of their distro. You could also offer your assistance, whether it be of a technical nature, or merely reporting issues. A hassle-free way of maintaining an entirely free system would be a good start.

  3. If you code at all, you might instead choose to focus your efforts on improving a free distro. If there's a particular design decision you prefer, you could help implement it in a free distro. Alternatively, you could help non-free distros by writing free replacements for the non-free programs they contain (and of course, this would also benefit entirely free distros. Oh the wonders of free software!)

Sometimes you may have hardware that isn't supported by free software. You should try to avoid supporting such companies if possible, although this isn't always feasible. In all cases, you should write the manufacturer a polite but firm request, asking them to either release their drivers as free software, or to open up their specifications so that others may do so.

When buying new hardware, consult the FSF's list of Supported Hardware and try to support the free companies as much as is possible.

One final point I will mention, is the powerful influence of recommendation. Whenever recommending GNU/Linux to your friends and family, don't forget to stress the importance of freedom. Regardless of whether or not they take your advice, you will be helping to spread knowledge, which is the vital first step in solving any problem.

Footnotes

As an example, browse this Linux source file. You're looking at a blob of non-free binary firmware. The meaning of such code is often considered a trade secret, so users are not only unable to modify it, but also unable to understand it.

The problem doesn't stop at Linux. OpenBSD has developed their own kernel, but it still has blobs. A quick look in the kernel source reveals this source file which contains non-free chunks of code with a restrictive license.

See further examples of non-free blobs in Ubuntu and Debian.

Category: 

Comments

Ryan Cartwright's picture

Some good points made here and always worth keeping this kind of thing in mind as the use of free software (and GNU/Linux in particular) progresses. I also commend you on not straying into the traditional avenue of demonising all those who do not subscribe to this viewpoint.

I should say that I use Debian but I agree with the sentiment and am always on a path towards total freedom in my computers. It should also be mentioned that for those who want to pursue the total freedom in software route, the openPC project has produced desktop computers which only use hardware with free drivers.

--
Equitas IT Solutions - fairness, quality, freedom
http://www.equitasit.co.uk

Vincent Launchbury's picture

Thanks for your support!

I will definitely look into openPC, their goals seem to align quite closely with mine. They claim to be using 100% free software also, so hopefully they're using the libre kernels along with the free drivers.

~Vincent.

Zermelo's picture
Submitted by Zermelo on

Some very good points well made, especially regarding the hypocrisy involved in marketing "free" editions of a distro which otherwise remains tainted, as if moral demands were the equivalent of commodities to be bought or sold on a whim.

By your own logic, though, aren't the NDAs signed by driver writers every bit as egregious? If I'm free to modify a driver, doesn't that freedom (as enshrined in the GPL) -- simply at the level of practical presupposition -- require that no-one collude in concealing the information (namely, register level programming documentation) which would allow others to do so in a meaningful and productive way? One hears a lot from the FSF on the subject of kernel blobs but very little about purging even actively obfuscated (but nominally "free") device drivers from the Linux kernel.

Vincent Launchbury's picture

Thanks for your comments, I like your summary of the 'free editions' issue!

By your own logic, though, aren't the NDAs signed by driver writers every bit as egregious?

Certainly. I wasn't aware that such obfuscating was taking place, I'll have to look into it further. Do you happen to know if the deblob scripts remove these instances?

~Vincent.

Trueash's picture
Submitted by Trueash on

Most people visiting their website will download the Powerpack version, as it is the first one displayed, and its name insinuates that it’s the most feature-full version available.

Ok, go ahead and show us how you'll download it - without registering and paying first.

Regarding freedoms as proclaimed by Mr. Stallman... well, the freedoms that I cannot use do not exist. I will never be able to even read the source code, not to mention changing it. Therefore, I will *never* contribute to my community. The only freedom that makes sense to me is using my software the way I deem necessary. And I do it all the time; both in Linux and in Windows (yes, sometimes I have to use it - when I want to make sure that my work is 100% compatible with my client's requirements).

IMHO, it is not "freedoms" that matter for the end user, but absence of monopoly. DRM, for example, is not a vicious plan to enslave the humankind, but a mere attempt to monopolise the industry. Businesses do it all the time. You do not want that? Offer a *viable* alternative, for chrissake! You want me to use "nv" instead of "nvidia"? You know what to do...

I could go on but, frankly, I'm a bit too tired and disillusioned. All these talks about freedoms are fine but they do not generate the product. Either GNU/Linux gets down to business or it will forever remain a "me too" system.

Vincent Launchbury's picture

Although you may not use certain freedoms, they certainly still exist, and it's important that they do. Only in software can people get away with restricting your private usage of something, as one example. Imagine if you bought a computer and it was illegal to upgrade the video card. Or if you bought a bottle of scotch and it was illegal to drink it with ice, because its makers disapproved.

Just because you feel it's useless to you, doesn't make it any less important for others. I wouldn't know how to rip an engine out of a car and upgrade it, but the freedom to do so is still important. Similarly, I'll probably never utilize my right to vote, but it is important that everyone has the option of doing so. You will probably never want to reverse engineer anything, but it doesn't mean it should be illegal for anybody else to do so.

The only freedom that makes sense to me is using my software the way I deem necessary.

But with proprietary software, you don't have the freedom to use it as _you_ deem necessary. You have the freedom to use it as its _developer_ deems necessary. They control what you are allowed to do even for your own private use.

IMHO, it is not "freedoms" that matter for the end user

How about recent things like games requiring a constant internet connection to play even single player modes? This has nothing to do with monopolies, it is the lack of freedom of use.

Offer a *viable* alternative, for chrissake!

Free software does offer a viable alternative: not using DRM, and giving users all the freedoms they deserve.

The reason the proprietary nvidia drivers might be better than the free alternatives, is because the workings of the cards are undocumented closely guarded secrets, and the official drivers are non-free. Not much can be done by "getting down to business", as it is extremely hard to understand how the cards even work. Activism is one way to help make important changes. If you want the free drivers to be better, contact nvidia and ask them to release documentation, or free their own drivers.

With enough support, changes will be made. Look at ATI for example, who has released a few specifications, and I believe has also funded some open source development. They are far from perfect, but it's a good start.

Thanks for your comments on the article. Nobody expects you to contribute back to the community, but the right to do so is what fuels the entire community!

~Vincent.

kaiwren's picture
Submitted by kaiwren on

Before the kernel can boot... There is the BIOS. Most likely, your "Libre" software
was booted on a motherboard with a non-
free BIOS.

I suspect most video cards also have a
BIOS in flash or eprom. So, there's two
strikes.

Well, the AT style keyboard has some kind
of processor (that needs code), ok there's
three strikes.

There's an open bios project for motherboard roms somewhere,
but I've never heard of anyone writing
a replacement for the video card BIOS,
yes high level drivers once the kernel
is booted for the video
chips but not for the on-card software.

Likewise for the keyboard.

//Steve
(shuddering at the thought of how much
M$ code he's forced to use in various devices in everyday life)

Author information

Vincent Launchbury's picture

Biography

I'm a student and an emerging free software developer from Toronto, Canada.