Thursday 28 October 2010

Four viewpoints of war

I wanted to summarise, comment on and respond to four recent blogs - Doug Lea, Henrik Stahl, Bill Burke and Mike Milinkovich.

Doug Lea

Doug Lea's resignation statement is in essence a pretty straightforward and clear piece summarising the problems with the JCP.

I believe that the JCP is no longer a credible specification and standards body, and there is no remaining useful role for an independent advocate for the academic and research community on the EC.

Some have argued that JCP was never a credible standards body. I once disagreed: Sun initially placed in the JSPA and Process documents enough rules to ensure that the JCP could foster innovation, quality, and diversity, independent of that from Sun, with few enough (albeit annoying) exceptions to allow JCP to drive consensual progress more successfully than seen in most standards bodies. However, some of these rules, and violations of rules, have been found to be the source of stalemates and lost technical ground. Rather than fixing rules or ceasing violations, Oracle now promises to simply disregard them. If they indeed act as they have promised, then the JCP can never again become more than an approval body for Oracle-backed initiatives. (Oracle's choice of timing submission of SE release JSRs forced me to decide not to stand for another term based only on those promises, not on the actual actions.) I urge other EC members to consider whether short term "pragmatism" in voting outweighs such consequences.

This is the statement from someone on the inside. Someone whose technical contribution everyone respects. He outlines that the JCP managed well for long enough, but no longer.

The key phrase is "Rather than fixing rules or ceasing violations, Oracle now promises to simply disregard them." This is a reference to Sun, then Oracle, deliberately breaking their legal agreement with Apache.

Not unreasonably, Doug makes an honourable decision to step down in the face of such actions. Instead, he is choosing to just focus on writing code at the OpenJDK instead, a decision we can all understand.

Henrik Stahl

Henrik is one of the key product managers in charge of Java SE. After a long gap without Oracle responding, Henrik replied.

I am sad to hear that he has decided to leave the JCP EC, and can only say that I hope that he will still continue to act as a leader in the community. People like Doug are needed to balance the priorities and interests of Oracle and other big corporations.

Doug and a few other members of the community such as Stephen Colbourne have made some very strong statements regarding the JCP. Needless to say, we don't agree with this bleak description of reality. We believe that the JCP is and remains a good organization for ushering the Java standards forward. We agree with the need of continually improving the JCP, and will work on that together with the EC. We also note that the EC contains a diverse set of companies and individuals, many of which are among Oracle's most fierce competitors. We believe that an open, vigorous and sometimes heated debate between conflicting interests and differing opinions is a necessary part of hammering out standards that serve the best interests of Java users, and we are confident that a vast majority of the EC members agree with us on this.

I agree with much of this funnily enough - people like Doug are needed, the JCP needs improvement, the JCP does contain Oracle's fiercest competitors and different opinions are needed. Where we disagree is whether the JCP remains a viable organisation when Oracle breaks the legal agreement on which the whole organisation is based.

Bill Burke, JBoss

Bill wrote a very interesting piece entited "The JCP is salvagable".

In the wake of Doug Lea leaving the JCP, I just want to say that I think the JCP is salvageable. This idea the JCP is an unworkable entity is plain and utter myth. A myth propagated by those that want to see it fail (i.e. SpringSource) or those that want to create their own, and controlled, specification efforts (IBM), or those that are more interested in doing their own thing than collaborating with others (i.e. Google and SpringSource).

Having read the title, I must admit that I was a little surprised at the content (only summarised above). What is interesting to me is the explicit attacks on other vendors, especially SpringSource (who JBoss have got it in for at the moment).

Perhaps there is an explanation? Could I suggest that JBoss's leading projects are implementations of JSRs in one form or another - from Seam to Hibernate to EJB? Would the end, or even a weakening, of the JCP represents a significant risk to their business? It would certainly require a new rhetoric and marketing speil!

Mike Milinkovich, Eclipse

Mike wrote a longish summary of his view of the current position.

My goodness, this past week has seen a flurry of despair around Java and the JCP. Most of it misguided, in my humble opinion. [snip]

Let me start by saying that like Red Hat’s Bill Burke, I believe that Java and the JCP are doing just fine and are here to stay. Despite some short-term growing pains, they are both in much better shape than they were under Sun’s stewardship over the past couple of years. In fact, I would go so far as to say that in terms of real, tangible progress, this past month has been the best for Java in the past three years.

Well thats positive! "Java and the JCP are doing just fine"!. The "best for Java in the past three years"! We have to read on to understand why he feels like this.

“The Great War of Java”: Stephen Colebourne’s most recent post is, well, just plain wrong. I totally understand the frustration and disappointment of the Apache community who have done so much for Java over the past decade or more. But the fact is that the “Great War of Java” didn’t happen, and it well could have. The announcement that IBM had made peace with Oracle and was joining OpenJDK meant that the fork that so many had predicted is not going to happen. I cannot say this strongly enough: characterizing the current status quo as a war is just wrong. What we may have on our hands is a failure to communicate, a major disappointment for Apache and/or a time of significant change in Java’s governance. But in my opinion the conflict that truly could have harmed Java has been averted.

Firstly, I want to emphasise that I see this issue as broader than the "Apache community" (of which I personally make precious few contributions to these days). And I'd point out that until a few days ago, Eclipse saw it as a broader issue worth fighting for too.

My reading of Mike's words is that he saw my "Great War of Java" post as solely being about the JCP. And re-reading, its possible to see why that might be.

But the "Great War" I refer to is the perfect storm of problems surrounding Java right now. The announcements from Apple and Nokia simply backing up the JCP disarray. This is absolutely a transformational time for Java.

War is generally about territory, and Java is losing territory left, right and centre. And I'm referring to mindshare as much as technology platforms.

Whereas Mike is referring to a war that didn't happen - the forced breakup of the JCP and a new fork (with IBM playing a key role no doubt). Clearly, Mike believes that scenario would have truly harmed Java.

Well, I hate to say it, but the fork happened a while ago - Android. And it remains by far the most exciting and interesting part of the broader Java ecosystem, and the only place where consumer oriented Java on the "desktop" remains relevant.

Doug Lea’s departure from the JCP EC: Doug has been a very important voice on the JCP Executive Committee since long before we got there. He understands the process deeply and cares about how players other than the large corporations can participate, contribute and innovate within the Java ecosystem. He will be missed. However, I do think that his reasons for resigning were based on some incorrect assumptions.

I believe that many people are confusing the JCP’s vendor neutrality with its effectiveness as a specifications organization. The JCP has never and will never be a vendor-neutral organization (a la Apache and Eclipse), and anyone who thought it so was fooling themselves. But it has been effective, and I believe that it will be effective again. That’s why if re-elected, Eclipse will be voting for the Java 7 JSR. We need to get back to actually getting platform specs through the process if Java is going to advance.

As a truly vendor-neutral organization, we at Eclipse understand the value that brings to the community and the commercial ecosystem. Unfortunately, I believe that OpenJDK’s governance will, in the end, be no more vendor-neutral than the JCP’s. It simply cannot be. Oracle has a responsibility to its commercial Java licensors to deliver them intellectual property under commercial terms and conditions, which is why contributors need to sign the CLA. By definition, if Oracle needs to own the IP for Java, including the IP in OpenJDK, the governance model will always require some sort of special role for Oracle. I wish it could be otherwise, but that is how I see the situation.

But the key point is that in neither case (JCP or OpenJDK) does the lack of vendor neutrality mean that the organizations are ineffective. Both have already demonstrated success in pulling together many competing interests and getting innovative work completed. So the lack of vendor neutrality is not fatal. In fact, I am optimistic that having both an open standards and an open source organization working in collaboration will help accelerate innovation in the Java platform.

On "the JCP has never and will never be a vendor-neutral organization", I both agree and disagree. EE and ME specifications have no need to be controlled by Oracle. Other standards groups do not have such a single vendor dominance, and that neutrality is beneficial. Whereas, in the core, Oracle truly does put in all the funds and guides the platform. Having a single vendor control, with external input, is probably a better model. Just like Linux. Therefore, on "I believe that OpenJDK’s governance will, in the end, be no more vendor-neutral than the JCP’s", I agree.

I agree that the JCP has been effective. But I see no way to make it effective again without radical change. Right now, I'm far from alone in trusting a so-called proprietary API from Spring or Google than a JSR API.

But the kicker is at the end. "In fact, I am optimistic that having both an open standards and an open source organization working in collaboration will help accelerate innovation in the Java platform."

How can it be an "open standard" if you can't implement it?

This is the key issue. Despite legal agreements and public promises, it is impossible to implement a supposedly open standard. Mike, how can you justify that?

I've only been able to come up with one solution - the #splitjcp compromise proposal. By clearly removing those parts that are blatently not open standards from the JCP, it enables everyone to move on and start afresh with those standards that are.

Legal agreements

Sun, now Oracle have broken their word, their public promises and their signed legal agreements.

I remain stunned that anyone would want to do business with Oracle without some change in the rules.

After all, if your boss gave you their word to you to pay you salary $x, made a public pledge to the rest of their team that they had hired you, and signed a written contract with you stating the salary, wouldn't you feel extremely aggrieved if three years later you'd never been paid despite asking many times? And what if your boss then turned around and told you that you never will be paid? Would you ever trust a word your boss said ever again?

By the way, have you noticed that no-one is trying to claim that the legal agreements have not been broken?

Summary

Ultimately, the big companies and organisations are closing rank around Oracle. They've decided that it doesn't matter that the legal agreements they've signed aren't worth the paper they're written on or that Oracle can't be trusted. (Or perhaps they naively believe that Oracle only breaks legal agreements with Not-For-Profits.)

But, many of us in the wider community know that what has happened here stinks and have no reason whatsoever to trust a single word from Oracle.


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

Monday 25 October 2010

Babylon 5 & the Great War of Java

It was the dawn of the third age of Java, ten years after the Sun/Microsoft war.
The Java Community Process was a dream given form.
Its goal: to prevent another war by creating a place where technologists and vendors could work out their differences peacefully.
It's a port of call, home away from home for diplomats, managers, entrepreneurs, and developers.
Technologists and vendors wrapped in two million, five hundred thousand lines of spinning legal document, all alone in the night.
It can be a dangerous place, but it's our last best hope for peace.
This is the story of the last of the JCP's chances.
The year is 2009. The name of the place is the Java Community Process.
-----
The Java Community Process was our last, best hope for peace.
A self-contained world 333 JSRs long, located in neutral territory.
A place of commerce and diplomacy for ten million developers and managers.
A shining beacon in the community, all alone in the night.
It was the dawn of the Third Age of Java, the year the Great War came upon us all.
This is the story of the last of the JCP's chances.
The year is 2010. The name of the place is the Java Community Process.
-----
The Java Community Process was our last, best hope for peace. It failed.
But in the year of the Great War, it evolved into something greater: our last, best hope for victory.
The year is 2011. The place is now the Java Community Process.

With apolgies to Babylon 5.

Babylon 5 and the Great War of Java

I'm re-watching the amazing Babylon 5 TV series at the moment on DVD. I was struck by how the voiceover at the start of each series could be adapted to the current situation. But also how one of the key themes plays out in two key questions - "Who are you?" and "What do you Want?"

The Java Community Process truly was a great hope for peace. A neutral place where everyone from developers to vendors could work together to produce specifications, reference implementations and tests to drive the success of Java.

But the JCP has always been flawed.

The many, many lines of spinning legal agreement have tied up the JCP on more than one occasion. Initially, for example, it wasn't possible to implement any specification in open source. The Apache Software Foundation had to fight for that right in 2002. A right that was then taken away by Sun in the Apache Harmony dispute. And a right that could not be won by the combined forces of every other particpant except the ruler (Sun then Oracle).

And now, in the past few months we are seeing the unravelling of the JCP turning into the wider "Great War of Java".

In a short period of time, Java has gone from the platform designed to unify the entire industry to a highly politicised punch bag.

Java on the desktop now looks pretty meaningless if Apple wants nothing to do with it. (I subscribe to the view that there will be some desktop machines from Apple before too long that will not permit access via any means other than the App Store.) Of course, that could well make Java FX DOA.

Whichever way you look, Java is being squeezed - even by new programming languages on the JVM bypassing much of the Java platform.

Which leads me back to the questions posed in Bablyon 5:

Who are You? What do you Want?

These are questions every single member of the Java Community should be asking themselves right now.

Do we care if Oracle chooses to assert control and break legal agreements?
Do we care if the poison of the last few years from this dispute may have been the cause for the recent moves away from Java?
Do we want to save Java on the desktop? And on the Mac?
What do we "as a community" really want?
Can that question ever be answered when the community is just a diverse group of individuals?
Would an independent JCP really make much difference now?
Can things still get worse?

On the last point, I certainly think they can, if Apache leaves the JCP and ends the rights of Tomcat, Geronimo, OpenJPA, OpenEJB, MyFaces and many more to implement JSRs. Ironically, Doug Leas principled stand makes it harder for Apache to choose a compromise position.

I ended my Babylon 5 word-play above by striking out the "Process", and leaving it as just the "Java Community". And I am still a believer that the community can be a tremendous asset when treated well. But, perhaps as Oracle have found recently, the community knows how to bite back when mistreated.

Bablylon 5 reaches its principle climax in the fourth series:

It was the year of fire.
The year of destruction.
The year we took back what was ours.
It was the year of rebirth.
The year of great sadness.
The year of pain.
And a year of joy.
It was a new age.
It was the end of history.
It was the year everything changed.

Could now be the start of the year of fire and destruction - the year of rebirth?

Summary

We all have to look to ourselves - developers, community members, vendors, Oracle - and decide "Who we Are" and "What we Want". And then find a way to bring all the different answers to those questions together for a common purpose.

Because it really is "The dawn of the third age of Java". Its arriving much faster than we expected. And it looks very much like decline into COBOL from where I'm standing.

There are still a few opportunities to prevent that decline and turn it into renewal. Every decision made now matters.


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

Thursday 21 October 2010

JCP election: My choices

For the record, I just cast my JCP election votes.

I choose to publish my choices in the hope that the information may be of value to others. If you are a JCP voter, please consider your choices carefully!

I am voting to ratify Apache and Red Hat.
This is because both make good, positive contributions to the Java community and are worthy of a place on the EC.

I am voting against ratification of Hologic.
This is because there are many companies and organisations far more representative of the Java community than Hologic, and because they are too close to Oracle for my taste.

For the elected seats I am choosing Google and Bob Lee.
This is a hard choice, because Azul and Eclipse are also solid contributors to the community. However, for the JCP not to contain Google (and Josh Bloch) would be pretty crazy, and I strongly believe that an individual is required to replace Doug Lea (in order to balance the corporate interests).

I do note that Google, Azul or Eclipse would all have been valid choices for the ratified seat. I hope that if Hologic is rejected, that one of these three is chosen in their place. (This is no disrespect to Liferay, simply that these three are bigger contributers in my view.)

For Java ME, I know relatively little of the candidates. I have chosen to ratify the 3 nominated seats, and have chosen the 2 others based on their statements and existing contributions - Stefano Andreani and Aplix.

There are at least 1500 voters (pdf, page 3), of whom 77% are individuals. It will be interesting to see what the turnout is - last time just 245 of 1142 voters actually voted, so every vote really does count! For the record, only those that were JCP members on October 14th can vote - so you can't join now and then vote!

Finally, I believe that no vote choice here will affect the upcoming Java SE 7 vote, as I now count Oracle as having enough votes by far. This is sad, as it means Sun and Oracle have broken legal agreements and got away with it. The reaction of Apache to the situation remains to be seen.

Summary

These are my votes, but I encourage every registered voter to inform themselves and then vote.


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

Wednesday 20 October 2010

Stacking the JCP election

The JCP elections are vital to the future of Java. Yet I believe there is evidence of Oracle manipulation.

JCP elections 2010

The elections are to the Executive Committee of the JCP, the body that is tasked with deciding on standards in the Java world. There are votes to both the ME and the SE (including EE) committees. I'll be focussing exclusively on the SE-EE vote.

Votes are held every year to the JCP Executive Committee. Elected members have terms that run for 3 years, offset so that 5 members are up for election each year.

There are two kinds of election. This year, 3 seats are chosen by Oracle - called the ratified seats. The remaining 2 seats, called the elected seats, are open to any member of the JCP, including individuals.

Ratified seats

Oracle have nominated the following to the ratified seats:

  • Apache Software Foundation
  • Red Hat
  • Hologic

The first two (Apache and Red Hat) are simply being re-nominated for the ratified seats. However, Hologic replaces the well known concurrency expert Doug Lea in the third spot. (3 years ago, Nortel was the third ratified seat, however they dropped out of the JCP. Doug Lea was ratified 1 year ago on a special 1 year term)

The first point is the departure of Doug Lea. This could be a deliberate "removal" on the part of Oracle, or it could be a desire by Doug Lea to exit the politics of the JCP. There is no evidence on this one way or another - my gut tells me it was Doug Lea's choice.

The second point is that I, and many others have no idea who Holgic is and why they are a good choice to represent the Java community (the 'C' in JCP!).

A simple Google search reveals that Hologic and Oracle are best buddies.

Holgic and Oracle have put out joint press releases and videos about their work together. Hologic have even won an awards (nominated by Oracle) for their integration of Oracle products. This is a clear sign in corporate world of a close working relationship, and often of a discount or special terms given to get the good publicity. Hologic's statement on the nomination is:

Hologic is looking forward to the opportunity to serve on the JCP. As Hologic has grown as a company, it has been continuously reminded just how important technology, and specifically Java-based technologies, is to the company?s success. What was once a fragmented IT department and isolated business units, Hologic has now consolidated all of its varied systems into a core set of Java-based technologies. Manufacturing, sales, marketing, finance, operations, and IT now all integrate though systems built on or extended from Java platforms. Corporate information and marketing are spread within and outside the company through Java-based Web applications.
Scott Shapiro, a certified Java developer, has worked for Hologic, Inc. for three years and as a software developer and architect for twelve years. At Hologic, Scott works with enterprise and custom systems built on Java platforms while designing and building interfaces and extensions to these systems through Web services and applications. Scott has worked to streamline data and business processes through integration among Oracle, Seibel, Websphere, and custom applications. Oracle E-Business Suite serves as Hologic?s ERP, providing core business functionality and organizational data. Scott?s application team builds the necessary integration points between Oracle and all other Hologic systems. Scott recognizes the underlying power and flexibility of Java in Hologic?s core technologies.
(My highlights)

So, Hologic uses Oracle E-Business suite (ERP) extensively. The reference to "consolidated all of its varied system" on "systems built on or extended from Java platforms" would appear to simply be a reference to the ERP suite.

Do Holigic deserve to decide the future of Java because they use an Oracle product?

Perhaps I'm being unkind. Perhaps they have a large investment in Java code. But there is clear evidence that they build everything around the Oracle E-Business suite product. That does not sound to me like an innovative or representative member of the Java community. (Surely, Google, Eclipse or Azul would have been more representative choices for the ratified seat?)

But remember that ratified seats are still voted on by JCP members!!!

To be elected to the JCP Executive Committee, Hologic must receive approval of 50% of the votes cast. (If Hologic do not get 50% of the vote, then Oracle nominates another JCP member, with another vote.)

I am regrettably forced to encourage JCP members with a vote to vote against Hologic.

For the record, I would argue that Apache and Red Hat make good, positive and public contributions to the Java community and are worthy of election to a ratified seat. (Although I do believe that the "ratified seat" concept is highly dubious in the first place.) As previously stated, I believe that Red Hat will vote for Java SE 7 and against the position of Apache (that Sun/Oracle has broken legal agreements).

Elected seats

The following are candiates for the elected seats:

  • Azul (company)
  • Eclipse (organisation)
  • Google (company)
  • Liferay (company)
  • Bob Lee (individual)
  • Fabio Haider (individual)
  • Sam Pullara (individual)

With 7 candidates for 2 positions, it will be an interesting vote! The winners of the election 3 years ago were Google (32.7%) and Eclipse (29.5%).

Azul are well known for their work on high performance Java. They are currently moving from hardware to software based solutions and intend to contribute to the OpenJDK. Azul is a licensee of Java SE, so pays Oracle, like IBM, to release their own compatible version of Java SE. They are clearly an innovator in the Java community. The reference to OpenJDK in their position statement is, to me, a sign that they support the strategy of a core OpenJDK based Java from a single provider and are likely to vote for Java SE 7.

Eclipse are the well-known group founded around the Eclipse IDE. Their position statement indicates their view that governance of the JCP is broken, that Java has lost momentum and that OSGI is important. They were founded by IBM, who remains a key supporter. They are clearly an innovator in the Java community. They have indicated their position on the Java SE 7 and Java SE 8 votes clearly, and will vote for Java SE 7.

Google are the well-known internet company. They are currently on the receiving end of a lawsuit from Oracle. They are clearly an innovator in the Java community. Previously they have strongly supported Apache, yet they are still (despite everything) strong Java supporters. It is unclear how they will vote on Java SE 7, however corporately they are currently not motivated to assist Oracle.

Liferay produce a leading open source Java based portal. Their focus is on Java EE in the areas of interoperability, open source integration and web UI simplification. They are clearly an innovator in the Java EE community, however they say nothing in the statement about SE. It is unclear how they will vote on Java SE 7.

Bob Lee is well known - "crazybob" - and a frequent conference speaker. He used to work at Google, and is now Lead Engineer at Square. His JCP contributions are legendary, as the spec lead for the fastest ever JSR on dependency injection.

Fabio Haider is an industry professional of 18 years experience. Beyond his statement, I haven't found any more information.

Sam Pullara is CTO at Bagcheck, and former Chief Technologist at Yahoo. His statement indicates that he is on the expert group of several JSRs, and Google returns numerous contributions to open source. However, that isn't the whole story...

This is the LinkedIn profile of Sam Pullara.
This is the LinkedIn profile of Adam Messinger - VP development Oracle, responsible for Java SE.
If you look at their history, Sam and Adam founded Gauntlet Systems Corporation, a startup in continuous integration. They are also connected via Adam's very select choice of twitter followers (Adam approves his twitter followers, and Sam is one of just 22).

Sam Pullara looks to be extremely close to Adam Messinger from Oracle, such that we must question his independence.

Obviously, it is unfair to flat out state that Sam is in the vote by Adam/Oracle's request. However, frankly it gives all the appearance of it.

Update 18:57 UTC:
In a comment, Sam Pullara has stated "I can state categorically that I did not speak to Adam about the JCP elections and that I added myself to the list because I love Java and have been doing JSR work for 10 years. I can assure everyone that I am only interested in seeing Java be successful". Judged on his own merits, Sam is a good candidate for the JCP, however in this most political of elections I stand by my decision to look beyond the headline, and I'm afraid that I personally will not be voting for him. I have struck out my recommendation to others not to vote for Sam however - readers must make their own choice on this one (I'm sticking by my encouragement to vote against Hologic).

