Frage

Background

I have read people rebutting the fact that a certain software is free as in free speech, even when it is licensed under GPL.

Some say Java isn't free because to obtain a professional certification you must get it from Oracle.

Some say Java JDK is not free to re-distribute.

Some people even say the openJDK is not free or open.

But Java is officially GPL.

Questions

  1. Doesn't GPL explicitly mean you are free to re-distribute ?

  2. Isn't GPL enough to make a software free as in free speech ?

  3. How can Java be both GPL and not-free as in free speech ?

  4. Is there is any license that trully makes a software free beyond any possible subjetive point of view?

EDIT: These question is not about names or trademarks, it's about the code.

War es hilfreich?

Lösung

Java is free. You can redistribute it according to the GPL.

You can even fork Java and distribute that. But may not name it Java anymore. After forking it is something different.

BTW IANAL. Ask a lawyer if in doubt.

Andere Tipps

"Free" is a pretty vaguely defined word, and you'll never find a definition with which absolutely everyone agrees.

In the case of Java, a lot of doubt probably stems from the fact that the JDK used to be partially closed source - the OpenJDK project was started only in 2006. Some of hte things you read may be from before that time.

With the GLP-licensed OpenJDK now being the reference implementation, Java has become a lot "freer" than it used to be, probably "free" enough for most people.

But there remain two pain points:

  • The test suite that certifies an alternative implementation's compatibility with Java standards is not GPL - it's under a very restrictive license that doesn't even allow you to run the code unless your implementation is derived from the OpenJDK.
  • The patent lawsuit of Oracle vs. Google over Android's Dalvik VM gave a alot of people doubts over Oracle's commitment to "freedom". Having the code under the GPL doesn't mean much when adapting it may violate patents.

The GPL is "free" for certain definitions of the word "free". One major restriction of it is that you are not free to do the wrong thing - you simply can't take a bunch of GPL code, incorporate it in a program that's not under a GPL-compatible license, and release the result as proprietary software.

That's not truly "free", and in order to ensure that GPL code remains under the GPL, it is necessary to impose this restriction on you. This is not intended as criticism of the GPL (although it could be seen as a criticism), and it's something that the FSF openly admit (e.g. see the text of the GPL itself) although they use a different wording than the one I have chosen here.

The only truly "free" software license - including total freedom to do bad stuff with it if you wish to - is public domain or equivalent.

Being GPL means that:

  • Anyone can create a fork, that is, a modification, to the "original" code.
  • Anyone who distributes a modified version have to credit the original authors
  • Anyone who distributes a modified binary version also have to distribute the source code of that binary version to anyone they give/sell it to.
  • More details

This is something very different from trademarks, something the Java name is. That trademark belongs to Oracle, so nobody else may distribute a similar product (even if based on the same sources) and call it "Java". "OpenJava", "FreeJava" and "JavaTheLanguageNotTheCoffee" should be fine.

[Generic 12 page IANAL disclaimer]

Let's get away from the Java example and concentrate on GPL software in general.

One problem with the GPlv2 is the patent issue. A software isn't really free when you can't use it without violating a software patent. The GPLv3 solves this issue.

Another problem occurs in the context of client/server applications or applications which run "in the cloud"™ on a machine the end-user accesses remotely. Now that more and more computing becomes distributed, this becomes an actual problem. Lots of typical desktop applications move to the web browser and selling remote access to virtualized desktop systems becomes a viable business model. Although the end-user makes use of the software in these cases, the GPL doesn't require a relicense to them, because the software runs somewhere else and they don't actually receive a copy of the software.

There is the Affero GPL which addresses this concern by adding a clause to the GPL which garants the same right to everyone who uses the software over a network.

They have the GPL'd openJDK and their own license for JavaSE (JRE and SDK, which is technically Oracle JDK to differentiate it).

The OpenJDK is maintained by Oracle and follows suit with the developments on JavaSE.

So... yes, openJDK is free as in free speech. And you are perfectly free to take that code, fork it, and release your own better version of Java. Say, the Libre version. But unless there was a schism, no one would use it and it would wither and die. Because everyone uses Oracle's Java, and Oracle is steering the boat.

Even though the license makes a perfectly free option, you have to look at the politics involved. Take OpenOffice for example. An open project, woo. But then Oracle bought Sun, took over the project, and some people didn't like where they were steering things. And because it's an open source project they split off, make LibreOffice, and the world moved on.

Even with a legally open and free license you still have to flex that muscle every now and then. There's a strong similarity with liberties and rights in general. Being open and free ALLOWS you to do what you want with Java, but that doesn't mean that you're going to break Oracles grip on it. Oracle controls Java, despite whatever license of whatever version it has.

Free speech: I can write a book, and charge money for it. My speech is copyrighted. I have freedom to speak, but I also have the freedom to charge people to use my words. GPL takes away that second option (somewhat - the analogy isn't perfect).

The GPL makes selling software difficult. Any software you create using GPL'd libraries, you have to distribute as GPL. I am making a commercial game, trying to start an independent business. Games are sold. If I use a GPL library in my game (say, for a tiny piece of URL resolving, or PNG file loading), my entire project's source code must be distributed for free. I can still charge for my game... but anyone else could compile my game and sell it as well (if they replace the art and change the game's name). That's not good, and makes GPL'd software worthless to me.

I get that modifications to the GPL'd code itself should be released, but I heavily disagree that my entire game project should be forced to use the GPL because 0.01% of it relies on a library that's covered by the GPL.

LGPL resolves this problem (if you dynamically link), so I'm heavily in favor of LGPL code.

I think GPL is fine for entire projects, I don't mind using a GPL'd art program, for example. But imagine if using that art program forced the art you created to become Creative Commons license (thankfully, they don't). And imagine that you are trying to make a living selling your art. It'd make that art program unusable to you. That's what GPL libraries do to your code.

GPL = Fine for entire projects, utterly horrible for libraries (unless you don't want your libraries used for commercial projects).

LGPL = Perfect for libraries, not as great for entire projects (depending on the desires of the project).

GPL is designed to further the open source movement, by virally infecting anything that uses GPL to make the using code also become GPL. It's too demanding. LGPL is designed to force you to share changes to something someone else made (good), but allowing you to use that something to create something new, and still lets you retain control of the new thing you created.

Oracle owns the copyright for the source code of Java brought from Sun, and other open source contributors are required to sign Contributor Agreement which grants Oracle the same copyright on their contributed code.

That's why Oracle can release a proprietary version of it. Others may fork openJDK, but the "forkers" are restricted with the license of GPL 2 since they don't hold the copyright, Oracle does.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top