applying-free-sw-criteria.html (17217B)
1 <!--#include virtual="/server/header.html" --> 2 <!-- Parent-Version: 1.96 --> 3 <!-- This page is derived from /server/standards/boilerplate.html --> 4 <!--#set var="TAGS" value="essays aboutfs practice" --> 5 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 6 <title>Applying the Free Software Criteria 7 - GNU Project - Free Software Foundation</title> 8 <!--#include virtual="/philosophy/po/applying-free-sw-criteria.translist" --> 9 <!--#include virtual="/server/banner.html" --> 10 <!--#include virtual="/philosophy/ph-breadcrumb.html" --> 11 <!--GNUN: OUT-OF-DATE NOTICE--> 12 <!--#include virtual="/server/top-addendum.html" --> 13 <div class="article reduced-width"> 14 <h2>Applying the Free Software Criteria</h2> 15 16 <address class="byline">by Richard Stallman</address> 17 18 <p>The four essential freedoms provide the criteria for <a 19 href="/philosophy/free-sw.html">whether a particular piece of code is 20 free/libre</a> (i.e., respects its users' freedom). How should we 21 apply them to judge whether a software package, an operating system, a 22 computer, or a web page is fit to recommend?</p> 23 24 <p>Whether a program is free affects first of all our decisions about our 25 private activities: to maintain our freedom, we need to reject the 26 programs that would take it away. However, it also affects what we 27 should say to others and do with others.</p> 28 29 <p>A nonfree program is an injustice. To distribute a nonfree program, 30 to recommend a nonfree program to other people, or more generally 31 steer them into a course that leads to using nonfree software, means 32 leading them to give up their freedom. To be sure, leading people to 33 use nonfree software is not the same as installing nonfree software in 34 their computers, but we should not lead people in the wrong direction.</p> 35 36 <p>At a deeper level, we must not present a nonfree program as a solution 37 because that would grant it legitimacy. Nonfree software is a 38 problem; <a href="/philosophy/compromise.html"> to present it as a 39 solution denies the existence of the problem</a>.</p> 40 41 <p>This article explains how we apply the basic free software criteria to 42 judging various kinds of things, so we can decide whether to recommend 43 them or not.</p> 44 45 <h3>Software packages</h3> 46 47 <p>For a software package to be free, all the code in it must be free. 48 But not only the code. Since documentation files including manuals, 49 README, change log, and so on are essential technical parts of a 50 software package, <a href="/philosophy/free-doc.html">they must be 51 free as well</a>.</p> 52 53 <p>A software package is typically used alongside many other packages, 54 and interacts with some of them. Which kinds of interaction with 55 nonfree programs are ethically acceptable?</p> 56 57 <p>We developed GNU so that there would be a free operating system, 58 because in 1983 none existed. As we developed the initial components 59 of GNU, in the 1980s, it was inevitable that each component depended 60 on nonfree software. For instance, no C program could run without a 61 nonfree C compiler until GCC was working, and none could run without 62 Unix libc until glibc was working. Each component could run only 63 on nonfree systems, because all systems were nonfree.</p> 64 65 <p>After we released a component that could run on some nonfree systems, 66 users ported it to other nonfree systems; those ports were no worse, 67 ethically, than the platform-specific code we needed to develop these 68 components, so we incorporated their patches.</p> 69 70 <p>When the kernel, Linux, was freed in 1992, it filled the last gap in 71 the GNU system. (Initially, in 1991, Linux had been distributed under 72 a nonfree license.) The combination of GNU and Linux made a complete 73 free operating system—<a 74 href="/gnu/linux-and-gnu.html">GNU/Linux</a>.</p> 75 76 <p>At that point, we could have deleted the support for nonfree 77 platforms, but we decided not to. A nonfree system is an injustice, 78 but it's not our fault a user runs one. Supporting a free program on 79 that system does not compound the injustice. And it's useful, not 80 only for users of those systems, but also for attracting more people 81 to contribute to developing the free program.</p> 82 83 <p>However, a nonfree program that runs on top of a free program is a 84 completely different issue, because it leads users to take a step away 85 from freedom. In some cases we disallow this: for instance, <a 86 href="https://gcc.gnu.org/ml/gcc/2014-01/msg00247.html">GCC prohibits 87 nonfree plug-ins</a>. When a program permits nonfree add-ons, it 88 should at least not steer people towards using them. For instance, we 89 choose LibreOffice over OpenOffice because OpenOffice suggests use of 90 nonfree add-ons, while LibreOffice shuns them. We developed <a 91 href="https://directory.fsf.org/wiki/IceCat">IceCat</a> initially to 92 avoid proposing the nonfree add-ons suggested by Firefox.</p> 93 94 <p>In practice, if the IceCat package explains how to run IceCat on 95 MacOS, that will not lead people to run MacOS. But if it talked about 96 some nonfree add-on, that would encourage IceCat users to install the 97 add-on. Therefore, the IceCat package, including manuals and web 98 site, shouldn't talk about such things.</p> 99 100 <p>Sometimes a free program and a nonfree program interoperate but 101 neither is based on the other. Our rule for such cases is that if the 102 nonfree program is very well known, we should tell people how to use 103 our free program with it; but if the proprietary program is obscure, 104 we should not hint that it exists. Sometimes we support 105 interoperation with the nonfree program if that is installed, but 106 avoid telling users about the possibility of doing so.</p> 107 108 <p>We reject “enhancements” that would work only on a nonfree system. 109 Those would encourage people to use the nonfree system instead of GNU, 110 scoring an own-goal.</p> 111 112 <h3>GNU/Linux distros</h3> 113 114 <p>After the liberation of Linux in 1992, people began developing 115 GNU/Linux distributions (“distros”). Only a few distros 116 are <a href="/distros">entirely free software</a>.</p> 117 118 <p>The rules for a software package apply to a distro too: an ethical 119 distro must contain only free software and steer users only towards 120 free software. But what does it mean for a distro to 121 “contain” a particular software package?</p> 122 123 <p>Some distros install programs from binary packages that are part of 124 the distro; others build each program from upstream source, and 125 literally <em>contain</em> only the recipes to download and build it. 126 For issues of freedom, how a distro installs a given package is not 127 significant; if it presents that package as an option, or its web site 128 does, we say it “contains” that package.</p> 129 130 <p>The users of a free system have control over it, so they can install 131 whatever they wish. Free distros provide general facilities with 132 which users can install their own programs and their modified versions 133 of free programs; they can also install nonfree programs. Providing 134 these general facilities is not an ethical flaw in the distro, because 135 the distro's developers are not responsible for what users get and 136 install on their own initiative.</p> 137 138 <p>The developers become responsible for installation of nonfree software 139 when they steer the users toward a nonfree program—for 140 instance, by putting it in the distro's list of packages, or 141 distributing it from their server, or presenting it as a solution 142 rather than a problem. This is the point where most GNU/Linux 143 distros have an ethical flaw.</p> 144 145 <p>People who install software packages on their own have a certain level 146 of sophistication: if we tell them “Baby contains nonfree code, 147 but Gbaby is free,” we can expect them to take care to remember 148 which is which. But distros are recommended to ordinary users who 149 would forget such details. They would think, “What name did 150 they say I should use? I think it was Baby.”</p> 151 152 <p>Therefore, to recommend a distro to the general public, we insist that 153 its name not be similar to a distro we reject, so our message 154 recommending only the free distro can be reliably transmitted.</p> 155 156 <p>Another difference between a distro and a software package is how 157 likely it is for nonfree code to be added. The developers of a 158 program carefully check the code they add. If they have decided to 159 make the program free, they are unlikely to add nonfree code. 160 There have been exceptions, including the very harmful case of the 161 “binary blobs” that were added to Linux, but they are a 162 small fraction of the free programs that exist.</p> 163 164 <p>By contrast, a GNU/Linux distro typically contains thousands of 165 packages, and the distro's developers may add hundreds of packages a 166 year. Without a careful effort to avoid packages that contain some 167 nonfree software, some will surely creep in. Since the free distros 168 are few in number, we ask the developers of each free distro to make a 169 commitment to keep the distro free software by removing any nonfree 170 code or malware, as a condition for listing that distro. See the <a 171 href="/distros/free-system-distribution-guidelines.html">GNU free 172 system distribution guidelines</a>.</p> 173 174 <p>We don't ask for such promises for free software packages: it's not 175 feasible, and fortunately not necessary. To get promises from the 176 developers of 30,000 free programs to keep them free would avoid a few 177 problems, at the cost of much work for the FSF staff; in addition, 178 most of those developers have no relationship with the GNU Project and 179 might have no interest in making us any promises. So we deal with 180 the rare cases that change from free to nonfree, when we find out 181 about them.</p> 182 183 <h3>Peripherals</h3> 184 185 <p>A computer peripheral needs software in the computer—perhaps a 186 driver, perhaps firmware to be loaded by the system into the 187 peripheral to make it run. Thus, a peripheral is acceptable to use 188 and recommend if it can be used from a computer that has no nonfree 189 software installed—the peripheral's driver, and any firmware that 190 the system needs to load into it, are free.</p> 191 192 <p>It is simple to check this: connect the peripheral to a computer 193 running a totally free GNU/Linux distro and see if it works. But most 194 users would like to know <em>before</em> they buy the peripheral, so 195 we list information about many peripherals 196 in <a href="https://www.h-node.org/">h-node.org</a>, a hardware 197 database for fully free operating systems.</p> 198 199 <h3>Computers</h3> 200 201 <p>A computer contains software at various levels. On what criterion 202 should we certify that a computer “Respects Your Freedom”?</p> 203 204 <p>Obviously the operating system and everything above it must be free. 205 In the 90s, the startup software (BIOS, then) became replaceable, and 206 since it runs on the CPU, it is the same sort of issue as the 207 operating system. Thus, programs such as firmware and drivers that 208 are installed in or with the system or the startup software must be free.</p> 209 210 <p>If a computer has hardware features that require nonfree drivers or 211 firmware installed with the system, we may be able to endorse it. If 212 it is usable without those features, and if we think most people won't 213 be led to install the nonfree software to make them function, then we 214 can endorse it. Otherwise, we can't. This will be a judgment call.</p> 215 216 <p>A computer can have modifiable preinstalled firmware and microcode at 217 lower levels. It can also have code in true read-only memory. We 218 decided to ignore these programs in our certification criteria today, 219 because otherwise no computer could comply, and because firmware that 220 is not normally changed is ethically equivalent to circuits. So our 221 certification criteria cover only the code that runs on the computer's 222 main processor and is not in true read-only memory. When and as free 223 software becomes possible for other levels of processing, we will 224 require free software at those levels too.</p> 225 226 <p>Since certifying a product is active promotion of it, we insist 227 that the seller support us in return, by talking 228 about <a href="/philosophy/free-software-even-more-important.html">free 229 software</a> rather 230 than <a href="/philosophy/open-source-misses-the-point.html">open 231 source</a> and referring to the combination of GNU and Linux 232 as <a href="/gnu/linux-and-gnu.html">“GNU/Linux”</a>. We 233 have no obligation to actively promote projects that won't recognize 234 our work and support our movement.</p> 235 236 <p>See <a href="https://www.fsf.org/resources/hw/endorsement/criteria">our 237 certification criteria</a>.</p> 238 239 <h3>Web pages</h3> 240 241 <p>Nowadays many web pages contain complex JavaScript programs and won't 242 work without them. This is a harmful practice since it hampers users' 243 control over their computing. Furthermore, most of these programs are 244 nonfree, an injustice. Often the JavaScript code spies on the user. 245 <a href="/philosophy/javascript-trap.html">JavaScript has morphed into 246 a attack on users' freedom.</a></p> 247 248 <p>To address this problem, we have developed <a 249 href="/software/librejs">LibreJS</a>, an add-on for Firefox that 250 blocks nontrivial nonfree JavaScript code. (There is no need to block 251 the simple scripts that implement minor user interface hacks.) We ask 252 sites to please free their JavaScript programs and mark their licenses 253 for LibreJS to recognize.</p> 254 255 <p>Meanwhile, is it ethical to link to a web page that contains a nonfree 256 JavaScript program? If we were totally unyielding, we would link only 257 to free JavaScript code. However, many pages do work even when their 258 JavaScript code is not run. Also, you will most often encounter nonfree 259 JavaScript in other ways besides following our links; to avoid it, 260 you must use LibreJS or disable JavaScript. So we have decided to go 261 ahead and link to pages that work without nonfree JavaScript, while urging 262 users to protect themselves from nonfree JavaScript in general.</p> 263 264 <p>However, if a page can't do its job without running the nonfree 265 JavaScript code, linking to it undeniably asks people to run that 266 nonfree code. On principle, we do not link to such pages.</p> 267 268 <h3>Conclusion</h3> 269 270 <p>Applying the basic idea that <em>software should be free</em> to 271 different situations leads to different practical policies. As new 272 situations arise, the GNU Project and the Free Software Foundation 273 will adapt our freedom criteria so as to lead computer users towards 274 freedom, in practice and in principle. By recommending only 275 freedom-respecting programs, distros, and hardware products, and 276 stating your policy, you can give much-needed support to the free 277 software movement.</p> 278 </div> 279 280 </div><!-- for id="content", starts in the include above --> 281 <!--#include virtual="/server/footer.html" --> 282 <div id="footer" role="contentinfo"> 283 <div class="unprintable"> 284 285 <p>Please send general FSF & GNU inquiries to 286 <a href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. 287 There are also <a href="/contact/">other ways to contact</a> 288 the FSF. Broken links and other corrections or suggestions can be sent 289 to <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 290 291 <p><!-- TRANSLATORS: Ignore the original text in this paragraph, 292 replace it with the translation of these two: 293 294 We work hard and do our best to provide accurate, good quality 295 translations. However, we are not exempt from imperfection. 296 Please send your comments and general suggestions in this regard 297 to <a href="mailto:web-translators@gnu.org"> 298 <web-translators@gnu.org></a>.</p> 299 300 <p>For information on coordinating and contributing translations of 301 our web pages, see <a 302 href="/server/standards/README.translations.html">Translations 303 README</a>. --> 304 Please see the <a 305 href="/server/standards/README.translations.html">Translations 306 README</a> for information on coordinating and contributing translations 307 of this article.</p> 308 </div> 309 310 <!-- Regarding copyright, in general, standalone pages (as opposed to 311 files generated as part of manuals) on the GNU web server should 312 be under CC BY-ND 4.0. Please do NOT change or remove this 313 without talking with the webmasters or licensing team first. 314 Please make sure the copyright date is consistent with the 315 document. For web pages, it is ok to list just the latest year the 316 document was modified, or published. 317 318 If you wish to list earlier years, that is ok too. 319 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 320 years, as long as each year in the range is in fact a copyrightable 321 year, i.e., a year in which the document was published (including 322 being publicly visible on the web or in a revision control system). 323 324 There is more detail about copyright years in the GNU Maintainers 325 Information document, www.gnu.org/prep/maintain. --> 326 327 <p>Copyright © 2015, 2021 Richard Stallman</p> 328 329 <p>This page is licensed under a <a rel="license" 330 href="http://creativecommons.org/licenses/by-nd/4.0/">Creative 331 Commons Attribution-NoDerivatives 4.0 International License</a>.</p> 332 333 <!--#include virtual="/server/bottom-notes.html" --> 334 335 <p class="unprintable">Updated: 336 <!-- timestamp start --> 337 $Date: 2021/09/05 07:59:44 $ 338 <!-- timestamp end --> 339 </p> 340 </div> 341 </div><!-- for class="inner", starts in the banner include --> 342 </body> 343 </html>