As half the Slashdot surfing world has probably noticed, there is a new proposal for an Apache project to implement a VM and a set of class libaries, and all that under the Apache umbrella.
Ok, as I am involved in both in Kaffe OpenVM and GNU Classpath, which do pretty much the same thing, and my name is on the list of people who said they'd be interested in committing to an apache licensed implementation as well, ... you may be thinking that there is something pretty crazy going on involving huge amounts of free crack straight from the Sun headquarters as the Apache license version 2.0 and the good old GPL version 2 do not mix well. Well, it's not really that hot material for conspiracy theories.
First of all, what's happening? Well, the some people within the Apache Software Foundation, an organisation that's been quite successful at writing, maintaining and encouraging donations of Free Software written in the Java programming language eventually started thinking that a full J2SE implementation might be a good thing to have under Apache's umbrella as well, beside a huge chunk of the stack above it.
I guess working up with Kaffe and GNU Classpath developers to work on making GNU Classpath work well on the latest CVS snapshots of various free software using Apache's Gump as a permanent regression test engine has probably encouraged people to dip into the GNU Classpath runtime community. Hacking on VMs and class libraries is fun, and the GNU Classpath developers are a great bunch to work with (and party).
While I guess that idea has been going on for a while in the Apache community, my impression is that due to the sheer size of the task, people initially expected some donor to show up, and develop code collaboratively, rather than doing it all from scratch. That obviously did not happen in the last 10 years so my impression might be way off. But for all the rumours about three-letter vendors releasing their runtimes as Free Software, the ASF would have seemed as the logical partner to team up with, for all the ASF's good working relations with those vendors.
Meanwhile, something happened. Some of us witnessed the literal rise from runtimes like Kaffe out of ashes in the last two years due to an increasing amount of cooperation of Free Software runtimes around GNU Classpath as an efficient, quickly growing backbone.
So, pretty rapidly we're getting somewhere. Kaffe and Gcj are getting good enough for distributions like Debian, Ubuntu and Fedora to start shipping normal java applications, because increasigly stuff just works. In fact, it is actually starting to work increasingly well.
Beside just the cooperation on the class libraries, tromey and I have talked a bit on an off on GNU Classpath mailing lists and IRC about getting the verifier from gcj merged into Kaffe, as it would seem to make sense to get one verifier right and collectively maitain it, rather than maintaining several ones. Along the same line went some ideas to revive the kaffe gcj bindings now that gcj4 offers binary compatiblity. Which eventually ended up in the general idea of turning a VM into a set of losely coupled components with clearly defined interfaces for people to plug into. Not that it hasn't been done before, I know.
There is not much code for this yet, but the current Kaffe-gcj bindings could eventually serve as one possible blueprint for such interfaces for execution engines, for example. The multiple garbage collector integration work in Kaffe done by Guilhem could serve to find out what GC interfaces one needs, and so on. Contributors to make these things happen right now would be very welcome.
So, during my recent trip to CafeBrasil, I had the opportunity to see a beatiful coutry, with wonderful energetic people, who were very enthousiastic about Free Software. I also had the opportunity to talk a bit about Kaffe, GNU Classpath, gcj, and how it all fits in and works. I believe we have something great going with GNU Classpath, that links so diverse projects as Mono, and JNode, SableVM and JikesRVM.
I also had the opportunity to talk about the VM-component interface ideas with people outside GNU Classpath, in particular with Geir from Apache. A modular VM platform would make it easier to get one's VM going, and that sounded interesting, given ASFs lack of a runtime. I also proposed to Geir adopting IKVM and thus Mono into the Apache tribe, but that's not how the ASF works.
For someone unfamiliar with the consensus, procedure oriented style the ASF goes after doing things, coming from the 'let's get things done the obviously right way' school of thought, the way the ASF works can seem a bit bizarre. There are committees. And roles in them. And something that amounts to a soul searching phase that happens during the consensus build up. That's not a bad thing, but it may confusing to watch.
In this case, some people from the ASF and the FSF have begun talking to make the Apache license GPL compatible, and adressing ASF's concerns regarding the LGPL. Kaffe provided an initial reason for people to get together, as some components from Apache (kerberos) would be interesting missing complement parts to Kaffe, and it would be interesting to try to leverage Apache's Portable Runtime to abstract some of the platform specifics away.
Alas, Kaffe being an independent project, neither FSF nor ASF really had a case at hand to more effectively discuss the things, so by ASF wanting to work on a Classpath runtime, the both organisations have a stronger focus towards the goals. At least I'd hope so. ;)
Ok, now, the way those things work can also be very upsetting. I didn't have a chance to see the announcement before Geir sent it out to the PMC list. So I guess it's easy to imagine my surprise on IRC when questions started flowing in. WTF?? WTFFFF????? Where Is The Free Crack???? sort of questions. And with a good reason.
The way the proposal is stated, it sounds as if Apache will just out of nothing, with people's help churn out a full J2SE 5 environment, all things included, because some of the existing code is not licensed under the Apache license. Having developed a strong Anti-NIH stance hacking on Kaffe, I can with a certain amount of assurance say that implementing j2se 5 takes years of a dedicated team to get the VM somewhat useful and then again another bunch of years to get the class libraries implemented. There is a reason why Kaffe, gcj, essentally everyone in GNU Classpath runtime family who one had their own class library either got rid of it, or merged it with GNU Classpath. The reason is that implementing all of J2SE 5 class libraries on one's own in spite of a liberally licensed FSF implementation is for most uses I can think of pointless.
The same goes for VMs in general, I think. GNU Classpath has more than 20 differnt runtimes using and contributing to it. So the natural choice seems to be to me for Apache to pick one and bless it eventually. That didn't happen because that's not how Apache seems to work: there first needs to be a concensus on who, what and how before such a decision can be made. And given that procedure, no VM could have been picked, so the dicussion proposal says 'make one's own'.
What the hell am I doing there, then, not being an Apache? Well, two things: a) trying to help bring ASF and FSF closer together, and ASF using and contributing to FSF's class libraries would be a pretty good thing to happen no matter which path towards a runtime they chose, and b) the ASF can reach a wide audience among developers programming in the Java programming languge that so far has either not heard, or been sceptical about Free Software runtimes based on GNU Classpath. For whatever reason the ASF seems to evoke much less fear and terror in some circles than the FSF, which may make working with those circles through the ASF easier.