taler-merchant-demos

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

when-free-depends-on-nonfree.html (9213B)


      1 <!--#include virtual="/server/header.html" -->
      2 <!-- Parent-Version: 1.96 -->
      3 <!-- This page is derived from /server/standards/boilerplate.html -->
      4 
      5 <!--#set var="TAGS" value="essays aboutfs free-nonfree" -->
      6 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
      7 <title>When Free Software Depends on Nonfree - GNU Project - Free Software Foundation</title>
      8  <!--#include virtual="/philosophy/po/when-free-depends-on-nonfree.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>When Free Software Depends on Nonfree</h2>
     15 
     16 <address class="byline">by Richard Stallman</address>
     17 
     18 <p>When a program is free software (free as in freedom), that means it 
     19 gives users <a 
     20 href="/philosophy/free-sw.html">the four freedoms</a>,
     21 so that they control what the program does. In most cases, that is 
     22 sufficient for the program's distribution to be ethical; but not 
     23 always. There are additional problems that can arise in specific 
     24 circumstances. This article describes a subtle problem, where 
     25 upgrading the free program requires using a nonfree program.</p>
     26 
     27 <p>If the free program's use depends unavoidably on another program which
     28 is nonfree, we say that the free program is &ldquo;trapped.&rdquo; Its code is
     29 free software, and you may be able to copy pieces of its code into
     30 other free programs with good, ethical results. But you shouldn't
     31 <em>run</em> the trapped program, because that entails surrendering
     32 your freedom to the other nonfree program.</p>
     33 
     34 <p>Someone who upholds the principles of free software would not knowingly
     35 make a program that is trapped. However, many free programs are
     36 developed by people or companies that don't particularly support these
     37 principles, or don't understand the problem.</p>
     38 
     39 <p>Dependence on a nonfree program can take various forms. The most
     40 basic form is when the programming language used has no free
     41 implementation. The first programs I wrote for the GNU system in the
     42 1980s, including GNU Emacs, GDB and GNU Make, had to be compiled with
     43 AT&amp;T's nonfree C compiler, because there was no free C compiler until
     44 I wrote GCC. Fortunately, this kind of problem is mostly a thing of
     45 the past; we now have free compilers and platforms for just about all
     46 the languages anyone uses for writing free software.</p>
     47 
     48 <p>We can release the program from this kind of trap by translating it to
     49 another language, or by releasing a free implementation of the
     50 language it's written in. Thus, when a full free Java implementation
     51 became available, that released all the free Java programs from the <a
     52 href="/philosophy/java-trap.html">Java Trap</a>.</p>
     53 
     54 <p>This kind of dependence is conceptually simple because it stems from
     55 the situation at one given instant in time. At time T, free program P
     56 won't run without nonfree programming platform Q. To borrow a term
     57 from linguistics, this relationship is &ldquo;synchronic.&rdquo;</p>
     58 
     59 <p>More recently, we have seen another kind of dependence in database
     60 programs, where you can build and run any given version of the program
     61 in the free world, but upgrading from version N to version N+1
     62 requires a nonfree program.</p>
     63 
     64 <p>This happens because the internal format of the database changes from
     65 version N to version N+1. If you have been seriously using version N,
     66 you probably have a large existing database in the version N format.
     67 To upgrade to version N+1 of the database software, you need to
     68 reformat that database.</p>
     69 
     70 <p>If the way you are supposed to do this is by running a proprietary
     71 database reformat program, or using the developer's service which is
     72 SaaSS (<a
     73 href="/philosophy/who-does-that-server-really-serve.html">Service as
     74 a Software Substitute</a>),
     75 the database software is trapped&mdash;but in a more subtle
     76 way. Any single version of the database program can be used without
     77 nonfree software or SaaSS. The problem arises when you try to keep
     78 using the program for the long term, which entails upgrading it from
     79 time to time; you can't use it this way without some nonfree software
     80 or equivalent. This database program is trapped across time&mdash;we
     81 could call it &ldquo;diachronically trapped,&rdquo; borrowing another term from
     82 linguistics.</p>
     83 
     84 <p>For example, the program OpenERP (since renamed &ldquo;Odoo&rdquo;),
     85 though free, is diachronically
     86 trapped. <a href="/software/health/">GNU Health</a>, our free package
     87 for running a medical clinic, initially used OpenERP. In 2011, GNU
     88 Health developer Luis Falcón discovered that upgrading to the next
     89 version of OpenERP required sending the database (full of patients'
     90 medical data) to OpenERP's server for reformatting. This is SaaSS:
     91 it requires the user of GNU Health (a
     92 clinic) to entrust its own computing and its data to the company
     93 developer of OpenERP. Rather than bow down, Falcón rewrote GNU Health
     94 to use <a href="https://www.tryton.org">Tryton</a> instead.</p>
     95 
     96 <p>Using SaaSS is inherently equivalent to running a proprietary program
     97 with snooping functionality and a universal back door. The service
     98 could keep a copy of the databases that users reformat. Even if we
     99 can trust the company that runs the service never to intentionally
    100 show any form of the data to anyone, we can't be sure that it won't be
    101 accessed by <a href="/philosophy/surveillance-vs-democracy.html">the
    102 intelligence agencies of various countries</a> or security-breaking
    103 crackers (<a
    104 href="https://stallman.org/articles/on-hacking.html">please don't call
    105 them &ldquo;hackers&rdquo;</a>).</p>
    106 
    107 <p>When a program is diachronically trapped, releasing it from the trap
    108 requires more than a one-time job of programming. Rather, the job has
    109 to be done continually, each time there is a change in the data
    110 format. Launching a project with a long-term commitment to continue
    111 doing this is not easy. It may be easier to pressure the company to
    112 stop trying to trap users&mdash;by rejecting the trapped program until it
    113 does so. Given how difficult it is to free the program, you had
    114 better stay away from it.</p>
    115 
    116 <p>It is possible to try out a diachronically trapped free program
    117 without nonfree software, but if you're going to do more than dabble,
    118 you must steer clear of really using it. Both businesses and
    119 individuals will find fine free alternatives that don't have such a
    120 problem; all it takes to avoid the trap is to recognize it.</p>
    121 </div>
    122 
    123 </div><!-- for id="content", starts in the include above -->
    124 <!--#include virtual="/server/footer.html" -->
    125 <div id="footer" role="contentinfo">
    126 <div class="unprintable">
    127 
    128 <p>Please send general FSF &amp; GNU inquiries to
    129 <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
    130 There are also <a href="/contact/">other ways to contact</a>
    131 the FSF.  Broken links and other corrections or suggestions can be sent
    132 to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
    133 
    134 <p><!-- TRANSLATORS: Ignore the original text in this paragraph,
    135         replace it with the translation of these two:
    136 
    137         We work hard and do our best to provide accurate, good quality
    138         translations.  However, we are not exempt from imperfection.
    139         Please send your comments and general suggestions in this regard
    140         to <a href="mailto:web-translators@gnu.org">
    141         &lt;web-translators@gnu.org&gt;</a>.</p>
    142 
    143         <p>For information on coordinating and contributing translations of
    144         our web pages, see <a
    145         href="/server/standards/README.translations.html">Translations
    146         README</a>. -->
    147 Please see the <a
    148 href="/server/standards/README.translations.html">Translations
    149 README</a> for information on coordinating and contributing translations
    150 of this article.</p>
    151 </div>
    152 
    153 <!-- Regarding copyright, in general, standalone pages (as opposed to
    154      files generated as part of manuals) on the GNU web server should
    155      be under CC BY-ND 4.0.  Please do NOT change or remove this
    156      without talking with the webmasters or licensing team first.
    157      Please make sure the copyright date is consistent with the
    158      document.  For web pages, it is ok to list just the latest year the
    159      document was modified, or published.
    160      
    161      If you wish to list earlier years, that is ok too.
    162      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
    163      years, as long as each year in the range is in fact a copyrightable
    164      year, i.e., a year in which the document was published (including
    165      being publicly visible on the web or in a revision control system).
    166      
    167      There is more detail about copyright years in the GNU Maintainers
    168      Information document, www.gnu.org/prep/maintain. -->
    169 
    170 <p>Copyright &copy; 2016, 2021 Free Software Foundation, Inc.</p>
    171 
    172 <p>This page is licensed under a <a rel="license"
    173 href="http://creativecommons.org/licenses/by-nd/4.0/">Creative
    174 Commons Attribution-NoDerivatives 4.0 International License</a>.</p>
    175 
    176 <!--#include virtual="/server/bottom-notes.html" -->
    177 
    178 <p class="unprintable">Updated:
    179 <!-- timestamp start -->
    180 $Date: 2021/09/05 10:10:10 $
    181 <!-- timestamp end -->
    182 </p>
    183 </div>
    184 </div><!-- for class="inner", starts in the banner include -->
    185 </body>
    186 </html>