FOSDEM


The Free Java devroom opened with an introduction from Tom Marble, followed by a ‘State of OpenJDK talk’ from Mark Reinhold and Joe Darcy. Mark reiterated the outline for JDK7 & 8 published on his blog. The general availability of OpenJDK 7 is planned for the 28th of July, 2011.

Oracle’s plans to continue with OpenJDK. Oracle employs around 20,000 Java developers, working on basically everything that is not the Oracle database. So their interest in Java is not altruistic, but based on rational self-interest. Mark outlined their priorities as:

  1. Keep Java #1
  2. Indirect Revenue
  3. Direct Revenue
  4. Decrease Cost

OpenJDK will continue to use GPLv2 with the Classpath exception as its license, though there is a possibility of moving up to GPLv3. The community bylaws were covered briefly, which sparked some discussion. Mark was careful to state that the current version is a draft; it is not immutable and will change. 4 weeks of discussion are planned, via the gb-discuss list, followed by a final vote to ratify the bylaws. Simon Phipps made some helpful contributions, including suggesting that laws should make sure that there is a transparent TCK license process and that the board be expanded to seven members, potentially allowing existing major contributors to OpenJDK, such as Red Hat, to be represented.

Joe Darcy then spoke on OpenJDK6. Going forward, Kelly O’Hair is to help with the OpenJDK6 release process. Security fixes will continue for OpenJDK6 until at least July 2012 (as 6 is already over three years old), and these will happen three times a year. This may eventually shift to the usual Oracle schedule of four times a year.

The good news is that OpenJDK7 will continue to be developed as it is now, without the issues that have plagued OpenJDK6 due to the separation between it and the proprietary release train. There will also be more transparency with release processes and development will continue to happen in the open.

Update: The Register did a piece on Mark Reinhold‘s talk in the dev. room.

The public key I’ve had for the last three years or so was a 1024-bit DSA key with a SHA1 signature. With the discussion of the upcoming keysigning at FOSDEM, I decided it was about time for a new more secure key. Thus, I will be transitioning away from my old key to the following new key:

pub   4096R/F5862A37 2011-02-02 [expires: 2012-02-02]
      Key fingerprint = EA30 D855 D50F 90CD F54D  0698 0713 C3ED F586 2A37

The old key will continue to be valid for some time, but i prefer all future correspondence to come to the new one. I would also like this new key to be re-integrated into the web of trust. The old key is signed with the new one and vice versa.

The old key was:

pub   1024D/94EFD9D8 2008-02-19
      Key fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

The new public key is now available on my website. Also, to fetch the full new key from a public key server, you can simply do:

gpg --recv-key F5862A37

If you already know my old key, you can now verify that the new key is signed by the old one:

gpg --check-sigs F5862A37

If you don’t already know my old key, or you just want to be double extra paranoid, you can check the fingerprint against the one above:

gpg --fingerprint F5862A37

If you are satisfied that you’ve got the right key, and the UIDs match what you expect, I’d appreciate it if you would sign my key.

gpg –sign-key F5862A37

Please let me know if you have any questions, or problems, and sorry for the inconvenience.

Join us at FOSDEM 2011 to be a part of our sessions where we’ll discuss the state of Free Java!

Our theme is “Java Sans Frontières”

  • Why Free Java technology is awesome
  • Standing on the Shoulders of Free Java
  • The future of Free Java

The Call For Participation is OPEN NOW, but closes on 3rd December…
So send in a talk proposal today and join us in Brussels 5-6 February!

Why FOSDEM?

  • Engage in scintillating discussions with smart hackers over world famous Belgian Beer
  • Join the Web of Trust by getting your strong new key signed
  • Indulge in exquisite chocolate
  • Visit historic Brussels within walking distance

Why the Free Java DevJam?

  • This is the most significant non-commercial, neutral environment for Java developers to meet
  • Learn how to get involved in technical Free Java projects
  • We will not shy away from politics (especially this year)!
  • We will get together for an awesome dinner!
  • You will meet historic hackers in the evolution of Free Java

Please join the freejava-devroom@lists.fosdem.org list for general discussion about the event.

To submit a formal Talk Proposal follow the guidelines at
http://wiki.debian.org/Java/DevJam/2011/Fosdem/CallForParticipation

