Open Source Java: Interview with an Apache Harmony Project Founder
The Origins of Harmony

Maria Winslow
Monday, February 27, 2006 11:11:00 AM
Harmony, an open source Java implementation, is currently in incubator
status at the Apache Software Foundation. The Harmony project mission
is to create a compatible, independent implementation of J2SE 5
under the Apache License v2, and "create a community-developed
modular runtime (VM and class library) architecture to allow
independent implementations to share runtime components, and allow
independent innovation in runtime components."
There is a lot of open source activity currently surrounding Java,
from JBoss and Geronimo (open source application servers) to MyFaces and
Spring (open source web application frameworks), but Java itself
is the last proprietary piece of the puzzle. If Harmony is successful,
will Sun still matter?
I asked Dalibor Topic, one of the project founders, to tell us more
about the history of the project, its importance to the Java
community, and plans for the future.
LinuxPlanet: How did the Harmony project get started?
Dalibor Topic: Not being an Apache Software Foundation member, I can not speak
authoritatively on the early history on Apache's side, so I'll give
you a personal account of how we started to build the bridges that
led to Apache Harmony. I am a co-maintainer of the Kaffe.org
virtual machine, and a developer on the GNU Classpath class
library project, which are both long running sister projects to
provide a full free software Java implementation.
In 2003 I was involved with making sure that some of Apache Software
Foundation's projects like Apache Ant run well on the then current
version of the Kaffe.org virtual machine. That started off the merge
of Kaffe and GNU Classpath projects and resulted in some first
contacts between Kaffe, GNU Classpath and Apache developers.
Kaffe.org started to gradually switch to GNU Classpath for its
class libraries, driven by the needs of the users to run some of the
excellent Apache software on a fully free stack.
Later in 2004, Mark Wielaard from GNU Classpath and me started
looking at ways to improve the quality of GNU Classpath and Kaffe
through automatic regression testing with popular free software
written in Java. That immediately led us to
the Apache Gump project, a continuous integration project that allows
bugs preventing popular software from running to be noticed and
caught as they happen, before they slip into releases. With the
generous help of Leo Simons and Stefano Mazzochi, both Apache
developers, we managed to set up Apache Gump with Kaffe and to set up
a regression testing environment on top of it.
Going from that collaboration effort, strong ties to other Apache
developers were created, most notably to Geir Magnusson Jr. from
Apache Geronimo, and Davanum Srinivas from the Apache Axis project.
Tom Tromey from Free Software Foundation's gcj
project, Bruno Souza from SouJava, Sun's head of the Java
Community Process Onno Kluyt, Geir, Mark and me met at the Red
Hat Free Runtimes summit in Boston in late 2004, to discuss
how to make a free software implementation of Java a reality.
While Sun had no interest in opening up their own implementation,
Onno assured us that Sun Microsystems has removed the legal obstacles
that existed before, which made it impossible for a free software
implementation to be certified as compatible with the proprietary
runtimes. Geir has worked together with Onno before to make sure that
Apache's Geronimo, a free software implementation of J2EE, could
happen, so he was interested in seeing a certified free software J2SE
implementation happen as well, and Bruno has a lot of experience
with the JCP.
In spring 2005, Geir, Bruno and me met again at the CafeBrazil
conference. We discussed how to build a modular Java runtime
and class libraries, similar to the concepts embodied in Apache
Geronimo.
One idea was to have well-defined interfaces for parts of the VM and
the class libraries where other modules can be plugged in
transparently, so companies and independent developers can work
together on some parts, and compete on others. The concept of
"collaborative competition" has worked great for GNU Classpath, which
now covers about 90% of 1.5 APIs, and is used by more than two dozen
runtimes which both compete and collaborate on runtime components
and the class library.
Given Apache Software Foundation's successful dealing with the JCP
and Sun Microsystems in the past, the possibility of such a
project being attractive to both independent developers and companies
developing proprietary Java runtimes, and ASF's good reputation
among Java developers, the ASF's incubator made for a good,
prospective home.
After further discussion within Apache, the Apache Harmony project
was proposed for incubation, accepted, and we started to work on the
legal framework for contributions, merging in first large
contributions from Archie Cobbs, IBM and Intel.
Next: The Impact of Harmony »