Tuesday 12 October 2010

No Java 7, The End Game

The final parts of the Apache Harmony TCK debate began to play out today. There is a lot to look at.

Update:
Follow up posts on the upcoming Java SE 7 vote: Does Oracle have the votes and Pragmatism or Bust.
And details of a compromise proposal.

IBM joins Oracle on OpenJDK

The basic announcement today was that IBM would join with Oracle to work on the OpenJDK. The reciprocal IBM announcement said the same thing.

These press releases are very bland of course, and the far more interesting comments come from the blogs of the key players. In particular, from Bob Sutor, VP of Linux and open source at IBM:

With that preamble, IBM and Oracle have announced that they will work together on the newly reinvigorated OpenJDK project. As described on its website, OpenJDK is “The place to collaborate on an open-source implementation of the Java Platform, Standard Edition, and related projects.” IBM will work with Oracle and the Java community to make OpenJDK the primary high performance open source runtime for Java. IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK. For others who wish to do the same, we’ll work together to make the transition as easy as possible. IBM will still be vigorously involved in other Apache projects.
(My highlights)

The press release is coy. Here, a key IBM executive is being explicit. Their intention is to move all development work from Apache Harmony to OpenJDK. While never solely an IBM project, I would expect this to effectively mean the termination of the Harmony project.

Bob continues:

We think this is the pragmatic choice. It became clear to us that first Sun and then Oracle were never planning to make the important test and certification tests for Java, the Java SE TCK, available to Apache. We disagreed with this choice, but it was not ours to make. So rather than continue to drive Harmony as an unofficial and uncertified Java effort, we decided to shift direction and put our efforts into OpenJDK. Our involvement will not be casual as we plan to hold leadership positions and, with the other members of the community, fully expect to have a strong say in how the project is managed and in which technical direction it goes.
We also expect to see some long needed reforms in the JCP, the Java Community Process, to make it more democratic, transparent, and open. IBM and, indeed Oracle, have been lobbying for such transformations for years and we’re pleased to see them happening now. It’s time. Actually, it’s past time.

(My highlights)

I've spent a lot of time writing up the politics and issues behind the Sun/Apache Harmony TCK dispute. Here Bob clearly outlines the end game of that dispute.

IBM clearly came to the conclusion that there was never, ever going to be a TCK for Apache Harmony, and that they had no means of recourse against Oracle. Its clear that they disagreed with this, but took the pragmatic view that the dispute needed to end, and they had the weaker hand.

That said, it is clear to me that IBM have got some elements that they want in a form of quid pro quo. This is outlined in the "leadership position" and "reforms in the JCP" sections.

It is perhaps not widely known that there was a JCP face to face meeting at the end of last week. It is clear that discussions at that meeting were key to the announcement today.

The blog from Henrik Stahl, Senor Director Product Management Oracle, summarises Oracle's views and links to the JCP:

What happens next?
* Oracle will create JSRs for Java SE 7 and Java SE 8 and submit them to the JCP.
* Development on JDK 7 will continue to make progress, and we expect to publish an updated build schedule shortly. Please expect this to be revised as we move through the standardization process.
* We will continue to work with IBM and others to enhance and improve the JCP. This organization has been hugely successful in pulling together a wide range of organizations and individuals, but it is 15 years old and there is always room for improvement. There were some really good discussions on this within the JCP last week, but you'll have to wait a little bit longer for a more detailed update on that topic :-)

This blog links the announcement today back to the JCP and discussions of its future. As indicated, we are not going to see the results of that meeting for a few weeks.

Other blogs have indicated that IBM is likely to contribute primarily to the class libraries, rather than the JVM (where Oracle and IBM compete). This is obviously a pretty pragmatic, simple and practical way for two large companies to work together without damaging their businesses. Providing that management/leadership can be worked out - which appears to be an improved JCP.

My views

In my opinion, Sun Microsystems behaved atrociously towards Apache Harmony. The promise made was clear:

