I’ve just returned from another weekend of adventures in Brussels. Yes, it’s FOSDEM time again, the yearly event where a horde of Free Software hackers converge on the ULB for talks during the day and the many bars and restaurants of Belgium’s capital during the evening. It’s always a pretty unique experience, bringing together volunteers and developers from companies such as Sun and Red Hat in one place for lots of discussion and lots of beer.

This year was a bit different for me, being the first as a member of the Core Java team at Red Hat rather than as the lone volunteer developer I’ve been for the past couple of years. I thus spent most the time in the company of my new coworkers, many of whom I met for the first time: Lillian Angel, Deepak Bhole, Gary Benson and, of course, Andrew Haley. It was also nice to see many now familiar faces again. Mark Wielaard was there again of course, this time with both Petri and son Jonas in tow. Jonas is clearly the spitting image of his father and we await his first patch with great expectations. Dalibor was also there, now of course working for Sun rather than maintaining Kaffe (0 releases this year) and initially sporting a heavy beard as a disguise at the Friday beer event. It was nice to see Roman and Mario again; they’ve been rather quiet on IRC of late, presumably snowed under with work at aicas.

Our usual VM reps were there too: twisti (formally of CACAO, now Sun and HotSpot), Robert Lougher (of JamVM, the only Free developer), Ian Rogers (of JikesRVM) and Peter Barth (of JNode). Sun was again represented, but minus a number of more well-known faces. Mark Reinhold was there of course, and it was nice to put a face to the name of Joe Darcy. Also, a big thanks to Sun for paying for the main dinner on Saturday evening, despite their current financial situation. It was nice to see Dave Gilbert of JFreeChart fame again, after he didn’t make last year’s event, and we also finally got to meet a number of new developers: Xerxes Rånby (ARM IcedTea hacker), Clemens Eisserer (XRender pipeline developer) and Karl Helgason (Gervill sound synthesiser extraordinaire).

One of the big chances since things have switched from GNU Classpath to OpenJDK is that the community is no longer as focused around IRC; most of the Sun devs. and the new developers never make an experience, so it becomes easy to forget they are out there hacking away too. It would be nice to see more blogging and maybe an IRC appearance or two from these folks. I suppose this is just representative of the way things have fragmented; whereas before we were one group working towards a common goal, there is now a diverse range of goals with just the one thing in common: OpenJDK. The IcedTea team work away at making things rock on a distro near you, while others are working on their own stuff which will either later be picked up by IcedTea/OpenJDK6 for use now (like XRender) or is heading for 1.7 (like the numerous Sun projects on the OpenJDK web site).

Although the talks at FOSDEM start on the Saturday, the real start is the night before. The Free Java crew have traditionally avoided the main beer event in favour of BXL and A La Mort Subite, and this year was no exception. We spent most of the evening in the latter, with a range of beers and omelettes being consumed. Jonas made an appearance early on, but soon went home to bed. Unusually, Dalibor didn’t join us in person, but merely by phone from the beer event. After many failed attempts to have a conversation with him over the noise of many thirsty hackers, those of us who were left in A La Mort Subite headed down to meet him there instead. It was a rather bizarre environment, with many people clustered in a narrow pathway chatting away and occasionally going inside to get drinks. Around 2, we called it a night, having already decided earlier on to skip the rather unappetising keynotes in the morning in favour of a good breakfast.

And so I met up with the Red Hat team about 11 the next morning, heading to BXL around 12:15 after a round of omelettes, English breakfasts (with blood sausage) and cherry pie. This year, we took the easy route to the university, grabbing a cab in the Grand Place which got us there early enough to get good seats and allowed me time to set up the camera. This year’s room was probably the best of the ones I’ve been in (having been to the last two FOSDEMs as well). It was probably about the right size, and both water and coffee were on hand within the room. The session started, as last year, with a summary of the state of OpenJDK from Mark Reinhold. This year, he was also joined by Joe Darcy, who did the same for the 1.6 branch. The main announcements concerned the availability of the new change review and Bugzilla sites, the latter only currently handling patches not actual bug reports — those should still go to Sun’s awful bug database for now. The news of the plugin was also reiterated; it’s going to be released as Free Software, but we don’t know when. Not much change from last year there then. However, this isn’t so much of an issue any more as the plugin in IcedTea (developed by Tom Fitzsimmons and Deepak Bhole) can pretty much replace it. The main message of the conference as a whole was the aim of working more closely together i.e. of having more patches go into OpenJDK itself rather than being maintained in IcedTea. This would certainly make things easier, and we hope to work towards this over the coming months.

