What has happened in the year since Sun Microsystems released the source code for Java? While end users might be starting to wonder, those most involved in the building of the free Java community describe a thriving community that, after one year, is still working hard to reinvent itself. Free Java projects that existed prior to Sun's announcement on November 13, 2006, are either integrating into the OpenJDK community or continuing to provide alternatives -- but with greater resources in code. Meanwhile, within Sun, Java engineers are overhauling their processes as they learn to interact with a larger community. Problems exist -- specifically, the governance of OpenJDK and the need to replace encumbranced code -- but, although criticisms can be found online if you search, the mood of those involved in Java development seems optimistic.
Things weren't always that way. The community had pressured Sun to release the Java code for several years, and, when Sun finally did, the move was greeted cautiously, especially when only part of the code was released. Some sense of community may have been created in February 2007 at the Free and Open Source Software Developers' European Meeting, when community developers and Sun engineers met for the first time. However, according to Mark Reinhold, the chief engineer for Java at Sun, it wasn't until the JavaOne conference six months later, when most of the rest of the code was released, and that the community began to come together.
The process was eased somewhat, Reinhold says, by the fact that Sun had released source code before, particularly for OpenOffice.org and OpenSolaris. "I learned a lot from the OpenSolaris folks," Reinhold says. He also suggests that, in retrospect, the Java Research License, once vilified as a way for Sun to avoid releasing the Java code entirely, functioned as a dry run for the Sun staff and helped them learn to interact with outsiders.
In the last year, growth in the community has been slight overall, Reinhold says, but adds that, given that the community predated the opening of the code, and given the high level of expertise required to contribute, he wouldn't expect otherwise.
One exception is the Java mobile and embedded community, which was organized on the day of the announcement. Sun technical evangelist Terrence Barr notes that this community has grown in the last year to 500 registered contributors, with many others following developments. "We've captured the imagination of a lot of developers out there," Barr says. "This [kind of activity] is something you can't find any place else in the industry, and we're proud of that."
Meanwhile, those who struggled for years to reverse-engineer a free implementation of Java have had to adjust to a radically different environment. While some have resisted becoming involved with OpenJDK for personal reasons, including their reluctance to sign the Sun Contributor Agreement, others have embraced the changed situation enthusiastically. Dalibor Topic, a lead developer of Kaffe, one of the most advanced free Java implementations, now sits on the Open JDK interim board of governance.
Similarly, far from fading into irrelevance, as some predicted, GNU Classpath has remained a major Java project, providing alternatives for many parts of the code that Sun did not release, as well as some small-footprint alternatives for some parts of Sun's commercial Java code.
In fact, according to Classpath developer Michael Koch, Classpath's long-established community has emerged as one of Sun's strongest allies and advisors. "Sun talked with Classpath people a lot about how to do things in open source," Koch says.
Inside Sun, developers have also struggled to adjust. "A point Simon Phipps [Sun's chief open source officer] often makes," says Reinhold, "is that when you take what has been a proprietary internal engineering team and move it to open development, the right model is not, 'Oh, now we're going to grow a community outside our company and then figure out the right way to interact with them.'
"The right way to think about it is the engineering team, which up until now has been operating in a closed fashion, is the initial community. And the job of expanding the community is that of building bridges to those outside the community who now want to join it, educating people outside the company who need to learn about engineerng standards and processes, and also changing some of the behaviors of the initial engineering team, so that they do cooperate in a more open and transparent manner. It's really a matter of taking what's there and growing it."
Topic agrees. "[Our] problems as such are all basically due to the necessary infrastructure inside Sun having to be ripped out and replaced by something that works for both developers working on JDK at Sun and the community. And that takes a lot of time to be done properly for a project of this size. Just flipping a switch does not work."
One of the outstanding issues in the Java community today is governance. The interim governance board was not signed into being until JavaOne -- six months after the community started to form -- and has spent the time since trying to establish the principles that should be in the community charter. Such work is necessarily slow, with points such as whether contributors should be regarded as individuals or representatives of a particular company or project needing to be thoroughly debated by the board and discussed by the community. Inevitably, the result has been slower progress than many in the community would wish, as well as some criticism of the effectiveness of the interim board.
"For now," Reinhold says, "Sun is still the benevolent dictator of the OpenJDK, but Sun is as hands-off as it makes sense to be." Despite the constitutional uncertainty, new subprojects have launched, and Reinhold says, "We still hope to have a draft constitution by the end of the year."
On the technical side, the main issue remains the missing code that Sun either cannot provide, since it was licensed to third parties, or will not provide because it wishes to protect its copyrighted assets. Barr and Reinhold both estimate that this encumbered code amounts to 4-5% of the total Java code base, but that is still about a quarter million lines of code.
Moreover, although the rest of the code is enough for many purposes, the missing parts are often significant one. According to an interview on the Fedora wiki with Thomas Fitzsimmons, the lead developer of IcedTea, which is a project specifically designed to fill the gaps in functionality, what is missing includes the font rasterizer, the graphics rasterizer, color management, plugin support, and sound.
Although progress has been made in the efforts to replace these pieces, they are currently incomplete. This fact, more than anything else, has led to the accusations of bad faith and broken promises sometimes heard about Java. For all the promises, the fact remains that, after one year, free software still does not have a complete implementation of Java, while Sun continues to combine the code generated by the community with its own proprietary code, and remains the sold provider of a complete Java implementation. After years of waiting, the complaints are perhaps understandable, if still unreasonable.
The next year
Asked if the project is where he thought it would be a year into its existence, Reinhold is philosophical.
"I had never led this kind of effort before, so I didn't have any particular expectations one way or the other. This has been a very dynamic process from the beginning for people at Sun. A lot of it has been about growing organically, figuring out what the next three or five things are that need to be done, and paying attention to the free software world about what we have forgotten and what we cold be doing better. Looking back, I think that things are actually going well."
These sentiments are ones that Java insiders seem largely to share. Classpath developer Mario Torre is joking, of course, when he says that "By next year Java will be completely free, and .Net/C# will be a just a thing of the past," but the optimism observable in the free Java community sometimes seems only relatively more subdued.
"The first year was largely about code," Reinhold says. "The second year will be largely about getting the governance into place and getting Sun's engineers further out into the open." According to Barr, these plans include providing access or alternatives to Sun's internal quality assurance and bug reporting tools to community members.
"Despite some of the naysayers you'll find out in the blogosphere, you'll find that we're making good progress," says Reinhold, sounding pleasantly surprised. "I think that, a year from now, we'll probably be pretty happy about where we are."