Java now Open Source (but not really free)

John Gruber (DaringFireball) asks:

Open sourcing Java is almost certainly a very good thing for Java developers, and it’s probably a good thing for the world at large. I have yet to see a cogent explanation as to how it’s going to make Sun a nickel, though.

Sun chose to use the GPL v2 for the license.

In other words, Sun chose a license that mandates “free” as in “you can’t own your changes nor can anyone else” and not the BSD or MIT definition of “free”.

If you mess with the source and try to “distribute” your modified compiled version, you are obligated to distribute the source — obligated to give your changes back to Sun and the community.

In other words: If you modify any of the GPL v2 licensed Java related technologies in a way that you feel has value — that you feel boosts your corporate or personal valuation, that you think you can sell for money, or that you provides a competitive advantage within the marketplace — then you have two choices (and the non-choice of non-compliance which I will not address):

(1) You can give your modifications back to Sun and make it available to everyone.

(2) You can negotiate with Sun for a custom license that allows your modifications to remain under your control. Most likely, you’ll be paying Sun for the privilege of actually owning your modifications. Yes, to own your modifications you will need to contact Sun and negotiate a non-GPL license.

There lies one revenue generating opportunity.

Pretty much the same opportunity as they had before, but now Sun no longer has to administrate some custom licensing scheme. While custom licensing was all the rage in the roaring ’90s, this century’s ever increasing stream of litigation has markedly increased the value in going with a known license.

As a result, the default state is now one that is well known to the industry and provides a well understood level of access to Sun’s sources.

Better yet, it brings legions of rabid GPL fans quite thoroughly enthused with the notion of bringing down The Man who does not Abide by The License. Don’t give your changes back, you will be busted. And Java makes this police work even easier, given that it is pretty much impossible to truly obfuscate your compiled Java code and also offer a usable API to use it, plug-in or otherwise.

So, by going GPL, Sun has vastly reduced their licensing administrative costs, effectively hired an effective license enforcement army, and ensured that if anyone actually does something interesting with the technology it’ll either be given away for free or Sun will be paid to keep quiet about it.

A win-win situation, it would seem.

Yet there is also another revenue generating opportunity.

Now that Java is GPL v2, it is philosophically compatible with Linux.

There should no longer be any kind of a legal barrier to, say, Debian Linux — a particularly “license attentive” distribution — including stock builds of the JVM with that particular Linux distribution.

Sun sells very nice Linux boxes. This weblog is hosted on one of them (Thanks to Red Bean).

With this move, Sun will be able to sell industry standard Linux boxes with a first class, Linux community blessed (most likely), JVM built right in.

Now, I certainly don’t believe this is going to be some massive boost to Sun’s revenue stream.

Not really, but I don’t think it will be insignificant either.

I do believe this is a major positioning statement for Sun, though. For the first time, Sun’s Java strategy actually sort of fits with the rest of the company’s products.

(Wow. How far we have come. I remember the complete pain in the ass it was to distribute patches for the JVM 1.0.2 when I ported it to NeXTSTEP. Others had ported other parts, too, but the license didn’t really allow us to effectively collaborate without a huge procedural headache.)