I am regrettably forced to encourage JCP members with a vote to not vote for Sam Pullara.

I think I know who I will be voting for in the election, but I'm not publishing my choices at this point. I am willing to say that I believe that a new individual should be elected to replace Doug Lea, to keep the balance between companies and individuals. As such, I suspect bright readers will be able to work out my choices!

Summary

Politics is sometimes a dirty game. And the inclusion of Hologic and Sam Pullara doesn't give a great appearance. As such, I choose to vote against them, and encourage others to do the same.

Maybe one day, there will be a way to represent the Java community in a fair and respectable manner. I don't think that day was today.


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

Friday 15 October 2010

Split JCP: a compromise proposal

I'd like to propose a compromise to the Executive Committee of the Java Community Process.

JCP compromise proposal

Firstly, a reminder. I do not speak on behalf of the Apache Software Foundation (or anybody else). This proposal is not endorsed by the ASF, nor do I have any indication that they would accept it. However, were Oracle and other members agree, I would recommend it to the ASF in my capacity as a member.

The compromise is around precisely what the JCP is, and what participants care about.

1) The JCP is a department of Oracle. It is not an independent body, and all legal agreements are between the member and Oracle (previously Sun). The dispute has caused grave mistrust in all other parties to the JCP, as Oracle has been shown to have all the power.

