A GNU program should not recommend, promote, or grant legitimacy to the use of any non-free program. Proprietary software is a social and ethical problem, and our aim is to put an end to that problem. We can’t stop some people from writing proprietary programs, or stop other people from using them, but we can and should refuse to advertise them to new potential customers, or to give the public the idea that their existence is ethical.
The GNU definition of free software is found on the GNU web site at http://www.gnu.org/philosophy/free-sw.html, and the definition of free documentation is found at http://www.gnu.org/philosophy/free-doc.html. The terms “free” and “non-free”, used in this document, refer to those definitions.
A list of important licenses and whether they qualify as free is in http://www.gnu.org/licenses/license-list.html. If it is not clear whether a license qualifies as free, please ask the GNU Project by writing to firstname.lastname@example.org. We will answer, and if the license is an important one, we will add it to the list.
When a non-free program or system is well known, you can mention it in passing—that is harmless, since users who might want to use it probably already know about it. For instance, it is fine to explain how to build your package on top of some widely used non-free operating system, or how to use it together with some widely used non-free program.
However, you should give only the necessary information to help those who already use the non-free program to use your program with it—don’t give, or refer to, any further information about the proprietary program, and don’t imply that the proprietary program enhances your program, or that its existence is in any way a good thing. The goal should be that people already using the proprietary program will get the advice they need about how to use your free program with it, while people who don’t already use the proprietary program will not see anything likely to lead them to take an interest in it.
If a non-free program or system is obscure in your program’s domain, your program should not mention or support it at all, since doing so would tend to popularize the non-free program more than it popularizes your program. (You cannot hope to find many additional users for your program among the users of Foobar, if the existence of Foobar is not generally known among people who might want to use your program.)
Sometimes a program is free software in itself but depends on a non-free platform in order to run. For instance, many Java programs depend on some non-free Java libraries. To recommend or promote such a program is to promote the other programs it needs. This is why we are careful about listing Java programs in the Free Software Directory: we don’t want to promote the non-free Java libraries.
We hope this particular problem with Java will be gone by and by, as we replace the remaining non-free standard Java libraries with free software, but the general principle will remain the same: don’t recommend, promote or legitimize programs that depend on non-free software to run.
Some free programs strongly encourage the use of non-free software. A
typical example is
mplayer. It is free software in itself,
and the free code can handle some kinds of files. However,
mplayer recommends use of non-free codecs for other kinds of
files, and users that install
mplayer are very likely to
install those codecs along with it. To recommend
is, in effect, to promote use of the non-free codecs.
Thus, you should not recommend programs that strongly encourage the
use of non-free software. This is why we do not list
mplayer in the Free Software Directory.
A GNU package should not refer the user to any non-free documentation for free software. Free documentation that can be included in free operating systems is essential for completing the GNU system, or any free operating system, so encouraging it is a priority; to recommend use of documentation that we are not allowed to include undermines the impetus for the community to produce documentation that we can include. So GNU packages should never recommend non-free documentation.
By contrast, it is ok to refer to journal articles and textbooks in the comments of a program for explanation of how it functions, even though they are non-free. This is because we don’t include such things in the GNU system even if they are free—they are outside the scope of what a software distribution needs to include.
Referring to a web site that describes or recommends a non-free program is promoting that program, so please do not make links to (or mention by name) web sites that contain such material. This policy is relevant particularly for the web pages for a GNU package.
Following links from nearly any web site can lead eventually to non-free software; this is inherent in the nature of the web. So it makes no sense to criticize a site for having such links. As long as the site does not itself recommend a non-free program, there is no need to consider the question of the sites that it links to for other reasons.
Thus, for example, you should not refer to AT&T’s web site if that recommends AT&T’s non-free software packages; you should not refer to a site that links to AT&T’s site presenting it as a place to get some non-free program, because that link recommends and legitimizes the non-free program. However, that a site contains a link to AT&T’s web site for some other purpose (such as long-distance telephone service) is not an objection against it.