Is It Ever a Good Thing to Use a Nonfree Program?

by Richard Stallman

If you run a nonfree program on your computer, it denies your freedom; the immediate wrong is directed at you.(*)

If you recommend that others run the nonfree program, or lead them to do so, you're leading them to give up their freedom. Thus, we have a responsibility not to lead or encourage others to run nonfree software. Where the program uses a secret protocol for communication, as in the case of Skype, your own use of it pressures others to use it too, so it is especially important to avoid any use of these programs.

But there is one special case where using some nonfree software, and even urging others to use it, can be a positive thing. That's when the use of the nonfree software aims directly at putting an end to the use of that very same nonfree software.

In 1983 I decided to develop the GNU operating system, as a free replacement for Unix. The feasible way to do it was to write and test the components one by one on Unix. But was it legitimate to use Unix for this? And was it legitimate to ask others to use Unix for this, given that Unix was proprietary software? (Of course, if it had not been proprietary, it would not have required replacing.)

The conclusion I reached was that using Unix to put an end to the use of Unix was legitimate for me to suggest to other developers. I likened it to participating in small ways in some evil activity, such as a criminal gang or a dishonest political campaign, in order to expose it and shut it down. While participating in the activity is wrong in itself, shutting it down excuses minor peripheral participation, comparable to merely using Unix. This argument would not justify being a ringleader, but I was only considering using Unix, not going to work for its development team.

The job of replacing Unix was completed when the last essential component was replaced by Linux, the kernel started by Linus Torvalds in 1991. We still add to the GNU/Linux system, but that doesn't require using Unix, so it isn't a reason for using Unix—not any more. Thus, whenever you're using a nonfree program for this sort of reason, you should reconsider from time to time whether the need still exists.

However, there are other nonfree programs we still need to replace, and the analogous question often arises. Should you run the nonfree driver for a peripheral to help you develop a free replacement driver? (More precisely, is it ethical for us to suggest that you do so?) Yes, by all means. Is it ok to run the nonfree JavaScript on a web site in order to file complaint asking the webmasters to free that JavaScript code, or make the site work without it? Definitely—but other than that, you should have LibreJS block it for you.

But this justification won't stretch any further. People that develop nonfree software, even software with malicious functionalities, often try to excuse this on the grounds that they fund some development of free software. However, a business that is basically wrong can't be legitimized by spending some of the profits on a worthy cause. For instance, some (not all) of the activities of the Gates Foundation are laudable, but they don't excuse Bill Gates's career, or Microsoft. If the business works directly against the worthy cause it tries to legitimize itself with, that is a self-contradiction and it undermines the cause.

Even using a nonfree program to develop free software in general is better to avoid, and not suggest to others. For instance, we should not ask people to run Windows or MacOS in order to make free applications run on them. As developer of Emacs and GCC, I accepted changes to make them support nonfree systems such as VMS, Windows and MacOS. I had no reason to reject that code, even though people had run nonfree systems to write it. Their use of unjust systems was not at my request or suggestion; rather, they were already using them before starting to write changes for GNU. They also did the packaging of releases for those systems.

The “developing its own replacement” exception is valid within its limits, and crucial for the progress of free software, but we must resist stretching it any further lest it turn into an all-purpose excuse for any profitable activity with nonfree software.

Occasionally it is necessary to use and even upgrade a nonfree system on a machine in order to install a free system to replace it on that machine. This is not exactly the same issue, but the same arguments apply: it is legitimate to recommend running some nonfree software momentarily in order to remove it.

Most proprietary programs come with an End User License Agreement that hardly anyone reads. Tucked away in it, in most cases, is an unethical commitment to behave like an uncooperative, bad neighbor. It claims you promised not to distribute copies to others, or even lend someone a copy.

To carry out such a commitment is more wrong than to break it. No matter what legalistic arguments they might make, the developers can hardly claim their shady trick gives users a moral obligation to be uncooperative.

However, we think that the truly moral path is to carefully reject such agreements.