summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html')
-rw-r--r--talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html178
1 files changed, 178 insertions, 0 deletions
diff --git a/talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html b/talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html
new file mode 100644
index 0000000..3d472a9
--- /dev/null
+++ b/talermerchantdemos/blog/articles/en/when-free-depends-on-nonfree.html
@@ -0,0 +1,178 @@
+<!--#include virtual="/server/header.html" -->
+<!-- Parent-Version: 1.86 -->
+
+<title>When Free Software Depends on Nonfree - GNU Project - Free Software Foundation</title>
+ <!--#include virtual="/philosophy/po/when-free-depends-on-nonfree.translist" -->
+<!--#include virtual="/server/banner.html" -->
+<h2>When Free Software Depends on Nonfree</h2>
+
+ <p>by <strong>Richard Stallman</strong></p>
+
+<p>When a program is free software (free as in freedom), that means it
+gives users the four freedoms (<a
+href="/philosophy/free-sw.html">gnu.org/philosophy/free-sw.html</a>)
+so that they control what the program does. In most cases, that is
+sufficient for the program's distribution to be ethical; but not
+always. There are additional problems that can arise in specific
+circumstances. This article describes a subtle problem, where
+upgrading the free program requires using a nonfree program.</p>
+
+<p>If the free program's use depends unavoidably on another program which
+is nonfree, we say that the free program is &ldquo;trapped.&rdquo; Its code is
+free software, and you may be able to copy pieces of its code into
+other free programs with good, ethical results. But you shouldn't
+<em>run</em> the trapped program, because that entails surrendering
+your freedom to the other nonfree program.</p>
+
+<p>Someone who upholds the principles of free software would not knowingly
+make a program that is trapped. However, many free programs are
+developed by people or companies that don't particularly support these
+principles, or don't understand the problem.</p>
+
+<p>Dependence on a nonfree program can take various forms. The most
+basic form is when the programming language used has no free
+implementation. The first programs I wrote for the GNU system in the
+1980s, including GNU Emacs, GDB and GNU Make, had to be compiled with
+AT&amp;T's nonfree C compiler, because there was no free C compiler until
+I wrote GCC. Fortunately, this kind of problem is mostly a thing of
+the past; we now have free compilers and platforms for just about all
+the languages anyone uses for writing free software.</p>
+
+<p>We can release the program from this kind of trap by translating it to
+another language, or by releasing a free implementation of the
+language it's written in. Thus, when a full free Java implementation
+became available, that released all the free Java programs from the <a
+href="/philosophy/java-trap.html">Java Trap</a>.</p>
+
+<p>This kind of dependence is conceptually simple because it stems from
+the situation at one given instant in time. At time T, free program P
+won't run without nonfree programming platform Q. To borrow a term
+from linguistics, this relationship is &ldquo;synchronic.&rdquo;</p>
+
+<p>More recently, we have seen another kind of dependence in database
+programs, where you can build and run any given version of the program
+in the free world, but upgrading from version N to version N+1
+requires a nonfree program.</p>
+
+<p>This happens because the internal format of the database changes from
+version N to version N+1. If you have been seriously using version N,
+you probably have a large existing database in the version N format.
+To upgrade to version N+1 of the database software, you need to
+reformat that database.</p>
+
+<p>If the way you are supposed to do this is by running a proprietary
+database reformat program, or using the developer's service which is
+SaaSS (<a
+href="/philosophy/who-does-that-server-really-serve.html">Service as
+a Software Substitute</a>),
+the database software is trapped&mdash;but in a more subtle
+way. Any single version of the database program can be used without
+nonfree software or SaaSS. The problem arises when you try to keep
+using the program for the long term, which entails upgrading it from
+time to time; you can't use it this way without some nonfree software
+or equivalent. This database program is trapped across time&mdash;we
+could call it &ldquo;diachronically trapped,&rdquo; borrowing another term from
+linguistics.</p>
+
+<p>For example, the program OpenERP (since renamed &ldquo;Odoo&rdquo;),
+though free, is diachronically
+trapped. <a href="/software/health/">GNU Health</a>, our free package
+for running a medical clinic, initially used OpenERP. In 2011, GNU
+Health developer Luis Falcón discovered that upgrading to the next
+version of OpenERP required sending the database (full of patients'
+medical data) to OpenERP's server for reformatting. This is SaaSS:
+it requires the user of GNU Health (a
+clinic) to entrust its own computing and its data to the company
+developer of OpenERP. Rather than bow down, Falcón rewrote GNU Health
+to use <a href="http://www.tryton.org">Tryton</a> instead.</p>
+
+<p>Using SaaSS is inherently equivalent to running a proprietary program
+with snooping functionality and a universal back door. The service
+could keep a copy of the databases that users reformat. Even if we
+can trust the company that runs the service never to intentionally
+show any form of the data to anyone, we can't be sure that it won't be
+accessed by <a href="/philosophy/surveillance-vs-democracy.html">the
+intelligence agencies of various countries</a> or security-breaking
+crackers <a
+href="http://stallman.org/articles/on-hacking.html">(please don't call
+them &ldquo;hackers&rdquo;)</a>.</p>
+
+<p>When a program is diachronically trapped, releasing it from the trap
+requires more than a one-time job of programming. Rather, the job has
+to be done continually, each time there is a change in the data
+format. Launching a project with a long-term commitment to continue
+doing this is not easy. It may be easier to pressure the company to
+stop trying to trap users&mdash;by rejecting the trapped program until it
+does so. Given how difficult it is to free the program, you had
+better stay away from it.</p>
+
+<p>It is possible to try out a diachronically trapped free program
+without nonfree software, but if you're going to do more than dabble,
+you must steer clear of really using it. Both businesses and
+individuals will find fine free alternatives that don't have such a
+problem; all it takes to avoid the trap is to recognize it.</p>
+
+</div><!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>Please send general FSF &amp; GNU inquiries to
+<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
+There are also <a href="/contact/">other ways to contact</a>
+the FSF. Broken links and other corrections or suggestions can be sent
+to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
+
+<p><!-- TRANSLATORS: Ignore the original text in this paragraph,
+ replace it with the translation of these two:
+
+ We work hard and do our best to provide accurate, good quality
+ translations. However, we are not exempt from imperfection.
+ Please send your comments and general suggestions in this regard
+ to <a href="mailto:web-translators@gnu.org">
+ &lt;web-translators@gnu.org&gt;</a>.</p>
+
+ <p>For information on coordinating and submitting translations of
+ our web pages, see <a
+ href="/server/standards/README.translations.html">Translations
+ README</a>. -->
+Please see the <a
+href="/server/standards/README.translations.html">Translations
+README</a> for information on coordinating and submitting translations
+of this article.</p>
+</div>
+
+<!-- Regarding copyright, in general, standalone pages (as opposed to
+ files generated as part of manuals) on the GNU web server should
+ be under CC BY-ND 4.0. Please do NOT change or remove this
+ without talking with the webmasters or licensing team first.
+ Please make sure the copyright date is consistent with the
+ document. For web pages, it is ok to list just the latest year the
+ document was modified, or published.
+
+ If you wish to list earlier years, that is ok too.
+ Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
+ years, as long as each year in the range is in fact a copyrightable
+ year, i.e., a year in which the document was published (including
+ being publicly visible on the web or in a revision control system).
+
+ There is more detail about copyright years in the GNU Maintainers
+ Information document, www.gnu.org/prep/maintain. -->
+
+<p>Copyright &copy; 2016, 2017, 2018 Free Software Foundation, Inc.</p>
+
+<p>This page is licensed under a <a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/">Creative
+Commons Attribution-NoDerivatives 4.0 International License</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.html" -->
+
+<p class="unprintable">Updated:
+<!-- timestamp start -->
+$Date: 2018/12/15 14:02:39 $
+<!-- timestamp end -->
+</p>
+</div>
+</div><!-- for class="inner", starts in the banner include -->
+</body>
+</html>