Archive for the 'FOSDEM' Category

Code for Thought

Wednesday, February 27th, 2008

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… :)

BrandWeg

Monday, January 21st, 2008

Well, this year is trotting along quite nicely so far and there have already been some quite interesting developments. Plus it’ll soon be time for FOSDEM again! Probably the most major thing for me is the continued development of OpenJDK-related projects. After a discussion with Dalibor via IRC a couple of weeks ago, we launched a new project called BrandWeg. This is effectively the inverse of IcedTea; we take Classpath and try to patch its holes using OpenJDK as the plaster.

It’s notably different as a repository in that it contains no source code, only patches. Instead, the build downloads Classpath from CVS or a tarball, and then the requisite OpenJDK sources from either Mercurial or a tarball. At the moment, it just merges in the jaxws stack, as this is completely unimplemented in Classpath and separated in the OpenJDK. As such, it seems like it should be easy to add this in by merely putting the sources into external and linking it into the build system. Unfortunately, the code may be in different repositories but they are by no means orthogonal unfortunately. Trying to build with jaxws in there makes the build scream for mercy — among the errors, there are ones looking for a HTTP provider in com.sun (presumably tucked away in the main JDK sources) and some evil direct use of the com.sun.org.apache XML providers. So it’ll need a bit of patching before we have our first BrandWeg build.

I’ve also returned to a little work on IcePick, after doko has started trying to build native GCJ binaries from its output. Together, we found and patched a few bugs and I’ve finally implemented better wrappers for the tools. Notably, these don’t depend on the -Xbootclasspath option which I picked up from the Classpath tools but which doesn’t work with gcj, and they also handle the -J options. The wrapper is now a little bit of C code that is compiled with different defines depending on the required tool.

Feel free to check these and let me know what you think.

Finally, the last bit of news concerns OpenJDK again. Through the last year or so that we’ve been working with the new OpenJDK development, our main contact with Sun has been through Tom Marble. He’s proved to be a great guy to work with, always patient enough to listen to all our quibbles and our ongoing complaints and whines about the glacial progress of the OpenJDK community development. So, it’s with some sadness that we found out this week that he’ll be leaving Sun soon and heading off for pastures new. I hope he appreciates how much of an asset he has been to us GNU Classpath developers in our trips into the unknown world of the OpenJDK and I’d like to join with the rest of the Free Java community in thanking him for his tireless work and wishing him all the best in the future. Thanks Tom!

That Was The Year That Was

Tuesday, January 1st, 2008

Well it’s now 2008 (unless you’re in the US of course) and traditionally a time to reflect upon the year just gone. Well, it’s certainly been one of movement and change in the GNU Classpath community, if also one of very little code hacking. Of course, the biggest event of the year was the release of the OpenJDK source code in May; about 95% of the JDK source code base was made available under the GPLv2, the rest both then and now being filled by binary blobs, which are slowly decreasing in number.

