This page contains suggested Google Summer of Code 2009 student proposals for GNU Classpath.

Index

For students

Students, please feel free to either adopt one of these proposals OR suggest something else. The official Summer of Code page is at http://code.google.com/soc/ make sure you read all the official pages there. When submitting a proposal for GNU Classpath make sure you read the general GNU SoC Guidelines, those guidelines also provide a nice summary of important things to mention in your application (Benefits, Deliverables, Plan, Qualificaton, etc.) In addition to those you might want to read up on the GNU Classpath Hacker Guide and/or the GCC contrib and/or GCJ contrib pages.

You can choose either GNU or GCC as mentor organisation. Note that there are also other ideas for those projects if none of the ideas below fit you. See http://www.gnu.org/software/soc-projects/ideas.html and http://gcc.gnu.org/wiki/SummerOfCode. Again, you are also more than welcome to propose something that is not on this list yet.

Here are some other guidelines that you may find useful and that we hope can help you in preparing your application form for the Summer of Code 2009, we really suggest you to give a look at them:

Please, follow all the guidelines and rules defined by Google, as these are the most important requirements. In addition, these can be useful hints:

For maintainers/mentors

GNU Classpath developers, please feel free to add further entries or offer yourself as a mentor :)

Select tasks that a student could do if they had 2 months to work on it full time (assume they are smart, but might not have a lot experience and might need to learn some of the project customs). Please mention when you are willing to be a mentor for the project.

Well-defined Tasks

Add file output support for the sound API

Possible mentors: Mario Torre (neugens)

Google Summer of Code 2007 saw a successful proposal to add support for reading and playing sound files using a GStreamer implementation of javax.sound. Support for writing sound files is still missing however. Also, there are a number of improvement still pending that would be nice to have.

Support the Java Attach API

Aim: A working implementation Possible mentors: Andrew John Hughes (gnu_andrew)

This is needed to run JConsole locally (which would be the end goal of this project). Having it as part of our VM interface has general usefulness as VMs will need this for OpenJDK too.

Update GJDoc to support the 1.5 language constructs

Possible mentors: Andrew John Hughes (gnu_andrew) Mario Torre (neugens) Roman Kennke (rkennke)

Within the GNU Classpath Free Java stack, there remains one component that can not yet fully handle the 1.5 language constructs such as generics, enumerations and annotations. A development process of approximately two years ensured that the main code base and VMs supported these extensions, but our documentation generator has so far simply being patched so that it can at least generate documentation for the current codebase. The documentation for our latest release illustrates some of the problems, notably in classes like java.lang.Enum. GJDoc really needs a new parser to handle the 1.5 constructs and then appropriate adaptation to render them correctly in the HTML doclet.

Finalize text.html support

Possible mentors: Roman Kennke (rkennke) Mario Torre (neugens)

Make sure you set an achievable goal/target for this.

Fully integrate Java Web Start into the desktop

Possible mentors: Roman Kennke (rkennke) Mario Torre (neugens)

Rewrite Qt peers using Jambi

Possible mentors: Roman Kennke (rkennke) Mario Torre (neugens)

Our Qt peers are rotting away, and that means it's time for someone to come in and rewrite them. Qt Jambi are the official bindings for Qt for Java code, so it could be both fun and useful to rewrite our Qt based AWT peers in pure Java.

Write a Swing plaf that uses Gtk to render widgets

Possible mentors: Roman Kennke (rkennke) Mario Torre (neugens)

This would let us use the current Gtk theme for Swing applications. (A similar task would be to complete and polish the Qt-based Swing peers which do this.)

Add JDWP support for jamvm or kaffe

In particular we want to be able to debug the core GNU Classpath libraries from Eclipse. GNU Classpath contains a generic JDWP server implementation, but this is not yet hooked up to any runtime. Work is underway for gij support, but this will at only enable debugging application code since gcj doesn't use the interpreter for the core classes (they have a ahead of time precompiled libgcj for speed). Hooking JDWP support to a traditional interpreter like jamvm would enable jdwp debugging of core classes.

Application Support

The aim of all these is to get the desired application running and working as well as possible on GNU Classpath and a VM of your choice.

TomCat

Possible mentors: Chris Burdess (dog), Andrew John Hughes (gnu_andrew)

TomCat will run but still has issues. One hurdle a few people have run into is that the JMX implementation in GNU Classpath is not complete enough to run Tomcat without the optional 1.4 compatibility JAR.

JBoss

Possible mentors: Andrew John Hughes (gnu_andrew)

JBoss works to a degree, but being a large enterprise application, it runs into quite a few bugs or cases of missing functionality. Christian Thalinger filed a number of bugs about this, and there are a few others still in our codebase:

SPECjvm2008

Possible mentors: Andrew John Hughes (gnu_andrew)

SPECjvm2008 is a Java benchmark which it would be useful to run on Classpath-based VMs. Currently it fails on about two thirds of the tests:

Building OpenJDK

Possible mentors: Andrew John Hughes (gnu_andrew)

The IcedTea project currently has to apply a number of patches to OpenJDK specifically for building on ecj with a GNU Classpath VM. Preferably, the build process should be now different than it would when using IcedTea to build. This task involves working with code from several projects: GNU Classpath, a VM of your choice, the IcedTea project, OpenJDK itself and possibly Eclipse, home of the ecj compiler.

Batik

Possible mentors: Andrew John Hughes (gnu_andrew)

Batik is an SVG implementation in Java from Apache.

GCJ Ideas

Random Ideas

AWT peers for WINE (aka Windows) or Darwin (aka Mac OS X)

Possible mentors: Andrew John Hughes (gnu_andrew)

BrandWeg

Possible mentors: Andrew John Hughes (gnu_andrew)

BrandWeg is our attempt to integrate parts of OpenJDK into Classpath to provide some of the missing functionality to VMs using the Classpath interface. This is actually capable of spawning a number of sub-projects depending on student interest:

Other Resources

There is also:

but these are not as up to date.

GoogleSoC2009 (last edited 2009-03-09 22:35:45 by AndrewHughes)