taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

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&mdash;<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 &ldquo;enhancements&rdquo; 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 (&ldquo;distros&rdquo;).  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 &ldquo;contain&rdquo; 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 &ldquo;contains&rdquo; 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&mdash;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 &ldquo;Baby contains nonfree code,
    147 but Gbaby is free,&rdquo; 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, &ldquo;What name did
    150 they say I should use?  I think it was Baby.&rdquo;</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 &ldquo;binary blobs&rdquo; 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&mdash;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&mdash;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 &ldquo;Respects Your Freedom&rdquo;?</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">&ldquo;GNU/Linux&rdquo;</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 &amp; GNU inquiries to
    286 <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</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">&lt;webmasters@gnu.org&gt;</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         &lt;web-translators@gnu.org&gt;</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 &copy; 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>