How the difference between Free Software and Open Source affects choices in Fedora firmware distribution

Alexandre Moine posted about GNU not including Fedora GNU/Linux in its list of free software distributions. Moine’s post and responses highlight the differences between Free Software and Open Source, differences that come up quite a bit.

Free software and open source are not the same thing. While free software activists and open source advocates can and do work together on many projects, the philosophies are not the same. These philosophical differences lead to radically different results. The GNU project has published essays detailing this philosophical difference (Why “Free Software” is better than “Open Source” and the updated version of this essay Why Open Source misses the point of Free Software, to name a couple).

Moine and responses mention how non-free software running in devices (i.e., non-free firmware) are used to make certain hardware work with Fedora GNU/Linux. Fedora GNU/Linux users end up running this software because the Fedora project favors making sure their system uses the hardware available—convenience—instead of using the opportunity to educate the user about software freedom. Catering to convenience over freedom is a hallmark of the open source movement as the older essay describes in fear of freedom:

The main argument for the term “open source software” is that “free software” makes some people uneasy. That’s true: talking about freedom, about ethical issues, about responsibilities as well as convenience, is asking people to think about things they might rather ignore. This can trigger discomfort, and some people may reject the idea for that. It does not follow that society would be better off if we stop talking about these things.

Years ago, free software developers noticed this discomfort reaction, and some started exploring an approach for avoiding it. They figured that by keeping quiet about ethics and freedom, and talking only about the immediate practical benefits of certain free software, they might be able to “sell” the software more effectively to certain users, especially business. The term “open source” is offered as a way of doing more of this—a way to be “more acceptable to business.” The views and values of the Open Source movement stem from this decision.

This approach has proved effective, in its own terms. Today many people are switching to free software for purely practical reasons. That is good, as far as it goes, but that isn’t all we need to do! Attracting users to free software is not the whole job, just the first step.

Sooner or later these users will be invited to switch back to proprietary software for some practical advantage. Countless companies seek to offer such temptation, and why would users decline? Only if they have learned to value the freedom free software gives them, for its own sake. It is up to us to spread this idea—and in order to do that, we have to talk about freedom. A certain amount of the “keep quiet” approach to business can be useful for the community, but we must have plenty of freedom talk too.

Why Open Source misses the point of Free Software illustrates how different values can lead to different conclusions:

The idea of open source is that allowing users to change and redistribute the software will make it more powerful and reliable. But this is not guaranteed. Developers of proprietary software are not necessarily incompetent. Sometimes they produce a program that is powerful and reliable, even though it does not respect the users’ freedom. Free software activists and open source enthusiasts will react very differently to that.

A pure open source enthusiast, one that is not at all influenced by the ideals of free software, will say, “I am surprised you were able to make the program work so well without using our development model, but you did. How can I get a copy?” This attitude will reward schemes that take away our freedom, leading to its loss.

The free software activist will say, “Your program is very attractive, but I value my freedom more. So I reject your program. Instead I will support a project to develop a free replacement.” If we value our freedom, we can act to maintain and defend it.

Moine and some respondants distinguish between running software on one’s “main CPU” and other processors in a modern computer system. The distinction isn’t made to highlight security problems (as the FSF did when developers of a fully free/libre version of Android found and closed a huge security hole in Samsung Galaxy devices) or to highlight how you deserve software freedom for all of the computers in your system. Instead, open source advocates say this as because they think it justifies Fedora distributing non-free firmware to users; somehow running non-free software on one’s “main CPU” is ethically objectionable but running non-free software on some other computer hardware is okay. This distinction is meaningless from the perspective of software freedom—users deserve software freedom on all of their computing devices. This might mean making inconvenient decisions like choosing different computing hardware or not fully exploiting the capabilities of one’s computer until free software exists.

