Javalobby founder Rick Ross wrote the commentary “Where is Java in the settlement?” while Richard M. Stallman replies on his own commentary asking developers to develop the GNU Classpath instead of hoping on a Free Java.
Free but Shackled: The Java Trap
2004-04-12 Java 30 Comments
I don’t understand RMS’s argument. If I develop a program in Java, how is it not free? You use your free OS (Linux, FreeBSD, etc), go to Sun’s website and download the current JRE/JDK (for free) and run my free program. Didn’t need to spend any money. Or is this one of those free beer / free speech things that never makes sense to me?
You’re missing the whole point of Free software. It aims to place few restrictions on the user and should not require them to download non-free software.
Sun’s j2re is non-Free software.
What happens when Sun stops distributing the j2re free of charge? Or if they make massive changes to it which the community has little control over (ignoring the Java ‘Community’ BS)? Or if a Sun/MS deal prohibits distribution? These are all unlikely scenarios, but would not be possible if Sun’s j2re where Free.
Java is available for Windows, Linux and Solaris, and thanks to Apple for Mac OS X. That’s it.
Other languages (C, C++, Objective C, Scheme, SML, Haskell, Common Lisp, Python, Perl, OCaml, Smalltalk, Forth, and possibly others) run on _many_ more platforms, mainly because they are much better engineered, as well as smaller, in most cases faster (the non-interpreted languages, that is). Some even have a semantics that is quite understandable.
Anyway, until recently the *BSDs didn’t even have an up-to-date (i.e. more than 1.1) Java implementation, and they only have one now because some volunteers spent _lots_ of their free time to port Java to these systems.
So, if you want to develop a new OS and port Java to it, you might be screwed. RMS calls this the “Java trap”. Microsoft is doing the exact same thing with most of their software.
You might be allowed to download Java from Sun, but you aren’t allowed to change (read: improve) it, nor redistribute those changes.
If you want to be on the safe side, only use languages that have at least one well-supported open implementation (commercial implementations might offer some advantages to you, though).
RMS would like a world in which all software is free, and so he frames it as if nonfree software requires “being saved.” If you’ve ever seen Stallman speak, you know exactly what he’s saying in this article.
It would be a good thing for the GNU Classpath/GJC to be further developed, but people are pretty comfortable with Java. I think the OSS community should just realize that something that is free for distribution but not open source _is still good enough for free distribution_. A lot of distros are realizing this, as packaging Java and Macromedia Flash make clear.
Sun, of course, won’t start charging for Java, that is complete FUD. It would be suicide. Sun is right now neck-and-neck with Microsoft’s .NET. If they started charging for Java basically all Java developers would leave. Java language knowledge is very easily transferable to C#.
Would it be neat if Sun open-sourced Java? Yes. Is it necessary? No.
How do you know what SUN can or cannot do? Who would have thought SUN and Microsoft would be in love today, so to speak?
I don’t get it. How is it that Sun open-sourcing Java would screw you over?
I read a lot about java and freedom. I think one aspect is that sun makes java free enough not to make people run to code a JVM form scratch.
> Java is available for Windows, Linux and Solaris, and thanks to Apple for Mac OS X. That’s it.
You need to replace the word “Java” above with
“The Official Java Virtual Machine (from Sun Microsystems)”.
> Other languages (C, C++, Objective C, Scheme, SML, Haskell, Common Lisp, Python, Perl, OCaml, Smalltalk, Forth, and possibly others) run on _many_ more platforms, mainly because they are much better engineered, as well as smaller, in most cases faster (the non-interpreted languages, that is). Some even have a semantics that is quite understandable.
From above. You talking about “programming languages”,
or to some extended “compilers”.
Please don’t compare “programming languages” with “virtual machine”.
You can write program with Java programming langauge, compile it to native code, and run it *without* virtual machine. Lots of compilers can do this, for popular free software one, it is gcj. And they are available on many oses, other than sol/win/lin/mac.
I know you know all the differences, you just got confused by that umbrella name “Java” — I used to also.
The Java compiler also only understands bytecode…
So you can have a differently language that, as long as it compiles to compliant Java bytecode, can run in the Java VM…
In fact, there is a smalltalk to bytecode compiler…
Freedom includes responsibility. Developers weren’t forced to adopt Java, they adopted it because it was a good and promising young platform. Part of that means that they got involved with Java knowing just how connected it is to one company.
The CLASSPATH project is laudable in that it’s RMS and several developers putting some of their money where their mouths are and working on a free Java implementation. However, it is not truly free for one good reason: it doesn’t allow commercial developers to take advantage of it with their projects because any code developed on top of CLASSPATH must be GPL’d unless I am mistaken.
I’ve have seen it stated numerous places that .NET and Java libraries when made GPL have a viral effect on applications that use them similar to actually using GPL code in tha app itself. That was supposed to be the reason why the Mono C runtime is released under the GPL but they chose the MIT license for the libraries.
If RMS were serious about real freedom he’d create a license that would explictly allow commercial developers to use these sorts of libraries without open sourcing their products. There is a fundamental difference between using GPL code in your commercial app and merely linking to it. RMS and GNU won’t get anywhere until they become more business friendly. I’m sure that one of the reasons why IBM has not gotten involved with CLASSPATH at all is because of the license. IBM could always use a good OS Java implementation for its consulting businesses, eclipse, etc. but because of the license, CLASSPATH couldn’t be it.
I can’t believe that you start your post by talking about programmers’ responsibility for choosing a platform and end by complaining about the “viral” GPL. Exercise some of that vaunted responsibility and don’t start using GPL code for non-GPL products. That way you won’t have a problem.
I think RMS is annoying… but more intelligent criticism would be better.
How do you know what SUN can or cannot do? Who would have thought SUN and Microsoft would be in love today, so to speak?
No one would have thought that. But I can know what SUN can or cannot do, in terms of a developer response to those actions.
If they started charging for Java, then developers, seeing the free alternative that is “.NET” (i.e. MSIL, with implementations by Microsoft and Ximian/Novell) would undoubtably flock that way. Especially since Microsoft makes it pretty darn easy to transfer Java knowledge to C# (for one thing, C# takes a lot of ideas from Java, and for another, they’ve even coded a “Java Language Conversion Assistant” (or something like that) which enables you to at least get started porting your Java apps to C#).
As has been said earlier, developers are not one-trick ponies. They are able to shift to the marketplace more quickly than the big companies would like (or, in MS’ cases, as quickly as they’d like).
So, the answer is, yes, SUN can start charging for Java. But if they do, then an open source Java was TRULY a pipe dream, and developers will abandon them (i.e. suicide).
Why is that difficult to understand?
Reading the GNU Classpath license it seems that it is GPL with an exception (see http://www.gnu.org/software/classpath/license.html ). I don’t understand why they did not use the LGPL. Is this an “official” GNU license or something they made up themselves?
Why should Free Software developers invest time, effort, and talent into a project *solely* to benefit a commercial enterprise? The whole *point* of Free Software is to level the playing field — everyone benefits because everyeone has exactly the same access to the source code, and the same responsibility to commit changes back to the source code base. No one player can introduce proprietary changes and keep them from the community (as can happen with Java).
There are times when the GPL is appropriate and times when it is not, but your argument is just specious. If commercial developers don’t like the GPL, there are plenty of other OSS licenses around (such as BSD) with more liberal distribution clauses. But if you want to benefit from all the hard work that GPL developers have put into a given piece of software, you have no right to whine that you don’t want to abide by the license.
You would have saved a lot of typing and thinking if you would have done just the tiniest bit of research before posting: read the GNU Classpath license — it explicitly allows you to use any license for you own program.
However, it is not truly free for one good reason: it doesn’t allow commercial developers to take advantage of it with their projects because any code developed on top of CLASSPATH must be GPL’d unless I am mistaken.
You assume that unless someone can make non-Free software from Free software, it is not Free? People who wished to do that would use the Sun JVM, not a Free implimentation, and be subject to their rules. This is not intended for them.
You are assuming ‘free’ as in ‘I can make a closed, non-Free app from this, and enslave my users.’ When rms says Free, he is saying it as ‘this software is Free for all to use, look at, and share with others. No one may ever close it, no one will ever take it away from the users, coders, or future uses and coders.’ It is not ‘free’ to those who would deny Freedom to those who come after them. This ignores the ideology that drives Free software; that all software was built on what came before it, and future software will be built on what is wrote today.
To say that the GNU classpath project isn’t ‘free’ because it keeps parasites from riding upon their back is absurd, and a spit in the face of all that the GNU project has stood for and done over the years.
The gpl is about ensuring the maximum freedom for the community. In order to do this it does limit some individual freedoms.
Chances are your country’s laws work the same way. I live in a “free” country, but there is many things I can’t do. Eg. I can’t go into my neighbor’s house and take his stuff. Sure this limits my freedom, but it protects my neighbor’s freedom.
The practical approach of limiting individual’s freedom in order to ensure the freedom of the community it what makes the gpl work so well. It helps sustainable communities to develop by creating an environment that forces everyone to have the same rights.
“If RMS were serious about real freedom he’d create a license that would explictly allow commercial developers to use these sorts of libraries without open sourcing their products.”
It is called the LGPL. And you haven’t understood the difference between proprietary software and commercial software either. Commercial software can be proprietary and can be FLOSS. Non-commercial software can be proprietary and can be FLOSS. Proprietary software CANNOT be FLOSS, except when it is dual licensed like ie. QT, MySQL.
“Geee, Hitler, Stalin, RMS… all the same.”
comparing RMS with Hitler… that post shold have been removed IMO.
GNU/Catcher in the Rye
“Anyway, I keep picturing all these little free programs playing some game in this big field of rye and all. Thousands of little free programs, and nobody’s around – nobody big, I mean – except me. And I’m standing on the edge of some crazy cliff. What I have to do, I have to catch the free programs if they start to go over the non-free cliff – I mean, if they’re running and they don’t look where they’re going I have to come out from somewhere and catch them. That’s all I’d do all day. I’d just be the GNU/catcher in the rye.”
With a C compiled application, you don’t need anything but the OS it was compiled in. It is basically free. On the other hand, with Java, your compiled code is hostage to the j2re. If Sun decides that X os is too popular, they can just neglect creating the java runtime environment. Then your whole code base becomes useless.
The licence is not the standard GPL licence:
“As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules”
“As such, it can be used to run, create and distribute a large class of applications and applets. When GNU Classpath is used unmodified as the core class library for a virtual machine, compiler for the java languge, or for a program written in the java programming language it does not affect the licensing for distributing those programs directly.”
> On the other hand, with Java, your compiled code is hostage to the j2re. If Sun decides that X os is too popular, they can just neglect creating the java runtime environment. Then your whole code base becomes useless.
Except if supporters/owners of the hypothetical OS wanted Java support on their OS, they could just license Java from Sun and implement it on their platform. This is how HP releases Java runtime for HP-UX and True64, IBM for AIX, and SGI for Irix. Any vendor is free to deliver a JVM implementation for their target platform provided they obtained the license from Sun and the new JVM passed the certification test suite.
With a C compiled application, — SNIP — base becomes useless.
Same is true if you use 3rd party libs, as lo and behold, you have to to make a useful app.
Any vendor is free to deliver a JVM implementation for their target platform provided they obtained the license from Sun and the new JVM passed the certification test suite.
I see no reason why a branch of Classpath can not do this.
OK, it’ll cost, but then IBM wants a free implementation, let them pay.
I’m not against a more open, and inderpendent JCP, nor am I against funding for an Open Source vesrion of Java, but “open sourcing” java is daft, it needs a central body controlling it, and the JCP does this nicely (if it is a little too controlled by Sun, and should be free for Open Source none-profit projects).
 The problem with this is IBM/other large company using Eclipse/other OSS side project to have a large controlling share than it should, and getting
It always amazes me that people think that open source software released under a non-GPL license can somehow mysteriously become “non-free” by some evil organization in the future.
This is not how it works. Period.
If I release my code under BSD, my code will always be free and no one can change that. As long as a copy exists some where with my license, then it will always be free. Of course, if some evil organization could eradicate all copies of the original source archive, then you’d have a problem…but this would probably be true for GPL too.
Any source code under and open source license will always remain free. The differences are that you may or may not be able to sell it and you may or may not be required to also provide any modifications under an open source license.
So, if I use a BSD license, my software will always be free, since I own the copyright. Even after I die, it will be free as long as a copy exists some where. But this also means that someone could use my software in a commercial product (i.e., sell it) and that their modifications do not have to be “free”. For me (and most people), it is open for debate if I should be able to tell them what to do with their modifications or not.
Some people, like RMS, think that it is our moral obligation to force everyone to release software under an open source license; subsequently, he refers to any open source license that forces anyone who uses it to open source their own modifications as “free”. I do not agree that this is our moral obligation, but I do believe in open source software.
Regardless, open source software cannot become somehow “unfree” in the future, only other people’s modifications and systems built on top of it can.
And about C#/mono trap ? It is worser …
James Gosling replies to a lot of these comments http://today.java.net/jag/page7.html#59 here [java.net]
But that is how it works.
You can say that the BSD doesn’t close software to the user, but it does. Decades of UNIX bullox prove it. The BSD-style license only promises that the large company who gets the code has access to it. You have no way to ask them to kindly send you the original source, you have to hope you can find it yourself. If it is like the old BSD, by which I mean the Berkley Standard Distribution pre 4.4lite that was built on AT&T’s code, then you would have to A) have a license for the AT&T code and B) hope you know the right people to get a copy of the patches against that code. With the GPL, the AT&T code would have never entered the tree, and it’s distribution would never have been hampered. We would also never have even had the lawsuit that crippled BSD-based free distributions in their formative years.
At it’s heart, the BSD-style license grants freedoms only to those who find it first. The GPL ensures that everyone who finds the software will always have the same Freedoms, regardless of where in the supply chain they are.
No, that is not how it works.
It doesn’t make a difference if a large evil company uses my BSD source code and doesn’t give copies of it to other people. It will still be freely available via a quick query to google. The only thing that will not be freely available are the changes that this large evil company may have made to my source code, but that’s their prerogative.
Your argument sounds really “old-school” in the sense that it seems like you don’t acknowledge that “google” exists. It is quite a different world now than in 1986.