[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Richard M. Stallman
Tue, 15 Dec 2009 15:08:14 +0000
Module name: www
Changes by: Richard M. Stallman <rms> 09/12/15 15:08:14
philosophy : java-trap.html
RCS file: /webcvs/www/www/philosophy/java-trap.html,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- java-trap.html 22 Mar 2009 06:35:09 -0000 1.30
+++ java-trap.html 15 Dec 2009 15:08:08 -0000 1.31
@@ -1,19 +1,20 @@
<!--#include virtual="/server/header.html" -->
-<title>Free But Shackled - The Java Trap</title>
+<title>Free but Shackled - The Java Trap</title>
<!--#include virtual="/server/banner.html" -->
-<h2>Free But Shackled - The Java Trap</h2>
+<h2>Free but Shackled - The Java Trap</h2>
<p>by <a href="http://www.stallman.org/">Richard Stallman</a></p>
-<p>As of December 2006, Sun is in the middle
-of <a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">rereleasing
-its Java platform under the GNU GPL</a>. When this license change is
-completed, we expect that Java will no longer be a trap.
-Nonetheless, the general issue described here will remain
-important, because any non-free library or programming platform can
+<p>Since this article was first published, Sun
+has <a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">relicensed</a>
+most of its Java platform under the GNU General Public License, and
+there is now a free Java development environment. Thus, the Java
+language is no longer a trap.
+Nonetheless, the general issue described here remains
+important, because any nonfree library or programming platform can
cause a similar problem. We must learn a lesson from the history of
Java, so we can avoid other traps in the future.</p>
@@ -26,7 +27,7 @@
If your program is free software, it is basically ethical—but
there is a trap you must be on guard for. Your program, though in
- itself free, may be restricted by non-free software that it depends
+ itself free, may be restricted by nonfree software that it depends
on. Since the problem is most prominent today for Java programs, we
call it the Java Trap.
@@ -38,17 +39,17 @@
redistribute the source and binaries, and the freedom to publish
improved versions. (See
- Whether any given program is free software depends solely on the
- meaning of its license.
+ Whether any given program in source form is free software depends
+ solely on the meaning of its license.
Whether the program can be used in the Free World, used by people who mean
live in freedom, is a more complex question. This is not determined by the
- program's own license, because no program works in isolation. Every program
+ program's own license alone, because no program works in isolation. Every
depends on other programs. For instance, a program needs to be compiled or
interpreted, so it depends on a compiler or interpreter. If compiled into
- byte code, it depends on a byte code interpreter. Moreover, it needs
+ byte code, it depends on a byte-code interpreter. Moreover, it needs
libraries in order to run, and it may also invoke other separate programs
that run in other processes. All of these programs are dependencies.
Dependencies may be necessary for the program to run at all, or they may
@@ -57,30 +58,30 @@
- If some of a program's dependencies are non-free, this means that
+ If some of a program's dependencies are nonfree, this means that
all or part of the program is unable to run in an entirely free
system—it is unusable in the Free World. Sure, we could
redistribute the program and have copies on our machines, but that's
not much good if it won't run. That program is free software, but it
- is effectively shackled by its non-free dependencies.
+ is effectively shackled by its nonfree dependencies.
This problem can occur in any kind of software, in any language. For
instance, a free program that only runs on Microsoft Windows is clearly
useless in the Free World. But software that runs on GNU/Linux can also be
- useless if it depends on other non-free software. In the past, Motif (before
+ useless if it depends on other nonfree software. In the past, Motif (before
we had LessTif) and Qt (before its developers made it free software) were
major causes of this problem. Most 3D video cards work fully only with
- non-free drivers, which also cause this problem. But the major source of
+ nonfree drivers, which also cause this problem. But the major source of
this problem today is Java, because people who write free software often
feel Java is sexy. Blinded by their attraction to the language, they
- overlook the issue of dependencies, and they fall into the Java Trap.
+ overlook the issue of dependencies and fall into the Java Trap.
- Sun's implementation of Java is non-free. The standard Java libraries are
- non-free also. We do have free implementations of Java, such as the <a
+ Sun's implementation of Java is nonfree. The standard Java libraries are
+ nonfree also. We do have free implementations of Java, such as the <a
href="http://gcc.gnu.org/java/">GNU Compiler for Java</a> (GCJ) and <a
href="/software/classpath">GNU Classpath</a>, but they don't support all the
features yet. We are still catching up.
@@ -104,12 +105,12 @@
Sun continues to develop additional “standard” Java
- libraries, and nearly all of them are non-free; in many cases, even
+ libraries, and nearly all of them are nonfree; in many cases, even
a library's specification is a trade secret, and Sun's latest
license for these specifications prohibits release of anything less
than a full implementation of the specification. (See
@@ -119,17 +120,17 @@
allowed to change it and are not required to adhere to the specification.
But the requirement has the effect of prohibiting the use of a collaborative
development model to produce the free implementation. Use of that model
- entail publishing incomplete versions, which those who have read the spec
- not allowed to do.
+ entail publishing incomplete versions, something those who have read the
+ spec are not allowed to do.
In the early days of the Free Software Movement, it was impossible to avoid
- depending on non-free programs. Before we had the GNU C compiler, every C
- program (free or not) depended on a non-free C compiler. Before we had the
- GNU C library, every program depended on a non-free C library. Before we had
- Linux, the first free kernel, every program depended on a non-free kernel.
- Before we had Bash, every shell script had to be interpreted by a non-free
+ depending on nonfree programs. Before we had the GNU C compiler, every C
+ program (free or not) depended on a nonfree C compiler. Before we had the
+ GNU C library, every program depended on a nonfree C library. Before we had
+ Linux, the first free kernel, every program depended on a nonfree kernel.
+ Before we had Bash, every shell script had to be interpreted by a nonfree
shell. It was inevitable that our first programs would initially be hampered
by these dependencies, but we accepted this because our plan included
them subsequently. Our overall goal, a self-hosting GNU operating system,
@@ -141,10 +142,10 @@
The situation is different today. We now have powerful free operating
and many free programming tools. Whatever job you want to do, you can do it
- a free platform; there is no need to accept a non-free dependency even
+ a free platform; there is no need to accept a nonfree dependency even
temporarily. The main reason people fall into the trap today is because they
- are not thinking about it. The easiest solution to the problem of the Java
- is to teach people not to fall into it.
+ are not thinking about it. The easiest solution to the problem
+ is to teach people to recognize it and not fall into it.
@@ -164,7 +165,7 @@
language, we invite you to help in developing GNU Classpath. Trying your
programs with the the GCJ Compiler and GNU Classpath, and reporting any
problems you encounter in classes already implemented, is also useful.
- However, finishing GNU Classpath will take time; if more non-free libraries
+ However, finishing GNU Classpath will take time; if more nonfree libraries
continue to be added, we may never have all the latest ones. So please don't
put your free software in shackles. When you write an application program
today, write it to run on free facilities from the start.
@@ -205,7 +206,7 @@
<!-- timestamp start -->
-$Date: 2009/03/22 06:35:09 $
+$Date: 2009/12/15 15:08:08 $
<!-- timestamp end -->
|[Prev in Thread]
||[Next in Thread]|
- www/philosophy java-trap.html,
Richard M. Stallman <=