Mark and Joe both gave a subsequent talk about the OpenJDK7 project they are involved with. For Mark, this is Project Jigsaw, an attempt to modularise the JDK. Most of this discussion focused on how JAR hell and classpath command line options will become a thing of the past through explicit representation of dependencies within new Java modules. There was quite a lot of debate about how to represent these, including how to handle things like virtual dependencies (‘I want an implementation of at least the Java 1.7 specification’) along with disjunctions (‘but not JRockIt because it has a nasty bug that affects this code’). The module system is intended to hook into the underlying package management system of the distro, such as RPM or apt and there were many helpful suggestions from some of those present who’ve worked with these formats, notably Matthias Klose (doko) from Debian/Ubuntu and Gary Benson from Fedora/RHEL. I guess one of the most interesting issues for Sun will be how to implement this on the legacy system they still support, namely Microsoft Windows, which has no package management system to start with…

This was followed by a discussion of Project Coin from Joe. This is focused on small changes (hence the name), some examples of which included allowing switch statements to operate over other constants such as String and Class objects, as well as the more usual numbers, booleans and enumerations and making array notation more generic so it can be applied to e.g. collections making map.get(p) become map[p]. There are already plenty of ideas that have been posted to Sun’s bug database over the years, so where the project really needs help is in pruning this list, picking out the wheat from the chaff, and providing prototype implementations which may later be included in OpenJDK if they prove worthwhile.

After a short break, we were treated to two talks from the Red Hat team. First, Lillian gave an overview of everything that’s happened in IcedTea over the last year. Talking about things you haven’t worked on yourself on behalf of someone else is always the most difficult part of any talk, and Lillian did a fantastic job of representing the work of everyone on the team. I say this partly because a lot of the stuff she spoke about seemed to have emanated from me, who somehow managed to get out of doing a talk… :D So thanks again, Lillian, I owe you one. Lillian was followed by Deepak, who’s had his head deep within the bowels of the plugin since joining the team and it was great to see all his demos go off without a hitch (especially given some of them used net access we weren’t sure we’d even have about an hour before). From the tone of his talk, it looks like the job is pretty much done; not only did we beat Sun in producing the first 64-bit plugin, but the IcedTea implementation is of course Free Software and can handle the ultimate and most important test: uploading photos on Facebook.

The final talk on IcedTea was given by Robert Schuster, who recently managed to cross-compile IcedTea. He explained how he went about this and some of the issues caused by the hideous OpenJDK build system. The most annoying thing is that this still isn’t upstream in IcedTea; Robert, if you’re reading this, please send the patches to the mailing list. We’d love to make this available for everyone, there’s a huge range of areas in which being able to cross-compile OpenJDK would be of benefit.

Saturday’s final block was all about cool looking or sounding stuff, or things that made that possible. Roman and Mario gave us an update on cheese and broken knives in the shape of the Caciocavallo project, complete with pronunciation lessons. The project focuses on portable AWT peers, with Roman and Mario’s work at aicas involving a lot of different (and rather estoric) platforms. This was followed by a talk from Guillaume Legris on OpenGL, who demonstrated some cool 3D stuff, and Clemens Eisserer, who detailed the performance improvements available from using XRender for complex operations in the Java2D pipeline. Finally, Karl Helgason provided the most sonically pleasing presentation of the day, and certainly the noisiest. He spoke about Gervill (which actually means ‘synthesiser’ in Icelandic) and treated us to a demonstration of a number of tunes rendered using the emergency soundbank he also created. This is a soundbank which operates through emulating instruments; each instrument is composed simply of the frequencies it produces and an inverse Fourier transform is used to turn this into a waveform for output. The day concluded with the conference dinner, during which Mark Reinhold announced that Sun would be footing the bill. After disposing of a lot of nice food and some wine, the discussions moved to the 24/7 Greek bar, where yet more beer was consumed and we persisted against the rather loud music to hear from Mark how we could go about starting to get stuff directly into OpenJDK, especially the new 1.6 forest.

