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 “trapped.” 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&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 “synchronic.”</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—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—we 81 could call it “diachronically trapped,” borrowing another term from 82 linguistics.</p> 83 84 <p>For example, the program OpenERP (since renamed “Odoo”), 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 “hackers”</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—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 & GNU inquiries to 129 <a href="mailto:gnu@gnu.org"><gnu@gnu.org></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"><webmasters@gnu.org></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 <web-translators@gnu.org></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 © 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>