16 Responses to “Java now Open Source (but not really free)”

  1. Taran Rampersad says:

    Umm. You do own your changes to the software; however, if you distribute, you must distribute the source. You can’t, however, distribute it without giving people the same rights that allowed you to make the changes which you did. You may not agree, that’s fine. Just had to say it. :-)

    This was asked about at the press conference in SecondLife, and concerns like that are not something they are taking lightly – for example, the use of Java with Apache can be a little hairy in terms of licensing with the GPL… but Sun’s folks are pretty confident that the relevant communities will sort it out, as is Shuttleworth.

  2. bbum says:

    Heh. So, exactly, where is the line drawn between “distribution of changes” and “non-distribution”? I.e. if I write the world’s most ass-kicking JVM modification, under what uses of said JVM do I not have to give the changes back?

    I don’t think I implied anywhere within what I wrote that I don’t agree with either the GPL or with Sun’s use of the GPL. As a matter of fact, I think that Sun opting to leverage the “non-free” nature of the GPL to ensure that they benefit regardless is an excellent move.

    I only disagree with the GPL in the context where someone tries to combine a GPL license with the notion that the software is free. The GPL is an extremely limiting license — it does not give you the freedom to do what you want with the source. Because it limits what can be done with the software, it is not free.

  3. Taran Rampersad says:

    Actually, it only limits someone’s ability to abuse the rights of previous creators who wrote the software to be distributed as they wished. So… if you didn’t write it originally, write a better mousetrap where you can dose out your source. So it’s limiting to people who want to take advantage of the goodwill of previous developers. OK. I get that.

    That’s the point, really. And I promise, I won’t post on this again or we’ll probably be going back and forth quite a bit. I surrender. :-)

  4. bbum’s weblog-o-mat » Blog Archive » The GPL. Oh, the GPL…. says:

    [...] I started writing this in response to Taran’s responses to my previous post. But I think this stands alone. [...]

  5. Michael Tsai - Blog - Java Now Open Source says:

    [...] Bill Bumgarner: [...]

  6. Jon says:

    GPL isnt freedom for the _user_ of the software.
    It is freedom for the software itself.

  7. bbum says:

    If the software were actually free, why doesn’t the Apache group feel free to mix the GPL’d JDK into their particular projects?

    IBM is calling for Sun to “dual license” Java; once under the restrictive GPL and once under an “apache friendly” free license.

    http://news.com.com/2061-10795_3-6134853.html

    Maybe IBM will pay Sun to release Java under a less restrictive, Apache license compatible, license?

  8. Matt says:

    Yes, the GPL is not completely free. It mandates payment in code: if you use the contributors’ code, modify it, and distribute a changed binary, you must provide your code in return.

    To me, this sounds like a reasonable payment for many people, as they are getting access to 6M lines of source code in exchange for providing their changes.

    Is this reasonable for everyone? Of course not. But Sun wrote the code, and they have the right to set the terms for using it. One can argue that it improves the chance of advancing the code base as everyone is mandated to give back. BSD licensed code, such as the xnu kernel in OS X, can stagnate. I don’t see an active developer community around the OS X kernel, after all–for example, how many vendors are shipping xnu other than Apple? And how long did it take for Apple to release the code? (Yes, there are more active BSD-licensed projects, but this is an example of what happens when code giveback terms aren’t enforced).

  9. bbum says:

    Sun requires you to agree to a Sun Contributor’s Agreement if you want to give your changes back. If you sign said agreement, you are agreeing to assign copyright and ownership to Sun. That is, they are free to take your changes and sell them to whoever they want as a part of custom licensing deals.

    Hence, Sun is using the GPL to both make the Java source more accessible and to create future revenue generation opportunities.

    And, again, why does everyone keep making statements under the assumption that I don’t agree with the GPL or don’t think that Sun’s decision was a good one? If you read what I wrote, you might find that I think Sun’s decision is an excellent one. That Sun has embraced the GPL to both improve accessibility to their technology while retaining ownership in a fashion where they can also guarantee future revenue streams from licensing of said technology is a brilliant move!

    As for Mac OS X, consider: How, exactly, has Apple’s delay in releasing any piece of source damaged Apple’s revenue and company valuation in any significant fashion? Sure, it is unfortunate that it took so long for the code to come out, but — ultimately — Apple (like Sun) is in the business to be a profitable company and to boost shareholder value by boosting the company valuation.

  10. Daniel Axelrod says:

    While we’re quibbling about “free”, let’s quibble about “own,” too.

    “free” as in “you can’t own your changes nor can anyone else” and not the BSD or MIT definition of “free”.

    Well, more like “free” as in “you must GPL-license changes you distribute, as must everyone else”. Y’know, the commonly accepted definition of “Free Software”. The kind of freedom that’s supposed to give the author and the user about equivalent rights.

    You own all code you write. Full stop. Under US copyright law, (as I understand it, and IANAL) you own any parts that are uniquely yours. If you wanted to only distribute patches, you’d probably have a lot more leeway as to how you license them (but I’m not actually sure how much clarity there is on whether patches are considered derivative works). If you modify somebody else’s code, the resulting whole is owned by both you and that somebody else, and both of you must approve excersises of copyright taken by either one of you.

    Under the GPL, the author is giving you permission to distribute modified versions of the GPLed code if you license them under the GPL. The GPL primarily deals with distribution; if you don’t distribute modified versions it lets you do basically whatever you want.

  11. DeanG says:

    > And, again, why does everyone keep making statements under the assumption that I don’t agree with the GPL or don’t think that Sun’s decision was a good one?

    Tone. GPL discussions are inherently emotive and positioned around Freedoms/Rights/Libre/Whatever. Your economical discussion is easily lost with your title challanging “free” and quickly lead into the scenarios application.

    Did I read the quote your post was inspired from? Only on re-read. Maybe it’s the lightened color, but I think it was the “but not really free” that caught my eye, so I quickly skimmed down to find the explanation of that challange and found it fast at “in other words”.

    Your iPod and music topics also add weight to your readers attention to your concern for licensing and rights, above those of economics.

  12. Perry The Cynic says:

    Bbum said,
    Sun requires you to agree to a Sun Contributor’s Agreement if you want to give your changes back. If you sign said agreement, you are agreeing to assign copyright and ownership to Sun. That is, they are free to take your changes and sell them to whoever they want as a part of custom licensing deals.

    But the GPL doesn’t require me (the maker-of-modifications) to “give my changes back” to anyone in particular. It requires that I make my (source) changes available to anyone who asks (without undue procedural or financial barriers). Sun can require anything they like for the privilege of “taking” my code, but the fact that they didn’t take it (because I refused to sign their paperwork) doesn’t violate my GPL duties. I can put my changes on my website and say “here they are.” That’s all the GPL requires me to do.

    Or did Sun invent a custom, deviant version of the GPL for their Java that imposes extra burdens?

    Cheers
    — perry

  13. bbum says:

    Perry: Correct. The GPL doesn’t require that you send your modifications to sun unless you also otherwise distribute your modifications.

    Which was my [originally somewhat unclear] point. Using the GPL allows Sun to give access to their IP in an “industry standard” fashion while guaranteeing that anyone who builds a product by modifying it must seek a potentially expensive alternative licensing agreement from Sun.

    That is, Sun is using the GPL to create a revenue generating opportunity while simultaneously making their JVM significantly more attractive (compatible) with Linux. Good business move.

    The Sun Contributor’s Agreement is an interesting twist. First, it means that any changes that any contributions integrated into the distributed JVM have ownership assigned to Sun and, therefore (if I’m reading it correctly), Sun has the rights to resell said contributions under whatever license they want.

    Now, you could certainly refuse to sign the SCA and still make all of your changes available to Sun. However, it sounds like Sun will never accept said contributions back into the Officially Sanctioned Chunk of Source that the distribute as the GPL v2 Java Technologies tarball.

    Correct me if I’m wrong: If you want to contribute to Java such that your contributions are a part of the “blessed One True Sun Java”, you have to assign joint ownership of your contributions to Sun. By requiring a signed SCA covering said contributions, Sun gains the power to assign/enforce copyright on your contribution and otherwise do whatever they want with your contribution, including changing the licensing terms of their copy of your contribution (your copy stays in your ownership) and charging money for it.

    So, again, the GPL prevents businesses who have a need to distributed derivations of the Sun code from doing so without either sharing said modifications and ownership of said modifications with Sun or negotiating a license exception with Sun (which would, in term, effectively create a fork of the code).

  14. Helge says:

    1.) If my organization takes the Java source code and modifies it and then uses this modified Java internally, that is, only within my organization, none of the modifications have to be made available to anyone outside the organization.

    2.) Even if my organization needs to distribute the modified Java to customers, they only have to make the sources available. My organization does not have to transfer ownership of said modifications to Sun or anybody else. And of course, because our changes are released under GPL, everyone may now distribute our modified version of Java without even telling Sun. And if Sun releases new versions of Java without our changes, my organization can put them back in and distribute these new Java versions. No license exception or anything like that needed.

    3.) If my organization wants Sun to include the changes in their (Sun’s) Java distribution, then – because naturally, no-one can force Sun to distribute changes made by others – Sun can demand whatever they want to. In this case, they decided to demand ownership of the changes so that they’ll be able to rerelease THEIR distribution of Java under other licenses. If they simply used our code (what they could do under the GPL), they could no longer rerelease the code under other licenses without our permission.

  15. Helge says:

    P.S.: You write:

    “Now, you could certainly refuse to sign the SCA and still make all of your changes available to Sun. However, it sounds like Sun will never accept said contributions back into the Officially Sanctioned Chunk of Source that the distribute as the GPL v2 Java Technologies tarball.”

    If Sun had released Java to the public domain (or under a BSD license), this would be the same thing. Sun could still demand ownership of any contributions or refuse to accept said contributions back into the Officially Sanctioned Chunk of Source that the distribute as the BSD/PD Java Technologies tarball.

  16. Jay Tuley says:

    Helge is right, and Officially Sanctioned Chunk of Source won’t matter much if really awesome changes get released as GPL and not given ownership to sun. If that happens, Java distributions that don’t have the ownership requirement would likely become the preferred standard for linux, by way of taking in the changes from both sun and other sources . One likely candidate to become the preferred linux java will be GNU Classpath, since sun conveniently made it 100% license compatible.

Leave a Reply

Line and paragraph breaks automatic.
XHTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>