2) The JSRs, expert groups and development of specifications in Java EE, those built on Java ME and other non-core areas are functioning pretty well and still produce viable specifications. I call these the "ecosystem" specifications. Very simply, the JCP acts as neutral territory where multiple competing parties can lay down their weapons, talk, resolve conflict and produce results that benefit them all.

3) The JCP also hosts a few JSRs that are targetted at the very core of the platform. This includes the Java SE, ME and JVM specifications. I call these the "core" specifications. In each of these, Sun (now Oracle) has always and will always take the lead. They put in the vast majority of the money and act as the final decision maker. Oracle have made it clear that for these key areas they intend to retain that absolute power, while still listening to the community for advice and guidance.

4) The difference between the JSRs and approach in the core and those in the ecosytem is clear and absolute. Within the core everything is controlled and the community has only ever made requests of the company in power. Within the ecosystem neutrality and trust is vital, and here the community and vendors have done fantastic work.

5) The entire Apache Harmony dispute arises because the JCP places the management of the core and the ecosystem in one organisation and tries to apply the same rules. Both Sun and Oracle have refused Apache the TCK for Harmony because doing so crosses the red line between ecosystem and core. The problem is that the red line isn't explicit. (There are a whole heap of complexities and who said what to whom on top, but at its heart the red line is the issue.)