Respectfully,

Like Andrew Overholt, I’ve recently been looking at the best way to host the pile of videos I’ve accrued over the last few years from recording talks with my DV camera. At the moment, I’m working on the stuff from FOSDEM 09 earlier this month, but I’ve also got recordings from the 07 and 08 events, our Sun Campus Ambassador talks over the last year and a half and many departmental group seminars from the university.

Probably the most well-known is YouTube, but reading their terms of use immediately put me off. They assign blanket rights on contributed content to both themselves and any user of the site, including (most importantly) the ability to create derivative works. Now anyone who knows anything about Free Software will know that creating derivative works is actively encouraged, usually with the proviso that this is under the same terms (see the GNU GPL). However, that’s software. Creative content has its own issues, and one that’s especially of note with recordings of talks is that a derivative work could alter the message conveyed by the speaker.

Imagine you’ve recorded a talk by Richard Stallman (as I did). In a derivative work, someone could alter the message Richard tries to get across to actively promote proprietary software. This is why both I and the FSF choose to use the Creative Commons Attribution-No Derivative license, as can be seen on the recent Stephen Fry video. This ensures that proper credit is given for the work and that it can be freely watched and distributed, while preventing such heinous modifications. Of course, if you’d like to create a legitimate modification, such as providing translation services or transcoding the video to a different format (provided it’s a Free format), then something can be worked out. But a blanket attribution of derivative rights is too risky.

So YouTube is out for that reason. So is one of the other sites suggested by Andrew, Vimeo, for pretty much the same reason. So what are good places to host your video? Dailymotion showed some promise by not handing away your rights left, right and center but they sadly don’t allow you to choose the license given to third parties. I have sent them feedback as requested on their terms of use so we’ll see if anything changes. Both archive.org and blip.net allow a Creative Commons license to be used for your work (just like, incidentally, Flickr does for photos). So that’s where I’ve been posting things so far. You can find the following goodies on archive.org right now:

I also now have a ‘show’ on blip.tv and have posted links to these videos on TheoraSea, a site for the promotion of Ogg Theora videos.

If you plan on posting your own content, I suggest you look carefully at what rights you are passing on to unknown third parties, and make wise choices rather than going for the most popular.

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

Lillian ran into a few minor problems trying to build ‘raw’ OpenJDK6 (i.e. the tarball direct from Sun without any of the numerous IcedTea patches, fixes and extensions) yesterday, and so I decided to give it a go as well. Unfortunately, it seems it still isn’t possible to build it out of the box on a modern GNU/Linux system. In the end, I had to apply three patches (effectively two as one was split into two by the HotSpot build changes in IcedTea). patches/hotspot/original/icedtea-gcc-4.3.patch and patches/icedtea-gcc-4.3.patch from IcedTea6 is needed to fix some issues when building with GCC 4.3 which is the default on most current distributions. In released versions, this is a single patch, but in current Mercurial and the upcoming 1.4 release, the HotSpot changes in all patches are split off to enable the version of HotSpot used by the build to be changed. patches/icedtea-no-bcopy.patch was needed to remove some local defines of some BSD functions such as bcopy. There was some noise about taking this upstream on the mailing lists, but it’s not yet in a tarball it seems.

With these patches, I could build as follows:

$ mkdir openjdk
$ tar xzf openjdk-6-src-b14-25_nov_2008.tar.gz -C openjdk
$ cd openjdk
$ patch -Np1 < $ICEDTEA_SOURCES/patches/icedtea-gcc-4.3.patch
$ patch -Np1 < $ICEDTEA_SOURCES/patches/hotspot/original/icedtea-gcc-4.3.patch
$ patch -Np1 < $ICEDTEA_SOURCES/patches/icedtea-no-bcopy.patch
$ cd control/build
$ unset JAVA_HOME
$ unset LD_LIBRARY_PATH
$ JAVAC= LANG=C make ALT_BOOTDIR=$CURRENT_ICEDTEA_INSTALL \
 IMPORT_BINARY_PLUGS=false ANT=/usr/bin/ant ANT_HOME=/usr/share/ant

...sometime later...