The final day always starts pretty early, and although we delayed the start time this year until 10, it was still much too early after a night of drinking and discussion. After a lunch of crepes, omelettes and capacchinos, we made it to ULB for the second session on languages beyond Java. In this session, Matthias, Alex and Remi discussed a number of techniques for working with dynamic languages on the VM, including the new invokedynamic instruction. The third session was a continuation of the VM rumble which started at 10. Robert Lougher took to the stage, complete with Prisoner jacket, to tell us how the only Free man has been developing his VM. Robert managed to put a lot of work into JamVM this year, mainly by being ‘between jobs’. Just before FOSDEM, he released 1.5.2 (with Classpath 0.98 hot on its heels) which, among other things, now includes support for OpenSolaris, making bootstrapping IcedTea possible on this platform. The following talk by Guennadi Liakhovetski also spoke about JamVM, describing how he’d ported it to an AVR32 chip with hardware acceleration. What wasn’t clear was the advantage of doing this; assuming I understood things correctly, it seems that the number of traps occurring with the hardware accelerated port makes performance noticeably worse.

JNode, the Java-based operating system, was up for discussion next. While it’s interesting to hear how this is progressing, I still fail to see the point. I’m all for implementing new applications in Java, and thus avoid the plagues of memory allocation issues and buffer overflows which haunt C, but it doesn’t seem very helpful to reimplement something already pretty well-refined, like an operating system, simply for the sake of doing it in Java. Also, there is such a thing as horses for courses, and C’s low-level flexibility is much more suited to OS design. However, it is a research project and so hopefully this work can provide some insight into the issues involved with implementing an OS in Java and, more importantly, discover any benefits which clearly outweigh the advantages of simply using C.

The VM session was wrapped up by Gary with the exciting news that the build of Zero that just went into Fedora has passed the TCK on both the 32-bit and 64-bit PowerPC platforms. This is the climax of a huge amount of work by Gary, which started with simply providing a direct PowerPC HotSpot port and has culminated with tripling the number of supported architectures (some of which may also pass the TCK in the future). Congratulations! Gary also discussed Shark, the LLVM-based JIT he and Andrew Haley have been working on. There’s still a lot of space for improvement performance-wise, with some trivial optimisations not yet present in the current implementation.

Our last session was a mix of more fuzzy social topics. Petteri Raty, lead Gentoo Java developer, commented on his experiences of recruiting people to work on Java packaging. The main issue raised was the one of how to keep developers interested, and the long delay between submitting a first patch and becoming a developer. This is common with many projects, notably OpenJDK, so to get involved the new hacker really needs to be made to feel part of the team as soon as possible. Dalibor, replacing Ray Gans at short notice, effectively handed his talk over to the audience, leading an open discussion on where we go next rather than a traditional talk. This seemed to work well, and things look hopeful for greater collaboration between the various organisations within our community. Of particular note was Mark Wielaard’s concern over the lack of public discussion of things such as JTReg test results and new patches. This is largely related to Sun email culture it seems which prefers the mantra ‘less is more’. From the outside, it appears as if nothing is being discussed and thus there appears to be no room for involvement by external contributors. Hopefully this will change over the next year.

Our final talk came from Terrence Barr of Sun Microsystems with the rather strange aim of actually provoking a flamewar over licenses, specifically on whether the GPL without any expectations was still relevant. The most annoying thing about this was his continued use of the word ‘commercial’ where, as pointed out by Andrew Haley, he actually seemed to be referring to proprietary software. It’s clear from the writings of Richard Stallman and the existence of companies such as Red Hat that commercial Free software is not only possible but a viable business model. In the end, the discussion became more one of confusion over terminology than anything else, and there seemed to be little sympathy for the ‘poor developers’ who don’t want to have to open up all their code. Free Software is, of course, done for the benefit of the user not the developer, its primary aim being one of changing the role of developer into that of an equal from that of a benevolent dictator.

The event closed with a group photo and the remaining survivors made their way to A La Mort Subite for a final round of drinks and discussions. All in all, it was another good FOSDEM, with plenty of chance for Free Java hackers to get together and discuss the future direction of the various projects involved. All being well, we’ll be back in 2010 for more of the same… :)