Richard Stallman has written an article on Java, "Free but shackled: The Java trap," and Sun's Dr. James Gosling didn't much care for it or all the speculation about Sun that he's been reading about in the media, so he has also written an article, reproduced on Newsforge, which he thinks refutes it. What it really does is show what Sun's problem is with the FOSS community. Richard's is free to republish verbatim as long as the notice at the end is preserved, so I am republishing it in full. Dr. Gosling's is silent on that issue, so that means it's copyrighted and only fair use would be allowed. And that pretty much tells you the story. It's a metaphor. Oh, and one other thing: Gosling calls the GPL "viral".
Because Gosling's is a reactive piece, I'll place relevant snips from it after Stallman's and you can make up your own mind. I've certainly made up mine, and so you don't have to guess, I will repeat what I told Sun's PR guy the other day when he asked me why the community has issues with Sun: it's the GPL. They don't support it and they don't get it. When you consider that it's been estimated that 75% to 80% of all FOSS is under the GPL, that tells you exactly where the lines are drawn, and if Gosling's piece represents Sun's position, Sun isn't on the FOSS side. How could they not know that attacking the GPL would alienate the community? Either they are so out of touch they don't know or they don't care. Either way, it's not looking very good. Which raises the question: what to do about Java?
**************************************************
Free but shackled: The Java trap
~ by Richard M. Stallman
A program is free software if its users have certain crucial freedoms.
Roughly speaking, they are: the freedom to run the program, the
freedom to study and change the source, the freedom to redistribute
the source and binaries, and the freedom to publish improved versions.
(See http://www.gnu.org/philosophy/free-sw.html.) Whether any given
program 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 to 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 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 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 be necessary
only for certain features. Either way, all or part of the program
cannot operate without the dependencies.
If some of a program's dependencies are non-free, 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.
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 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 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.
Sun's implementation of Java is non-free. Blackdown is also non-free;
it is an adaptation of Sun's proprietary code. The standard Java
libraries are non-free also. We do have free implementations of Java,
such as the GNU Java Compiler and GNU Classpath, but they don't
support all the features yet. We are still catching up.
If you develop a Java program on Sun's Java platform, you are liable
to use Sun-only features without even noticing. By the time you find
this out, you may have been using them for months, and redoing the
work could take more months. You might say, "It's too much work to
start over." Then your program will have fallen into the Java Trap;
it will be unusable in the Free World.
The reliable way to avoid the Java Trap is to have only a free
implementation of Java on your system. Then if you use a Java feature
or library that free software does not yet support, you will find out
straightaway, and you can rewrite that code immediately.
Sun continues to develop additional "standard" Java libraries, and
nearly all of them are non-free; in many cases, even 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
http://jcp.org/aboutJava/communityprocess/JSPA2.pdf and
http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html,
for examples.
Fortunately, that specification license does permit releasing an
implementation as free software; others who receive the library can be
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 would entail publishing incomplete
versions, which 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 shell. It was
inevitable that our first programs would initially be hampered by
these dependencies, but we accepted this because our plan included
rescuing them subsequently. Our overall goal, a self-hosting GNU
operating system, included free replacements for all those
dependencies; if we reached the goal, all our programs would be
rescued. Thus it happened: with the GNU/Linux system, we can now run
these programs on free platforms.
The situation is different today. We now have powerful free operating
systems and many free programming tools. Whatever job you want to do,
you can do it on a free platform; there is no need to accept a
non-free 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 Trap is to teach people
not to fall into it.
To keep your Java code safe from the Java Trap, install a free Java
development environment and use it. More generally, whatever language
you use, keep your eyes open, and check the free status of programs
your code depends on. The easiest way to verify that program is free
is by looking for it in the Free Software Directory
(http://www.fsf.org/directory). If a program is not in the directory,
you can check its license(s) against the list of free software
licenses (http://www.gnu.org/licenses/license-list.html).
We are trying to rescue the trapped Java programs, so if you like the
Java language, we invite you to help in developing GNU Classpath.
Trying your programs with the the GJC 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 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.
Copyright 2004 Richard Stallman
Verbatim copying and distribution of this entire article are permitted
worldwide without royalty in any medium provided this notice is preserved.
***************************************************
Here is the relevant snip from Dr. Gosling's article:
"As for Richard Stallman's Free but shackled: The Java trap , it's hard to know where to begin. He has his own rather peculiar definition of 'Free' that I think violates the First Law of Thermodynamics (energy is conserved): developers put a huge amount of energy into creating software and if they can't get that energy back in a way that balances, then the system falls apart. I've been in this discussion countless times and I'd like to avoid landing there again. GPL software is not 'free': it comes with a license that has a strong political agenda. Like GPL software, the Java platform is 'free' in many senses: you don't have to pay anything for the runtime or developers kit and you can get the sources for everything. Unlike GPLd software, the Java sources don't come with a viral infection clause that requires you to apply the GPL to your own code. But the sources for the JDK do come with a license that has a different catch: redistribution requires compatibility testing.
"This is just context for the real point I want to make: when you have platform software like Linux or the JDK, the platform interface (in the case of Java, the VM and API specifications) divides the world of developers into two groups: those who work under the interface to implement it, and those who work above the interface and build applications based on it. These two communities have needs that conflict. In particular, a blanket freedom for developers under the interface, to do whatever they damn well please, is incredibly disruptive and damaging to developers above the interface. The catch in the Sun Java source license is all about defending the needs of developers who work above the interface. This ends up being constraining to folks who work under the interface, but in a way that is hugely beneficial to those who work above. We believe that for a developer who has built a Java application they have a right to trust that when some other developer says 'I have a Java VM for you to use', that their application will work.
"So yes, like the GPL, our source license does have an agenda. It's not a hidden one, and we believe it's a very beneficial one (at least, to application developers!)."
Obviously he hasn't got a clue how offensive this is to anyone who cares about freedom for software. There are alternatives to Sun's Java, particularly if IBM were to decide to throw some resources to
the GNU Classpath project, which I sincerely hope they do.
IBM's current JDK is based on Sun's code in part, I believe. What if IBM took the parts it does own, combined it with Kaffe and threw some resources at Classpath? Wouldn't that work? Somebody needs to do something, because if this is indicative of Sun's position, it doesn't look good. Viral indeed. It's a license that cares about freedom to modify, distribute and copy. It cares about those freedoms for users as well as developers, not just the interests of those writing an application who wish to tightly control its direction thereafter and make some money from their software. That's the way the world used to be, but it's not the future. So it's a culture clash. Sun folks are probably perfectly nice people if you met them at a party. But they don't see that the world has changed. Gosling's sentence about developers needing something back tells it all: "developers put a huge amount of energy into creating software and if they can't get that energy back in a way that balances, then the system falls apart". Except FOSS proves it doesn't. That argument is so yesterday. It's funny, because he writes earlier in his article about how liberating it is if hardware can be commoditized: "Where this relates to Java and Sun is that because such a huge fraction of customer applications that run on Sun hardware is written in Java, we can treat CPUs (and even operating systems) as commodities, in the same way we treat disk drives. We can use whatever underlying CPU technology (x86/x86-64/Sparc/...) or OS technology (Solaris/Linux/...) is most suitable for the situation at hand. We aren't constrained by the instruction set or OS interface that is baked into our customers' applications. This is hugely liberating for hardware design." He just can't connect the dots that commoditizing software is liberating too. If you have a proprietary interest, it's hard to see the benefits to others of you letting go, I suppose. Gosling is a Sun Microsystems fellow who managed the group that created Java in the early 1990s. Java is "free in many senses," he writes. Yes, but not the one that matters to us. Sun and Gosling are free to cling to the old ways as long as they can. And they can believe that you can make money from software and that the old ways were best and software should not be commoditized. But the world is moving on. History doesn't care what you prefer. If Sun wants to know why the community does not trust it, that is the answer: We are users, most of us. In the old days, the community was mostly programmers. Maybe then Gosling's argument made more sense. But the community is users too now. The GPL benefits us. The argument between programmers above and below the interface isn't relevant to us. There is a public policy argument that needs to be addressed. Software has become too important to leave it an argument between types of programmers. And we users have a choice. We naturally will choose a license that cares about us. That would be the GPL. The GPL also protects us from the SCO's of this world. SCO has made me allergic to proprietary code, because I see now what can happen if proprietary code falls into the wrong hands. It doesn't matter to me, personally, if a developer wants to write an application and release it as proprietary software. I buy and sometimes use such specialty software. But I care if a language is proprietary. I care if an operating system is proprietary. I care if the proprietor has the power to seriously disrupt everything for everybody just to make a buck for his selfish self. That isn't politics. If Sun chose to do a SCO, is there anything to stop them? That's a real question. And the real answer is that if Java were under the GPL, they would be blocked. If that's viral, I want to catch it.
|