GSoC/GCI Archive
Google Summer of Code 2011

GNU Project

Web Page:

Mailing List:

[IMAGE] The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software -- software which respects your freedom. Unix-like operating systems are built from a collection of applications, libraries, and developer tools -- plus a program to allocate resources and talk to the hardware, known as a kernel. The Hurd, GNU's kernel, is actively developed, but is still some way from being ready for daily use, so GNU is often used with a kernel called Linux. The combination of GNU and Linux is the GNU/Linux operating system, now used by millions and sometimes incorrectly called simply 'Linux'. Being a very large and complex project, and following the Unix philosophy, GNU is subdivided into packages, that is, independent programs with a specific goal. As a mentoring organization in Summer of Code 2011, GNU aims to act as an umbrella for its packages.

Our code repository can be found here:, but it is probably better to check the individual GNU projects' source repositories and mailing lists.


  • automake - Interfacing with a test protocol like TAP or subunit TAP and SubUnit are simple text-based protocols allowing communication between test scripts and a test harness. They allow a single test script to run several distinct checks. Primary objective of this project is the implementation of a TAP/SubUnit consumer testsuite harness in Automake-generated Makefiles, allowing more granularity in the report and count of checks. A secondary objective is to enhance Autotest-generated test scripts to make them able to produce TAP and/or SubUnit output.
  • Denemo - Restructure MIDI and audio backends and make JACK support realtime-capable Denemo supports a variety of MIDI and audio backends, all of which offer different feature sets. The goal of this proposal is to clean up, restructure and partly rewrite the MIDI and audio code, so that all currently implemented features can be used irrespective of the underlying audio API. Once input/output, soundfont rendering and GUI code are clearly separated from each other, ensuring the realtime-safety of Denemo's JACK support will be relatively easy.
  • gdb - Enhancing Support for Debugging Operating Systems in x86 Environments My proposal is to extend GDB’s capabilities of debugging operating systems by adding x86 architecture specific commands, robust support for transitioning between operating modes, and modifying the remote protocol to allow virtualization software such as QEMU use GDB more effectively in debugging operating systems.
  • gnash - Optimizing the IO Pipeline for AV Data This project is about optimizing the playback of audio and video (AV) in Gnash. In particular, I will change AudioDecoder to a more efficient push/pop/pull model like already implemented in VideoDecoder. I will also track down unneeded copy operations and memory allocations in the IO pipeline to further reduce CPU usage, which can be quite high.
  • Guile-Elisp Improve Guile's Emacs Lisp support and begin work on Emacs integration
  • HTML5/Canvas backend for Caciocavallo (GNU-Classpath) A HTML5 backend for Caciocavallo, allows existing Java/Swing application to be used without any Java support on the client platform and to be deployed as an ordinary web application. This would open up completely closed devices like Apples IPhone/IPad for Java applications without porting effort. Idea mentioned on Classpath's idea list:
  • hurd - Java on Hurd (and vice versa) Improve Java support on the Hurd and create Java bindings for its interfaces.
  • Kawa - REPL improvements and pretty printing I propose to improve the Kawa REPL by implementing some common editing commands, such as copy/paste, and save. I also plan to allow for a graphical indication of where read/evaluation errors have arisen in the REPL. I plan to extend the Kawa writer to incorporate the SRFI-38 extension, the writer's PrettyWritter should be incorporated into the GUI and possibly a web REPL.
  • octave - Implement a profiler GNU Octave is (according to my own experience as user) a very good replacement for proprietary packages like Matlab. Sometimes it is necessary though to optimize certain regions of code or rewrite them in C++ to get optimal performance. But currently, there are no profiling tools available (other than simple timing commands), so it can be tedious to find out which areas should be improved. I want to close that hole by implementing an easy-(and quick)-to-use profiler for Octave.