>>>Finished making images @ Fri Jan 30 10:59:43 GMT 2009 ...
make[1]: Leaving directory `/tmp/openjdk/jdk/make'
Control build finished: 09-01-30 10:59
$ ../build/linux-amd64/j2sdk-image/bin/java -version
openjdk version "1.6.0-internal"
OpenJDK Runtime Environment (build 1.6.0-internal-andrew_30_jan_2009_10_46-b00)
OpenJDK 64-Bit Server VM (build 11.0-b17, mixed mode)

You can build a bit quicker if you make use of parallelisation which I neglected to do here; add

ALT_PARALLEL_COMPILE_JOBS=$PARALLEL_JOBS  HOTSPOT_BUILD_JOBS=$PARALLEL_JOBS

where PARALLEL_JOBS is how many processes you want to run simultaneously. The usual rule is number of cores plus one. IcedTea of course supports doing this too; just add --with-parallel-jobs=$PARALLEL_JOBS when you run configure and it will add the necessary make wizardry for you.

For the configuration, CURRENT_ICEDTEA_INSTALL should point to your existing IcedTea install. This is the only way to build OpenJDK6; I didn't try it this time round, but I know from experience that it still needs a fair few patches to remove Sunisms from the OpenJDK source code in order to allow a GNU Classpath JDK like GCJ to be used instead. This shouldn't be a problem though; you'll find IcedTea in Fedora (yum install java-1.6.0-openjdk), Gentoo (emerge -v icedtea6-bin), Ubuntu and Debian testing (aptitude install openjdk-6-jdk). The magic path is usually something like /usr/lib/jvm/blah where blah is java-1.6.0-openjdk on Fedora and /usr/lib/jvm/icedtea6 on Gentoo.

ICEDTEA_SOURCES points to a copy of the IcedTea tree. If you get this from a release tarball rather than hg, then you don't need to try finding the second gcc patch... you'd have a hard time doing so ;)

The OpenJDK build doesn't like environment variables like LD_LIBRARY_PATH and JAVA_HOME being set. It also complains about you having any fancy modern locale set in LANG so it's simplest just to run make with LANG=C. The JAVAC environment variable is a funny one; it allows the path to javac to be overridden for the build, but it doesn't only override the binary path as it should, but also drops all the necessary memory and classpath options passed to it. Thus, I don't see how any build which sets JAVAC could work... Gentoo seems to like to set both JAVA_HOME and JAVAC for some reason, so make sure they are unset before you build.

Of course, with the resulting build, you'll be missing a lot of features that IcedTea provides...

  • A web plugin
  • Java web start
  • PulseAudio sound support
  • Support for architectures like PPC, ARM and MIPS via Zero or CACAO
  • A faster more recent HotSpot if you use the current Mercurial tree or the upcoming 1.4 release
  • Lots of other lovely stuff provided by our patches including a more up-to-date version of Gervill, the results of the XRender pipeline project and support for testing your build with JTReg.

You also avoid the pain of having to remember those crazy make variables; it's just ./configure; make on most modern GNU/Linux systems; file a bug if that's not the case.

I still feel that the IcedTea project does a very important job in taking the raw materials provided by Sun and turning them into something useful. That's why you'll find it's IcedTea being shipped with all those distros, and not 'straight' OpenJDK (which in most cases actually means the version that may-eventually-be-1.7). Thanks to all the great developers for their continued efforts and for the support of Red Hat on this effort.

The other thing about your own build is you can't of course actually call it 'Java'; one of the things you need to do before you can is run it through the Java Compatibility Kit. It has lots of tests your build has to pass. Unfortunately, Sun still keep this as a horrible proprietary blob of code which means you have to sign up to get a copy, be 'approved' and then work on your testing in a dark clammy room in secret. Fortunately, the kind people at Red Hat have already undertaken this momentous task for you, so you can just grab one of the OpenJDK builds in Fedora which has already passed. Thus, according to Sun's FAQ, the Fedora binaries 'are compatible with the Java(TM) SE 6 platform' :)

Let's hope things continue to improve in the direction of making more things in the Java world open and Free. In the Free Java room at this year's FOSDEM (happening just next weekend), you'll be able to find out all about what's coming next and meet some of the brave people forging the new frontiers...

Happy hacking! :)

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

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!

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…

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

Next Page »