Code for Thought
It was FOSDEM this weekend, and once again the Free Java hackers (now including many Sun employees) met up in Brussels to discuss the past, the present and the future. We had an extremely good turnout, better than last year (the only other year I’ve attended so far) and with nearly all the Free Java people there (notably MIA were Tom Tromey and Michael Koch). Tom Marble did a great job of encouraging everyone to give a talk, so, unlike last year, I think we heard from everyone working in the Free Java space. It certainly left me with plenty to think about.
Just before leaving for FOSDEM, I got 0.97 out of the door (or tried to — there were problems doing the upload again, but this should be sorted now for next time). In hindsight, this was a bad idea as I was then very tired for most of the trip and, in conjunction with having a bit of a cold, this meant I didn’t enjoy the weekend as much as I’d have liked. Anyway, the main point about the release was that it was supposed to represent that GNU Classpath was still around, even if not going strong, and not merely a dead carcass for people to pick the bones of. However, FOSDEM made me realise that we may be seeing the end of GNU Classpath sooner than I thought. With the planned BrandWeg hacking session on the Friday, that was initially going to be my main focus of the weekend, but from the talks it seems most people are further along the road to OpenJDK than I thought. Maybe the BrandWeg idea is coming about six months too late and we should have gone there around the same as IcedTea. As is, CACAO, JNode and IKVM.net are already using OpenJDK, and JamVM, Kaffe and JikesRVM all have their sights on going there too. There was unfortunately no real discussion of GCJ, so it may just be that, with RedHat’s focus on IcedTea, there will be no further development there at all, which is a shame. Overall, FOSDEM gave me the impression that our Free Java community now want OpenJDK and have grown out of their ‘toy’, GNU Classpath. I’d be interested to know if others think this is true too.
The most interesting talks for me, however, were those at the end where the TCK and the JCP was discussed. As Dalibor has mentioned in the past, I couldn’t help thinking we might have targeted the wrong opponent. While it’s nice to have the more stable, mature codebase of OpenJDK out in the open, when all is said and done, it’s just another implementation (and in some ways a competitor for Classpath, at least in terms of the attention of developers). The fundamental problem is the JCP, which still largely turns out proprietary TCKs and RIs (Doug Lea’s JSR166 being the notable exception to the norm). In the long term, a truly Free Java platform is not just about implementations but about the specification and an open process surrounding that. This is perhaps what has been the barrier to people getting involved in OpenJDK; because OpenJDK is largely an amalgam of reference implementations of JSRs, all FOSS hackers can do outside these JSRs is bugfixes which, while necessary, don’t set their hearts on fire. A true Free Java community can only really work with participation in open discussions that determine its future and with a Free Software TCK. I think Andrew Haley explained the benefits of the latter very eloquently in his talk, where he demonstrated how a number of annoying bugs in our code could have been spotted much earlier and easier had the TCK been available. Can we not separate the test suite from the certification process in some way, such that the tests can be developed in the open (and can thus be more readily trusted) and used by more than just licensees? Anyone want to join the JCP and make an impact?
In more technical news, not only is Classpath 0.97 out, but I successfully compiled it on Nevada (via a SunRay connection) this afternoon…
February 28th, 2008 at 8:22 pm
Personally, I’d prefer JamVM to continue to only work with GNU Classpath. GNU Classpath is/was a community effort, building an entire class library from the ground up. Yes, “we got what we wanted” when Sun open-sourced, but on a selfish level it also destroyed a lot of the community (for me at least). I hate to say it, but with OpenJDK the community has been relegated to integration and bit work. I do enough of that in my paid job, I’ve no interest in doing that in my spare time.
JamVM is no HotSpot either. It is slow, incomplete and hasn’t passed the TCK. I’ve thought about giving up, but I still enjoy working on it. At least it beats doing the crossword
The reason I’ve thought about supporting the OpenJDK VM interface is because GNU Classpath development has slowed. Like it or lump it, if GNU Classpath dies, the only future for JamVM will be with OpenJDK. A couple of users have also asked if JamVM can use OpenJDK because their program doesn’t work with GNU Classpath. If development stops, these bugs won’t be fixed, compatibility will get worse and worse as Java moves on, and JamVM will be well and truly stuck.
Of course, the obvious question is why don’t I help out? Besides spending all my time on JamVM, I’ve never been able to contribute directly to Classpath because of tainting. This at least (should) be gone because of Sun’s open-sourcing. But I will never be able to get my current employer to fill out the copyright forms, so I’m still stuck.
So, to summarise. I’m reluctantly starting work on supporting OpenJDK in JamVM. But as I said to Dalibor, re-implementing the VM interface is boring. It may take a while, especially if I get any ideas of new things to do in the VM itself!
Rob.