However, back in January 2007, we were still waiting for this to happen. As I recall, we’d just (gone through the generics merge, migrating the contents of the branch on to the main tree and over the Christmas period I added quite a lot of 1.6 code. Sun’s javac compiler was open-sourced however, as part of the November announcement, and we soon had support in GNU Classpath for building with it.

In February, GNU Classpath was again at FOSDEM and I finally attended after missing out on the last two years. It was good fun and notable for our collaboration both with the DevJam folks and the OpenJDK community (AKA Sun). Everything was very much still ifs and buts however, because I don’t think anyone knew what would really happen when the floodgates opened and the JDK was released. Of course, GNU Classpath will again be at FOSDEM this year, and apparently with even closer collaboration with OpenJDK — try and even spot a mention of GNU Classpath on those pages… Hopefully, I’ll be there again too.

The year only saw two Classpath releases, which is sort of representative of its ongoing decline I guess. 0.95 was released shortly after FOSDEM in April, a delayed and very necessary release which include the generics move and the other stuff I mention above. Getting a GNU Classpath release out the door has become more and more of a struggle over this year and, in a way, has become synonymous with a pregnant mother giving birth, as a team of developers stand round screaming ‘push’ until eventually the release emerges. Our release of 0.96 in October certainly felt like that to me anyway. On that note, congratulations to both Michael Koch and Roman Kennke who both (or should I say, their respective partners) had children this year.

May of course saw the release of the OpenJDK source code and the inevitable hordes jumping on and pulling it about took place with the same speed and haste we saw on the release of javac. This has eventually surfaced in the form of IcedTea from a number of GNU Classpath/RedHat folks, a build framework for the OpenJDK which, most importantly, serves it without the need for proprietary code (given that the current OpenJDK build has no real advantage over a proprietary JDK drop unless you want to tinker). This was produced by splicing in bits of GNU Classpath code. It’s a whole deal more easier to use than plain old OpenJDK but still not a walk in the park. This is especially true since Sun split up the build process and made parts of it depend on Ant

It’s quite sad to say, but OpenJDK is still not what we all hope it will be. Thankfully, live Mercurial repositories are now available as of December, but there are still too many walls, as I mentioned before. It’s like the JDK was something that popped out of a little black box, but now someone has taken the lid off the box so you can see the little worker ants running around inside and making it all happen. But there’s not yet anyway to get inside the box ourselves. New ants need to be able to join in the fun. We’ve already seen one of the goals I mentioned in August realised (the open repositories), and hopefully more will change in 2008. Sun’s innovation awards are both a realisation of this problem (common to both OpenJDK and many of its other open source projects, which still have a predominantly Sun ethos) and hopefully its saviour.

It smells a little like Google’s Summer of Code and indeed Tom Marble was asking myself and Mario about this on IRC. This year of course saw me tackling JikesRVM for GSoC, trying to implement the VM-level management extensions. A lot of this work was done, and following GSoC, I was made a member of the JikesRVM team. However, the patches still haven’t gone in to the mainline, due to a combination of the release process (some of these are likely to be destablising) and finding time myself to test the stuff on the main branch. This hasn’t been helped by a re-emerging problem with building JikesRVM using Classpath; this same problem plagued my initial month or so on the project when I discovered it seemed to rely on proprietary software to work…

So altogether it’s been an interesting year. Not only have I worked on both the old (continuing with GNU Classpath and also pushing out a release of GJDoc) and the new (launching the IcePick project to build the OpenJDK tools separately) over the last year, but I’ve also sadly seen the community enter something of a demise as people start to move on to other things, especially IcedTea and OpenJDK. What will 2008 hold? Maybe I’ll find myself working on OpenJDK too…

SoC Student Deadline Imminent

Friday, March 23rd, 2007

Google has kindly extended the student deadline to 5pm PST on the 26th of March (which is 12am on the Tuesday, in UTC). Even so, this time is steadily approaching, so if you’re thinking of submitting an application (or several) for this year, you need to do so about now. Last night, I submitted a proposal for implementing the JMX stack on Jikes RVM, which should be an interesting task, combining my existing knowledge of this area with the new challenges of a Java-based VM that I’ve been meaning to play with for a while now.

I’ve also started pulling the FOSDEM movies from my camera, mainly because I was forced to as I needed the tape to film a lecture. I’m planning to encode in Ogg Theora/Vorbis in a range of sizes and also encode an MPEG-2 version to store on DVD (the originals are too big to keep). The first results of this can be seen Posted in Summer of Code, FOSDEM, Jikes RVM | No Comments »

Summer Comes Early

Tuesday, March 6th, 2007

Still haven’t got round to looking at the stuff I captured at FOSDEM, and surprisingly it’s already over a week ago — how time flies. There are a few pictures, but I left most of this to Mario and Steph as they were much more well prepared and equipped than I. What I do have is video of the Runtime Rumble and a couple of the Sun talks (IIRC). I need to work out where I can dump multigigabytes worth of DV before anything else; I took two tapes full in all.

What’s been occupying my thoughts so far this week is the imminent start of Google’s Summer of Code for 2007. It starts quite a bit earlier this year (student deadline of March 24th), and with all the Sun kerfuffle, it’s a little more difficult to choose a project than I expected at the end of last year’s SoC. I don’t want to put in a proposal for something that might get shipwrecked by any imminent arrivals of Free Sun code…

I raised the matter on #classpath today, and got some good feedback. There are plenty of tasks on underlying stuff (rather than APIs) that I could tackle. Also, Ian Rogers from Jikes RVM and Tom Marble (Sun’s OpenJDK ambassador) mentioned that their respective projects may be acting as mentoring organisations, so there seems to be plenty of choice. Unfortunately, I can’t really make any firm decisions until the organisations are decided, which is the same time as student proposals open. Just have to be prepared I guess…

Ugly Bugs

Monday, February 26th, 2007

Just got back from FOSDEM 2007 in Brussels; it was really nice to meet you all and put some faces to all those nicks I’ve seen on IRC. I see Steph already put up some great pictures from the event, and that Simon’s keynote is on-line as well. I have a few things on my own camera as well, that I’ll hopefully get round to pulling off too later.

The main subject of this blog is something I wanted to post about before I left, but didn’t get chance (I really should update this thing more often– it seems I’ve had over 1000 horrible spam messages since I last played with it). It seems the Fedora team are heading for Core 7 fairly soon, and only realised recently that this will include the new gcj with 1.5 support; great news :) Or it least it would be if this didn’t mean those guys ended up being the first ones to take the thing public, and thus found bugs that had been lurking on the generics branch for a while…

It also sees some of my management work going out in a release, which I wasn’t expecting until Classpath 0.94. Some of it really needs more testing, and this means it ended up getting dumped on the Fedora team… whoops. My apologies and thanks to them for this, and in particular, Gary Benson, who has found and patched a number of bugs in that code while trying to get it working with Tomcat.

The most strangest of these highlights an interesting issue with Java’s typing. If you pass a character to a method, and it turns out that there isn’t a version of the method that accepts a character, but does accept a larger integer type (such as int), then the character will be safely cast to that type by the compiler.

Some of my management code fell over this when instantiating a StringBuffer, which can’t be instantiated with a single character (strangely), but can take an integer as its initial size. So my call to new StringBuffer(’”‘) was allocating a buffer of length 34 rather than setting up a new buffer containing the character ‘”‘. It’s an interesting issue, and it makes me wonder if this has cropped up before. It would be nice if StringBuffer got an additional constructor which does take a character in order to solve this.

Update

Mario’s pictures are now on-line as well.