JSR 270: JavaTM SE 6 Release Contents
...
2006.10.24:
2.18 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.
...
7. Nothing in the licensing terms will prevent open source projects from creating and distributing their own compatible open source implementations of Java SE 6, using standard open source licenses. (Yes, you can create your own open source implementation of Java SE 6 if you really want to. But we're also doing everything we can to make it easy for you to use the original RI sources! See http://jdk6.dev.java.net.)

JSR-270

(My highlights)

That promise (and associated legal agreements) were broken.

Pretending that Sun behaved with the slightest element of decency in this matter is being utterly blind to the facts. They made an executive level choice to shaft the Apache Software Foundation with the explicit knowledge that they would not be sued by a Not-For-Profit.

But lets not reserve that much credit for Oracle, who supported Apache up until the point they bought Sun. And then opposed them. Once again, another game of executive level politics. (Remember that when Oracle sued Google it became impossible for Apache Harmony to be recognised, as doing so would destroy Oracle's case.)

Apache and the JCP

Clearly, IBM have decided that Apache Harmony has served its purpose. There was no way that Oracle was going to be the "nice guy" it once professed to be. There was no way Harmony was ever going to be certified as Java. So IBM made the pragmatic choice.

Given the actions of Oracle, frankly IBM had little choice. What remains to be seen is what deal was done in the JCP as the balancing factor.

Because that deal really matters.

Clearly, there will be no TCK for Apache Harmony, ever. The legal agreements that Apache signed which entitle them to the TCK have been rendered useless.

So, why should Apache stay in the JCP?

This is the Billion Dollar Question. And its answer could terminate projects like Apache Tomcat, Geronimo, MyFaces, OpenEJB and OpenJPA in their current form if Apache decides to leave the JCP.

I hope that the deal cut in the JCP is good. Because for the sake of the industry, it needs to be. The Java community needs Apache, and Apache implemented specifications, and I hope everyone recognises that.

I'd also note that the executive committee in charge of the vote on Java SE 7 has 16 members. IBM and Oracle are only two votes. Oracle needs to have got the support of others to actually get the vote to pass. My guess is that the vote will pass, simply because there is no other game in town.

Summary

Today, IBM took the pragmatic decision to end hostilities over Apache Harmony and move on. This is clearly a good choice for IBM, and probably the best we could hope for Java. It does mean that Apache Harmony is effectively dead.

But frankly, Sun, now Oracle, have got away with murder.

Whether the Apache Software Foundation can stomach staying in the JCP is, I would say, still an open question. Lets hope the deal that was cut is really positive. Because it really is time for the Java industry to move on.


Stephen Colebourne
Apache Software Foundation member, speaking personally
Oracle Java Champion, speaking personally
Not a committer on Harmony or OpenJDK

26 comments:

  1. Not sure why anyone ever programs in a company-controlled language like Java, or C# for that matter. In the end, you'll screwed.

    ReplyDelete
  2. Your light grey font is really hard to read.

    ReplyDelete
  3. Dear Sir,

    When one gets in bed with big commercial interests, one should not be surprised when one wakes up with fleas and other infestations. I had made the observation that Harmony was doomed when it started, and that the Apache Foundation seems to have sold its soul to commercial interests over Java in particular.

    These days Java has become COBOL. It won't go away, of course, too many dollars already spent there. However, the cachet of openness has faded and quite honestly there are more interesting languages that aren't encumbered by the commercial entities that have their hooks in Java. I'd say your time, efforts, and money would be better spent pursuing those projects rather than chasing after Sun's dead dream.

    However, I realize that the love affair with Java, no matter how toxic, will continue to exist, and should you choose to follow that dream, then I wish you good luck in that endeavor.

    ReplyDelete
  4. Oracle has clearly marked Apache Harmony and is going after it's commercial backing -- I'm sure they offered IBM a hell of a carrot to back off Harmony.

    On the other hand, there's nothing pragmatic about IBM's decision to back off Harmony. I'm not sure how lively or comprehensive Mauve is (an open source testsuite for core Java language libraries), but resigning for being an "unofficial" Java implementation is not a dead end for Harmony.

    Harmony is viable w/o the TCK, so it appears to me that IBM's "pragmatic" spin is part of a deal.

    ReplyDelete
  5. Excellent commentary Stephen. It doesn't sound just, but one needs to be practical, and securing the future of java is most important for everyone involved at this point. Very well said.

    ReplyDelete
  6. Forgot to mention : it really is time to move on, and the ASF (and even Google) would do their reputation in the dev community a lot of good by looking forward and working to reform the JCP rather than boycotting it (in case of the ASF alone).

    ReplyDelete
  7. Wow, what a sad bully story. I can think of no other non-profit org which has contributed as much to the success of Java over the years, as Apache has. This is the single most damning evidence that Java might be open source, but it is not free. At this point, I think I'd prefer the reverse model used for C#, not open source but free.

    ReplyDelete
  8. Apache has its reputation at stake. Is it just a puppet to Oracle and IBM, or an independent organization that doesn't take sh*t like this more than once.

    So, in which way can the JCP possibly improve that would make a difference to Apache?

    ReplyDelete
  9. You have to wonder what IBM got out of this. It's clearly a PR victory for Oracle, not to mention the upcoming steamroller that will be the Java SE JSRs. No doubt Apache will vote against them (and be ignored) and it seems that IBM has given up any hope of introducing decent modularity to the Java platform.

    I really doubt that Harmony will survive. The committer list shows only IBM being involved (from a commercial perspective) and the mailing list has been pretty quiet for some time. When IBM pulls the plug, the project will be archived for all its glory days, largely because the Java community never stepped up to help build it out or promote it.

    ReplyDelete
  10. Those are mostly good news for JSE and JEE, but are very bad for JME.

    The only reason that I see for Oracle to oppose Apache Harmony is to continue profiting from JME licenses.

    A closed source JVM is a bad fit for the open source Symbian and Nokia's opinion on this one is clear - they don't provide a JVM with MeeGo. It is very likely that once they have a strong ecosystem of third-party Qt applications they would ditch Java altogether.

    This leaves only Android and Blackberry and Oracle is currently only damaging Java on Android.

    Its unfortunate and short-sighted, because Oracle is trying to extract revenue from a very crowded and competitive market. They are risking to lose the whole market this way. Instead they should try to help Java's adoption on mobile by completely open-sourcing it and finding new ways to make revenue, closer to their core expertise.

    ReplyDelete
  11. I can't help but day-dream: What if Google stepped up to the plate & started contributing to Harmony?

    ReplyDelete
  12. @Kelvin, Google has sucked so many great Java engineers from Sun, they certainly have the resources to maintain Harmony alone. But I wonder if it makes sense... that's a big effort even for Google, and a big talent sink if you consider they would basically replicate stuff (unless they decide to REALLY fork Java). Adding this trouble to the existing legal troubles - Oracle's case may be weak or strong, IANAL, but it can certainly drag for years in courts - and the obvious pragmatic choice for Google is licensing Java SE and replacing Android's guts with OpenJDK too.

    ReplyDelete
  13. @Osvaldo: But unlike OpenJDK, Android's guts were designed specifically for resource-constrained environments and only secondarily to get around IP (i.e. avoiding to explicitly call it Java).

    I hope Google/Harmony decides to fork it, that's what Microsoft did back in the day and it has worked out pretty great for them - far ahead of Java on a number of key language usability features. Time to embrace and extend.

    ReplyDelete
  14. "Not sure why anyone ever programs in a company-controlled language like Java, or C# for that matter. In the end, you'll screwed."

    There are many reasons but I'll start with the main one - Money!

    ReplyDelete
  15. Pragmatism is not necessarily bad. From the common Java developer perspective this is good. It lets everybody move on and especially lets the technology move on. It lasted enough years.

    I really feel for Geir and others who put years of emotion into resolving this but tat the same time I am glad the project may now be helped out of its misery.

    ReplyDelete
  16. I think that IBM's management finally saw that Harmony had no future. TCK-compliant or not, people aren't going to use an alternative implementation at this point. Harmony, like Classpath, was doomed from the start, and IBM should have seen that.

    Yes, Sun was a bit of a bully here. Get used to it...Oracle will be far worse.

    ReplyDelete
  17. who cares for java anyways?

    it's the language of enslaved cubicle drones.

    ReplyDelete
  18. Sun tried open sourcing the Java ME stack with phoneME (see phoneme.dev.java.net) some time back. OpenJDK is open sources as well. There may still be a few minor encumerances but if someone choose to go all IceTea on it some more, then even these encumbrances could be resolved.

    Android could have been developed with one of the phoneME profiles but this also did not occur. I read recently that to be an Android (TM) handset, you have to conform to the Android compatibility suite. Not sure how this is any different from the TCK case.

    There are differences between OpenJDK and phoneME licensing that I'm not evening going to start to understand.

    ReplyDelete
  19. Java is dying and has too many problems to move forward, I really hope that Google dose two things:

    1) creates a fork of the Java Language and fix all the problems in the current Java Language, along with modularity system and a light weight core API (Strings, Collections, File IO, Threads, Net IO, Concurrency) don't include things like database access and GUI in the core libraries rather make those separate API's that can used independently that way the language can be great without the cruft of the standard apis. that can be learned in a couple of weeks, and more specialized api's as modules that users can install as part of their programs rather than core parts of the distribution.

    2) Create A VM along the lines of the CLR multi language from day one and make it kick ass and open source.

    3) Create a light api equivalent of servlets api that understand the web and REST and current paradigms, rely on great libraries in the core to do things rather than sub clasesss ... etc.

    ReplyDelete
  20. Somebody with a profile (you might have enough Stephen) should call Gosling out for his hypocrisy and not addressing Sun's broken promise with the same vigor he addresses Oracle.

    ReplyDelete
  21. I agree that Sun behaves very, very badly here. But so did ASF. Lets not forget that ASF completely log-jammed the JCP, effectively preventing Java from making any progress at all foe years, as a result of this. Much of the delay between Java 6 and Java 7 can be attributed directly to ASF, who behaved like a bunch of irresponsible children through-out.

    ReplyDelete
  22. @ams:

    Number 2) and 3) yes.
    Instead of number 1) let Google adopt Scala. There the problems with Java Language are fixed, and much more.

    ReplyDelete
  23. @charles: "...effectively preventing Java from making any progress at all foe years..."

    Ahhh you don't really believe that do you? The ASF protested the only way they really could, to raise awareness for their case. Before contributing ASF with such powers as being able to delay progress, I think you need to look at Sun's indifference to progress/commitment to compatability, as well as their failed applet 2.0 adventure!

    ReplyDelete
  24. I'm not feeling too sorry for anyone here.

    1. Despite Sun's deathbed conversion to GPL, Java is and always has been a commercial development platform and it will die a slow ugly death like every other.

    2. IMHO, anyone who extends business "good faith" to those players gets what they deserve. It's not like they had a long history of charity and fellowship before suddenly turning evil. Frankly, I'm surprised Google fell for it.

    3. Harmony is under the open source ASF license, right? If the project has value, anyone who needs it can improve it. IBM and/or Oracle may sue over some patents, but they might have done that anyway.

    4. The idea that Apache is going to accept defeat and hold a funeral for it is silly. All that's going to happen is that Google, rather than IBM, is going to supply the next wave of CS majors to work on reimplement the same classes that previous generations of CS majors have been reimplementing since the mid 90s. In many cases it will be the same people.

    ReplyDelete
  25. I think the most pracmatic company here is Google - they didn't wait to see if the field of use issue on the TCK would be solved instead they rebranded java, snatched the java develerops and became hugely successful. IBM is just a late mover here. Just like overprotection of betamax gave competition the upper hand consumers in the mobile space will also find Original Java irrelevant and choose Android instead - it has already happened. It will take Oracle a long time to figure out that patents won't save them when no developers are exited about JavaME, they left for Android long ago.

    ReplyDelete

Please be aware that by commenting you provide consent to associate your selected profile with your comment. Long comments or those with excessive links may be deleted by Blogger (not me!). All spam will be deleted.