Bringing some Harmony to Java and Open Source discussion!
Date: April 9, 2005. Location: Pirenopolis, a small city in the center of Brazil. In a bucolic countryside, hours away from any major urban area, with cold waterfalls and butterflies using our hats as landing pads. Clumsy trying to climb our way trough this beautiful landscape, employees from companies like Sun and IBM; professors of some of Brazil's largest universities; hackers from Kaffe, Javali, Debian; directors of important organizations like Apache, JCP and SouJava.
What would such a bunch of geeks be talking about in this far away land? We had just came out of a large packed two day technical Java and Open Source conference, CafÃ© Brasil, hosted by SouJava in Brazil's capital, Brasilia. So, the walk was a continuation of the many conversations in the previous days. Compatibility. Modularity. Licenses. Architecture. Open Source. Java. We didn't knew it then, but we were using nature's harmony to help shape a great initiative that deserves the name: Harmony. (no, this name was not used there, the one used during that walk need to be saved for future history).
Fast forward to last Friday, May 6th. After a discussions that date back a long time, Apache has decided to launch an initiative to create an open source J2SE implementation. Last weeks Apache Harmony was approved and is now one of Apache's incubator projects. Apache is now officially into the game of creating an open source implementation of one of today's most important developer standard: the J2SE Standard.
Harmony has already turned positive results. Sun VP Graham Hamilton said in his blog that Sun will "probably participate in the project at some level", and that he is "glad to see that they are emphasizing that commitment to compatibility as part of the Harmony project".
The project has also generated lots of controversy, what is also good. The Apache mailing lists are now full of discussion on why not support Classpath and Kaffe instead of creating a new project. Hamilton disdained the project because he is "not entirely sure if the world really needs a second J2SE implementation".
In this, Hamilton is wrong. How important would be J2EE if we had a single application server? For a long time now the Java Community needs another J2SE implementation. At this point we don't even have a proof that the JCP specs are valid! In a recent talk with James Gosling at CafÃ© Brasil, while we discussed Kaffe and Classpath, James commented on how important a clean room implementation was for this very reason. The work of the FSF on the Classpath and GCJ projects, and the teams of Kaffe, JamVM and others, are all validating parts of the spec, what only strengthen our whole community. The fact that these projects exists should be seen as positive and should be supported and cherished by all developers, and not ignored like they have been for so long.
Not only that, but another implementation promotes competition and foster innovation. An open source implementation helps in research, discussions and even in the evolution of the Compatibility Kit. Sun recognizes the value of that, that's why Mustang source code is now available on an ongoing basis, and why Sun proposed recent licensing changes to its implementation, to promote this very things. But this is not enough. Sun's licensing changes get to the edge of the water, but although noticing that the water is cold can be relaxing and beneficial, it don't really give you any of the benefits of swimming. I have already discussed elsewhere other reasons why I think an open source implementation of Java is needed.
I also saw some critics on the mailing lists on the line of Classpath vs. Harmony, and I think they are exaggerated. Classpath is a class library effort, and is the heart of the open source J2SE initiatives. The best examples are probably GCJ and Kaffe, but many others exist. But there's no such thing as a library certification or a compiler certification, it is an all or nothing business. That's why Dalibor Topic, from Kaffe, started with me a few months ago the Roxo project, that had as objective use Kaffe+Classpath as a basis to achieve TCK Compatibility, and as such, be recognizable as a full J2SE implementation. It is still to be seen if Roxo will come off the ground, since we're still in negotiations with the JCP for the TCK access. The fact that Harmony is committed to do it all the way, is important, and benefits everybody.
I see Harmony as different from Classpath, Kaffe and even Roxo. To begin with, there's a licensing issue, and I respect Apache's motivation if this was the only reason. But Harmony wants to go one step further. It proposes to be the place were we can discuss architecture, modularization and a common infrastructure for a modular J2SE implementation. We also need to bring to the table the advances that open source projects like Classpath and Kaffe implemented, and use these knowledge to improve the JCP specifications, the process and the Java technology. As a JCP EC member, Apache is very well positioned to be the focal point of this discussions. My hope is that all the existing efforts around J2SE implementations can discuss and prototype around Harmony on architecture and modularization, and then Apache can propose modifications in the Java standards, bringing back into the JCP all the advances and discussions that today happen outside, in the open source community. This is a huge benefit for all of us in the Java Community at large.
And then, there is the compatibility discussion. Hamilton said that "compatibility is one of the bedrock values of the Java community", and this is clear to most Java developers. Many have even used this argument as a reason for not having an open source implementation of Java at all. But if compatibility is so vital, why those discussions don't include the open source implementations? Every time people ignore the open source implementations, we make the compatibility story weaker, not stronger, so members of those projects should be there, as part of the discussions. They should be invited and their participation promoted and not excluded from the discussion. I've said before that I think there is not enough talks going on between Sun, the JCP and the Open Source implementations, around compatibility. Harmony will help us move forward here too. Apache is committed to compatibility, is a JCP EC member, has strong support and participation of major players on the J2SE space like Sun, IBM, BEA. Harmony will help all of us from the open source community to discuss compatibility and understand how to make it better. Harmony was already even invited to be at JavaOne, what is by itself a change in communication strategy that is larger then it looks...
Because all of that, I welcome Apache's decision on Harmony. I expect that Harmony will be a strong partner to every existing open source J2SE initiative, and also will directly benefit the large Java community. You should support it, as well you should go now download and try the latest version of Kaffe and Classpath on your application. You will be surprised how great the open source implementations are right now.