Documentation, tests and JFreeChart

GNU Classpath is going very strong. We got a couple of new hackers helping out and some of them concentrate on Documentation and Testing of the whole library. One of them is David Gilbert of JFreeChart fame. He has written hunderds of new Mauve tests. This has not only found a couple of bugs in our library implementation, but it also makes us sleep a little better. It is comforting to know that if we make mistakes in the future there will be ten thousand mauve tests waiting to point out any new regressions.

Since I know David would like to see JFreeChart part of a complete Free Software stack I made sure that we can at least run the JFreeChart demo program on the gcj-gui branch. The screenshot looks very nice. Unfortunately it isn’t production ready yet. I needed to make a couple of ugly hacks to work around some text (pango) issues when cairo is enabled. It needs the (currently not default) –enable-gtk-cairo configure flag to build the cairo Graphics2D implementation on GTK. And then you need to run the program with the right system property set to get your AWT Components a real Cairo based Graphics2D object with gij -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D. As you can see on the screenshot there are still a couple of visual bugs in our library. And it is actually pretty slow. But seeing such a large and cool free software library starting to work together with GNU Classpath and gcj is really satisfying. I’ll try to clean up my hacks and get it all into CVS soon so we can play with this a bit more when the GNU Classpath 0.11 snapshot is made on Monday. But no promises since some of the workarounds I needed are pretty ugly and I can imagine Graydon objecting to his code being vandalized like I did. (There might have been a reason for those asserts triggering, and just removing them might not be the cleanest solution…)

Documentation Jdocs

Since people seem interested in this topic and since Rick of javalobby contacted me about it I wrote up a little summary of GNU Classpath APIs and documentation (it is the 5th entry).

Progress

Inspired by A Brief History of GNU Classpath created by Casey Marshall I looked at the actual lines of source code of GNU Classpath. Running SLOCCount on the releases of the last year gives:

Release Date SLOC
0.06 09 Sep 2003 185,803
0.07 05 Dec 2003 192,296
0.08 13 Mar 2004 200,471
0.09 02 May 2004 211,736
0.10 12 July 2004 225,049
CVS 17 Aug 2004 253,023

That means that in the last year GNU Classpath has grown with 67220 physical Source Lines of Code. SLOCCount automatically substracts comments and duplicate/similar pieces of code (the FindBugs paper said GNU Classpath 0.08 was 457 KLOC, but they just used wc -l on all the .java source code files, which gives a much higher number, but not a fair realistic one). So on average over the last year we have been growing at more than 190 lines of pure source code each and every day (including holidays and weekends).

If you want to see a nice overview of the progress that has been made please check out Jim Huang his presentation free-java-debian. It is in traditional chinese, so make sure you have some chinese fonts installed (xpdf displays the .pdf nicer than gpdf for me and OpenOffice gives some warnings opening the .ppt file, but renders it really nicely). But even you are not fluent in Chinese read it! It includes pictures of the different AWT backends (check out kawt – DirectFB AWT backend!), Odonata, GCJWebplugin + Frozen Bubble applet, native eclipse + kaffe integration, Kaffe + GL/SDL, J2ME (MIDP) MicroEmulator, SwingWT, Charva, Tomcat5 management console, X-Smiles, JavaTV (ftv) on kaffe, KOE/XEO (including webbrowser!), GTK+ 2.4-based AWT/Swing and Java-GNOME. Even if you think you know everything there is out there in the free software world written and deployed on free java-like environments these pictures will surprize you. And the English slides give a nice overview of the dangers of proprietary/SCSL licensing, an overview of GNU Classpath, gcj, kaffe, IKVM and JC VM and benchmarks between the different free and proprietary runtimes (including Latte!).

GUI work (AWT/Swing)

Made a long post to the GNU Classpath mailinglist describing all the nice GUI work (AWT/Swing) going on recently. The best summary is probably the screenshots and slides from Thomas Fitzsimmons his GCJ and the Desktop talk at the Desktop Developers’ Conference and the new screenshots of the new AWT Demo and Swing Demo we include in GNU Classpath now.

Status reports

Ranjit asked for status reports. But I don’t have anything to report (since I am still not finished with the big gui update). So I will just point to the Kaffe plans of:

The Kaffe hackers seriously rock. And the cool thing is that when Jim finishes that last point of his plan (upgrade server hardware) the Kaffe, GNU Classpath, GNU Crypto and GCJ hackers will pull together some resources to work even more closely together!

GCJ and the Desktop

The first report of Thomas his talk given at the Desktop Developers’ Conference is in.

Somebody’s Acting Like A Child

John Mayall & The Bluesbreakers were in the Melkweg today.

Viewing pleasure

As I said before we need to get Thomas Fitzsimmons his own blog.
Here is what he just posted to the mailinglist:

Hi,

With my latest round of AWT patches we can now run Slime Volleyball –
in my opinion the best game on the web ;-) I’ve posted some screenshots
for your viewing pleasure:

http://people.redhat.com/fitzsim/slime-volleyball-1-2004-07-12.png
http://people.redhat.com/fitzsim/slime-volleyball-2-2004-07-12.png
http://people.redhat.com/fitzsim/slime-volleyball-3-2004-07-12.png

Enjoy,
Tom

So get yourself some of that jhbuild gcj gui branch goodness and start playing!

Reading

Finally had time again to read. I can really recommend the books of J.M. Coetzee, Boyhood and Youth. Also bought Paul Graham his book Hackers and Painters, which is a very inspiring book giving hackers lots of hope. Also very recommended.

Please run to your magazine store to get a copy of Linux Journal which has the Native Eclipse article. The paper version has cute little pictures of the authors John Healy, Andrew Haley and Tom Tromey, so you can finally see how the heros that worked so hard on a free, native and fast eclipse look like.

Boudewijn Rempt wrote a follow up to his earlier article on Creating ‘native’ Qt applications with Java in which he examines creating a natively compiled shared library with gcj so it can be called from C++. The lesson to be learned from this article is that we need to add more examples to our manuals.

The Netherlands withdraws support for software patents directive

The motion in parlement to change the official Dutch vote against the derictive of the Counsel and for the version of the European Parlement didn’t make it. But we at least got a retraction of the vote in support. This doesn’t mean Europe is saved from patents on algorithms, business methods and ideas yet, but hopefully it is a step in the right direction. Hopefully we can get other European countries to join and support the European Parlement in this matter. I am really glad the Dutch parlement finally forced the minister to do this.

Some information in Dutch Nederland moet steun softwarepatenten intrekken (webwereld) and some background info in English Dutch Parliament forces Minister Brinkhorst to withdraw support for software patents directive (Press release FFII)

I liked how Dieter Van Uytvanck, spokesman of FFII Netherlands, stresses the importance of this decision:

This political signal reaches much further than just The
Netherlands. We hope that other European countries that also have
their doubts about the proposal of the Council will also withdraw
their support, so that the current proposal no longer has a
majority. The historic precedent has been set now.

Let this be a lesson to the lawmakers in Brussels: the European
citizen watches you closely. It is much better to take this into
account from the beginning than to get into trouble later.