Kevin Kofler, a respondant on Moine’s blog, says one of the Fedora project’s goals is to move “hardcoded blobs to use the dynamic firmware loader instead, so they can be moved to linux-firmware”. This is merely moving the non-free firmware from one bundle of software to another. When the move is complete the Fedora project will still distribute the non-free firmware package alongside their other packages, thus endorsing the non-free software. This change doesn’t address the issue of software freedom at all because this change was not meant to give Fedora GNU/Linux users software freedom. Relocating the package where the non-free firmware comes from is a minor bookkeeping detail. A default Fedora GNU/Linux install will either install the non-free firmware package or steer the user toward a Fedora project repository where the non-free firmware package can be downloaded. From the perspective of a user’s software freedom, the Fedora project’s effort to relocate the non-free firmware is doing a good job of reaching a bad goal rather than encouraging users to favor hardware they can operate in freedom, or to write and publish free firmware to operate the hardware that doesn’t work in freedom. For the free software movement, non-free software is a social problem to be fixed by increasing a user’s software freedom. For the Fedora project non-free firmware is acceptable non-free software to remedy an inconvenience even if that means making users become dependent upon the proprietor. By contrast, it’s a good bet that the Linux-libre project‘s work (to distribute a Free Linux kernel) became a part of the GNU Project because Linux-libre makes these choices in a way which make software freedom a priority—Linux Libre comes with only Free Software.

Kofler also maintains that hardware which moves firmware into ROM makes the firmware proprietary (“Firmware in a ROM is proprietary forever.”). This misunderstanding highlights how the user’s freedom is not taken to heart: non-free firmware is software only the firmware proprietor can alter. By contrast, code in ROM is code nobody can alter. Neither of these situations are particularly desirable because the user might want to understand and alter this code, so free firmware is the best option. But code in ROM is different from non-free firmware: code in ROM means the user and the manufacturer are equally unable to alter the code. No software update will change the ROM. By contrast, a proprietor could issue a new proprietary firmware file. If a user’s system loads that new firmware file into the hardware, the hardware’s behavior changes and that user’s software freedom is denied. A proprietor’s promise of someday freeing the firmware doesn’t change the reality on the ground—non-free firmware is non-free software which keeps users subordinate to the proprietor. Kofler also later maintains that “Burning something into a ROM does not magically make it “hardware”.”. When one looks at this situation from the perspective of gaining software freedom rather than prioritizing convenience at the cost of freedom, hardware with code in ROM is unmodifiable.

Kofler asks “Imagine Apple making a ROM iPhone, maybe so they can sell you a new phone each time they upgrade iOS, would that make it a Free smartphone???”. Such a change could give those users a less moving target with which to focus their efforts when trying to get iThings to run Free Software. Thus, an iThing with code only in ROM chips would provide a Free Software developer a chance to develop something once and be sure their software wouldn’t be rendered obsolete due to Apple changing how that iThing worked.

As it stands, Apple is already selling many of their iThings based on changes to iOS which they don’t backport to older Apple hardware. But the issue of one’s liberties for cell phones carries challenges beyond software freedom for computers. Cell phones rely on cell phone towers which track one’s location. A cell phone’s usefulness is greatly diminished when one has no cell phone tower access. Richard Stallman, founder of the GNU Project, discusses this at some length in his talk on “A Free Digital Society”.

Kofler claims “Or what if Unix had been in a ROM? Then GNU as it was at its beginning wouldn’t even have been possible!”. This is a side issue at best, but I doubt any of the salient points of GNU’s beginning would be significantly different. GNU began as a project to bring a free Unix-compatible OS into existence (Stallman wished to “put together a sufficient body of free software so that I will be able to get along without any software that is not free”). The Unix system Richard Stallman used at MIT’s Artificial Intelligence Lab was proprietary. A laser printer software issue highlighted how frustrating and unjust it was to not have the freedom to control one’s computer, so Stallman quit working for MIT and began the GNU Project to liberate all computer users from the tyranny of (what would later become known as) non-free software. Bringing GNU into existence required either writing new programs (where no free alternative existed) or finding free replacements to press into service. All of this would have been true if the Unix system were in ROM.

The Fedora project apparently teaches people to endorse the open source philosophy of developmental convenience not the ethical examination one finds in the free software movement. I hope that the Fedora project’s position will change to favor software freedom and the Fedora project’s behavior will change to allow the GNU Project to list Fedora GNU/Linux among its recommended distributions.