6) Therefore, I propose that the JCP should be divided in two.

Firstly, Oracle would publicly state that it is removing the core JSRs from the JCP and bring them in house. It would setup a separate formal body to provide advice and guidance on the core, but all participants would understand the limitations to their contributions. Clearly, the Java SE work would be focussed around OpenJDK as in Oracle's current plans. As part of this, there would be no vote on Java SE 7, as it would no longer be a JSR controlled by the JCP.

Secondly, Oracle would set the ecosystem part of the JCP free as a fully independent standards body organisation funded by all its members. The new organisation would be expected to produce clear membership rules including the ownership and management of IP.

A message for Oracle

Forcing though a Java SE 7 vote in the existing JCP doesn't solve your problems with the other vendors or the community. The real issue is the pretence that the JCP members have any control over the core specifications. Pretending that they do is a fraud, Apache Harmony exposed that red line and its time to break the JCP in two to solve it.

I strongly believe that you (Oracle) need the neutral ecosystem part of the JCP. It is in your interest to maintain and enhance that (as those ecosystem specifications are where you really get value). But an ecosystem standards body relies on trust with other vendors and community members. That trust is very low right now, and going to be non-existent if you force through the Java SE 7 vote. Just because you can win the vote doesn't mean that it is in your interests to do so. I'll also note that there is nothing stopping ecosystem participants creating their own standards body and excluding Oracle if they conclude that the loss of trust is fatal.

