Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
    
Well, "certification" is not about the code either, so why should that matter? –  Joachim Sauer Jun 14 '13 at 7:26
    
@That's what I say... some people argue the certification issue in their effort to negate that Java is free as in free speech. –  user61852 Jun 14 '13 at 9:30
1  
Then "some people" expand the definition of "free" to mean things beyond the license. That's their choice, and not terribly bad either. But it doesn't change the fact that the licensing of the OpenJDK is perfectly clear (and free!). –  Joachim Sauer Jun 14 '13 at 12:29

8 Answers 8

up vote 4 down vote accepted

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.

share|improve this answer
1  
Well, openJDK is GPL and free, but not JaveSE (which includes JRE) or OracleJDK which are under their "binary code license". They own the code so they dual licensed. –  Philip Jun 13 '13 at 14:04
    
the code is GPL, the name is trademarked, the binaries are licensed different no doubt for liability reasons. Two different things. –  jwenting Jun 14 '13 at 5:46
    
The TCK however is licensed from Oracle, so you cannot freely certify that your version is in fact Java compatible. Also the Oracle JDK versions of Hotspot are not available under the GPL. –  Joseph Earl Jun 28 '13 at 19:21

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.

share|improve this answer
1  
The "as in free speech" part is a commonly used analogy used in IT because "free" has another meaning that could lead to confusion. The oposite being "free as in free beer". One means open, the other means at no cost. –  user61852 Jun 14 '13 at 17:58
    
@user61852 Thanks, yea I'm familiar with that. The analogy mostly works, but when free speech is used as an explanation to explain, "Freedom to share, freedom to edit." they emphasize the end-user freedom, but not the developer freedom. That's why it's not fully-free, it's a one-sided freedom. "Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer." — Richard Stallman Freedom for the user, at the expense of freedom of the developer, with the GPL. With the LGPL there is (in my opinion) a better balance. –  Jamin Grey Jun 14 '13 at 20:11
    
You are right. Hadn't see it that way. –  user61852 Jun 14 '13 at 20:27

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
    
Free to me means freedom to do what you want, which the GPL indeed doesn't grant. Of course anyone is free to license their stuff under whatever license they want, that too is freedom :) –  jwenting Jun 14 '13 at 6:12

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.

share|improve this answer
    
I understand. I have no problem with big money beeing behind an opensource project. Software is expensive to make, but some people seem to think nothing is open source as long as a big company is behind it, even if it's GPL licensed. –  user61852 Jun 13 '13 at 14:23
    
OpenOffice is a descendent of StarOffice, which was a Sun product, acquired when they acquired the original developers of StarOffice, right? And as I recall, OpenOffice was started by Sun. People didn't fork LibreOffice until after Oracle bought Sun. –  FrustratedWithFormsDesigner Jun 13 '13 at 14:26
    
@FrustratedWithFormsDesigner hmmm, duly noted, how's that edit read? –  Philip Jun 13 '13 at 14:34
    
-1: Java SE is the standard. Oracle's JDK is an implementation of the standad, and Open JDK is a different implementation of the standard. It's not simply dual licensing (which is why it took so long for OpenJDK to complete) - much of the code in OpenJDK is inherited from Oracle, but some parts (such as font rendering) had to be reimplemented because Oracle had license them from someone else. –  Michael Borgwardt Jun 13 '13 at 15:32
    
@MichaelBorgwardt most of the OpenJDK code is kept in synch with the Oracle code, the only parts they deviate is where they interact with code that Oracle can't distribute because of its licenses (as you noted). –  jwenting Jun 14 '13 at 6:18

"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.
share|improve this answer

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]

share|improve this answer
    
My question is no about names or trademark. It's about the code. Some people seem to think GPL is not open source enough for them. –  user61852 Jun 13 '13 at 13:59
    
Open source is not a linear scale. I was just trying to explain why some people may see Java as less than fully free, because of Oracle trying to hem it in as much as they can. –  l0b0 Jun 13 '13 at 14:14
    
it's worse, anyone who distributes anything that merely links to a binary compiled from GPL licensed code has to distribute his own product under the GPL. That's why Java (and many other compilers and libraries) uses a modified GPL that explicitly removes that restriction, known as the bytecode exception. –  jwenting Jun 14 '13 at 6:13
    
@l0b0 the only restrictions Oracle places are on the trademarks they have to the name, and to some of the tooling which was not licensed under GPL(+bytecode exception) by their makers (Oracle does not own all of the code outright). –  jwenting Jun 14 '13 at 6:15

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.