Upcoming JCP Final Votes
It may comes as a bit of a surprise given all of the publicity around Java 7, but the final version of Java 7 still hasn’t been approved yet.
Java 7 actually comprises 4 separate JSRs – 1 master JSR and 3 specific ones. They are all up for their Final Approval Ballot, which is due by the 18th July.
JSR 203 NIO.2 – New I/O v2
JSR 292 Supporting Dynamically Typed Languages on the Java Platform
JSR 334 Small Enhancements to the Java Programming Language
and the big one:
JSR 336 Java SE 7 Release Contents
The reason behind the strange-seeming delay in final ratification is that Java is a bit different to other popular programming communities. For example, the .NET community is run by just 1 company – Microsoft – and the development community and other corporate partners have no formal say in how the community is run. If MSFT decides to change the entire development landscape with their next release, then they can. There was all sorts of gnashing of teeth in the developer community when Silverlight was effectively demoted as part of MSFT’s new roadmap.
On the other hand, in some of the open source communities, such as Python or Perl or Ruby, things can be a bit more badly defined. Some communities are more formal than others, but in many cases there is a small group of community members who contribute “most” (in some loosely defined sense) who are responsible for driving change forward in releases. If corporations are contributing a lot to a particular community, then their representatives in the community will generally be well regarded and listened to.
In good open-source communities, this tends to lead to releases which reflect the overall consensus view of the community. However, large communities are not monolithic, and it’s important to remember that you can’t please all of the people all of the time.
The Java world is a little different. Java was always intended to represent a concert of interests – originally very corporate focused, but bringing in prominent individuals and communities as the Java ecosystem has grown. At the heart of this is the Java Community Process (JCP), which is presided over by the Executive Committees (there’s one for SE/EE and one for ME). It is this Executive Committee that the LJC was recently elected to.
The ECs are responsible for approving every official Java standard (which are all expressed as JSRs). This happens by a vote. This a simple process – Yes, Yes with comments, Abstain, No and Fail To Vote are the options, and the results are binding – if 50% or more vote Yes, the JSR passes and becomes an official standard.
This process means that the final votes have to be scheduled against a moving target. The final version of the language specification, and the reference implementation (which for Java SE is OpenJDK) are formal documents. So it isn’t really possible to have a final vote on them until the release is basically ready – because otherwise EC members can’t be certain what they’re voting on.
The final vote being so close to the release date is an artifact of the JCP being a mostly open standards process.
The reason that it can be described as “mostly open” is because it has been, at times, a little bureaucratic. It was born in an era when corporate interests were the only type that were really considered. Open source hadn’t taken off yet. The strong, vibrant technical communities we see didn’t really exist. Even the Internet wasn’t anything like today’s version.
Part of the work that the LJC are currently engaged in on the Executive Committee is a reform of the JCP, to make it faster, more streamlined, and fundamentally more transparent and easier for the ordinary developer to participate in. There’s a new JSR – JSR 348 – which is a first step to reforming the JCP. There will be at least 2 or 3 more needed to get the process fully reformed, but we feel that taking some small, (hopefully) easy steps first is the right way to get some momentum going.
Finally, if you’re interested in the JCP, or in standards work, or in the future direction of the platform – please get in touch. The JCP group within the LJC is always looking for people who are interested, in the views of our members and in the overall thoughts and direction of our community. We try to spend as much time as we can canvassing your opinions, but if you have strong feelings about anything – then let us know. Start a thread on the mailing list, or come and talk to us if you’d rather talk privately. We’re always happy to hear from you, and by doing so, we can ensure that we’re representing you as well as we can.
16/07/2011 @ 11:54 pm
Having watched the resignations of Tim Peierls and Doug Lea from a ringside seat (I sit on the Java ME Executive Committee which meets at the same time as the SE/EE EC in which they sat) I feel this post misrepresents the real issues surrounding the JCP. I also feel that recruitment of members for JSRs is absolutely necessary, but that such an effort must disclose to prospective contributors a realistic assessment of Java’s openness and the impossibility of a change in that status originating from within the JCP.
This assessment must include an accurate explanation of why the JCP EC saw two prominent individual contributors resign last year. They did not resign over issues of bureaucracy but over licensing decisions that render Java only “mostly open”. I witnessed the passionate, heated discourse in the Bonn meeting where this came to a head, and will tell you that the EC meeting minutes come nowhere close to describing the mood that hung heavy in the room those two days.
For me, the problem is one of expectations: Java’s popularity is due in no small part to its representation as the “open platform” in a sea of closed, proprietary, or “mostly” but not completely open platforms. The statements and actions of the past year are evidence that Java is not open like Python or Perl or Ruby but “mostly open” like the platforms that Java’s supporters compared it to and, at times, vilified.
The .NET community mentioned in the original post is talented and vibrant with MVPs and evangelists that developers depend on and whom Microsoft listens to, supports, and makes platform decisions based on their input. Java also has such a community, and Oracle is going out of its way to show that it will support this community as much if not more than before. I have a number of very talented friends who work for both companies and will tell you that you will be in very good hands and that contributing will be a worthwhile endeavor for you.
On the other hand, those expecting a process that does not favor any company would be advised to read the minutes of the October meeting in Bonn and Stephen Colebourne’s assessment of it. These will provide important data points, but should be read with a critical eye. If there is one thing I’ve learned in these three years, it is that if something sounds mostly right but there is a part that doesn’t quite make sense, follow it: it will bring you closer to the truth.
While the need for individual representation in the Java ecosystem is very important, there are also many worthwhile open projects in great need of talented contributors. Someone who makes openness a personal priority must understand the events of the past year to be able to make this decision with eyes wide open.
Bonn minutes:
http://jcp.org/aboutJava/communityprocess/summaries/2010/October2010-public-minutes.html
Colebourne analysis:
http://www.jroller.com/scolebourne/entry/jcp_bonn_meeting_october_2010
Sean Sheedy
Individual Member, Java ME EC