I believe that this compromise is very much in your (Oracle's) interests as it provides enough clean fresh air to get everything moving again while retaining control in the area you really care about.

A message for the Apache Software Foundation

This is a compromise and it means accepting that Apache Harmony cannot be an independent Java SE implementation. But pretending that there is any way for it ever to be one is at this point seems delusional. The gain on offer in the compromise should be clear - a clean functioning, independent body for Java ecosystem standards with sensible membership rules and IP management. This is a huge win compared to the current position.

I strongly believe that you (Apache) must not take that position that it requires Java SE to be an open specification in order to build useful code in the wider ecosystem. The C#/.NET platform is tightly controlled by a single vendor yet it can be used. The hardware isn't exactly open either. One might even argue that Linux is a similar very tightly controlled core with an open and thriving ecosystem on top. Its time to recognise that the core is frequently heavily controlled. And for good reason.

I believe that this compromise is very much in your (Apache's) interests as it finally clears up the rules and red lines in the world of Java.

A message for other EC members

I strongly believe that this compromise serves the needs of all parties better than being strong-armed. If you think it does, then ask Oracle and Apache to consider it before the Java SE 7 vote. After the vote will be too late.

Summary

The proposal is to split the JCP in two to finally be honest with everyone (vendors and community) as to the core that Oracle controls and the ecosystem standards body that everyone shares.

If you're a community member or vendor and like this compromise proposal please retweet or blog using #splitjcp.


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

Thursday 14 October 2010

JCP - Pragmatism or Bust

My recent post on the Java SE 7 JCP vote (following the IBM-Oracle announcement received a reply from Eclipse. It forces us to consider what course of action is right for Java.

Pragmatism or Bust

Mike Milinkovich graciously responded to yesterday's blog outlining why Eclipse will support Java SE 7. I urge anyone who hasn't read it to do so.

Mike outlines his view of how the dispute could end:

There are only three ways that this intractable dispute can be resolved:

1. Oracle caves. Well, we all know that’s not going to happen. Sun did not cave for three years, and Oracle has made it abundantly clear that they’re not going to. If IBM couldn’t find some leverage, I don’t see how the open source communities will.

2. Apache sues. Even if Apache had the resources, I am guessing their legal counsel would advise against it. Lawsuits are legal warfare, with all of the potential for unintended consequences and collateral damage that statement implies.

3. We move on. Realistically, this is the only option left. As much as continuing the fight appeals to the heart I cannot see how this dispute will ever reach closure. Although I certainly understand the natural inclination to want to continue the struggle against the slings and arrows of corporate behaviour, I just honestly believe that at this point it is beyond reasonableness to do so.

Given these three options, Eclipse has chosen the pragmatic option, and plans to vote for Java SE 7 to move on.

I fully expect all other JCP EC voters that vote Yes to follow similar logic. As Sacha Labourey said - pragmatic, pragmatic, pragmatic.

I'd like to offer up a fourth option however.

Were the JCP Executive Committee to vote down Java SE 7, I fully expect that Oracle would terminate the JCP. It would cease to exist.

Option 4 is therefore "slash and burn". Force Oracle to terminate the JCP and start anew.

The upside is that the old fixed positions in the JCP could be completely set aside - a fresh start. It also has the major upside of some kind of "punishment" for the crimes of Sun/Oracle - justice seen to be done.

The downside is that there is no guarantee that any kind of body would be introduced to replace the JCP. There might be a simple IBM-Oracle meeting that decides everything. Yet in a way, isn't that what just happened?

Summary

Each JCP Executive Committee voter, and up to a point, each JCP member in the forthcoming elections for Executive Committee membership, has a choice. And its a stark one:

Option A: Be pragmatic. Vote Yes on the Java SE 7 JSR. Work to improve the JCP later. Tell Apache "sorry, but we can't help you any more". Deal with the fact that Oracle will happily break its word whenever it sees fit.

Option B: End the JCP. Vote No on the Java SE 7 JSR. Hope that slash and burn yields a better result from Oracle. Get justice for the wrong done to Apache, but of course no IP or TCK for Apache Harmony. Deal with the fact that the community may have even less input into Java.

Which would you choose? Frankly, neither option really appeals to me.


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

Wednesday 13 October 2010

Does Oracle have enough votes?

Yesterday in my post I made an assumption that the Java SE 7 JCP vote would now pass. But perhaps it isn't so obvious?

Votes on the JCP

The Java SE 7 decision is a vote in the JCP. That means that Oracle needs to win the vote.

Until now, every member of the JCP other than Oracle has been united in opposing Oracle's position. IBM broke that yesterday. So, lets see how the votes stack up on the committee...

Voting with Oracle (my assumptions):

  • IBM - thats the deal announced yesterday
  • HP - long term Oracle partner
  • Fujitsu - always assumed to be a voting partner of Sun, now Oracle
  • RedHat - see the report here
  • Eclipse - see the report here (and a reminder of who pays the bills at Eclipse) Update, 14 Oct: This vote is confirmed.

Voting with Apache (my assumptions):

  • Google - unless they're about to capitulate in the battle with Oracle

Oracle leads 6 to 2, with 8 votes to count.

There are three independent members of the JCP - Doug Lea, Werner Keil and Tim Pierls. I'd like to see these individuals state their position publicly. I'd like to hope that they would vote with Apache, although I do wonder where Doug Lea's research grant comes from.

Intel have long been at the forefront of the battle to change the JCP. They might stick by their guns and vote with Apache. They might not.

SAP were clear on their position during the takover. So, we'd expect them to vote with Apache. But murky corporate politics may roam here - are SAP and Oracle partners or very competitive?

Credit Suisse are an unknown quantity. In the past they have supported all the resolutions on Apache's side. Will pressure be brought to bear now?

VMWare (SpringSource) might well have supported Apache while still just SpringSource. But as VMWare, there is a much bigger company involved. I'd like to think they'd prefer the Apache view, but who knows?

Update, 14 Oct: I managed to miss Ericsson somehow. I've no real information on their stance, other than having supported Apache previously. They would benefit from a complete unemcumbered Apache Harmony which they could use in their phones.

And the vote count is...

Basically, its impossible to determine, but it should be clear that pressure will be brought to bear by Oracle to get the votes it needs. With 6 relatively safe votes, you might think that only 2 more are needed with 16 voters. Except the rules say otherwise....

A.5 9. EC ballots to approve UJSRs for new Platform Edition Specifications or JSRs that propose changes to the Java language, are approved if (a) at least a two-thirds majority of the votes cast are "yes" votes, (b) a minimum of 5 "yes" votes are cast, and (c) Sun casts one of the "yes" votes. Ballots are otherwise rejected.
(My highlights)

So, Oracle needs a 2/3 majority of the votes cast for a "UJSR" (Umbrella JSR for a Platform, such as Java SE).

In other words, 6 votes against, or 5 votes and 2 abstentions would block Oracle.

I've listed 2 definite No, 2 or 3 likely and 4 unknowns. So, I'd say the vote could be close if key participants hold their nerve.

Eclipse and the JCP elections

Before the JCP vote on Java SE 7, there is a JCP election. If I've understood the rules correctly, both Google and Eclipse are up for re-election.

What if the JCP members chose not to re-elect Eclipse based on their sudden change of heart on this subject? (Which feels surprising because Eclipse is perceived like another open source Apache, which it isn't).

I wonder, given how close the vote might be, if replacing Eclipse with someone willing to vote No might be the key to ending the farce of the current JCP by the right means (voting).

To be clear - if the Java SE 7 vote is not Yes, Oracle will disband the JCP, that much should be obvious. Its a high stakes game, but has Oracle won yet?

Summary

Oracle are confident that they can get the vote passed. But can they?

Perhaps JCP members should unelect Eclipse, and elect someone who will stand up to Oracle in the upcoming vote? And if you're not a JCP member, maybe you should join today to get your vote!


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

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