GSoC/GCI Archive
Google Summer of Code 2013

GNU Project

Web Page:

Mailing List:

The GNU Project was launched in 1984 to develop the GNU system.


  • [GNU Classpath] Caciocavallo Jenkins-Plugin and Merging to OpenJDK CacioTTA enables the possibility of executing GUI tests on a headless Continuous Integration server like Jenkins. This project aims to create a Jenkins plugin which enables you to watch the activity of Jenkins during GUI tests with CacioTTA, by means of a realtime video stream. As a bonus goal this project will try to make an effort to merge Caciocavallo into mainline OpenJDK.
  • [GNU Classpath] New Gtk3 Look and Feel for OpenJDK OpenJDK support a Look and Feel implementation based on GTK+, but uses API found only in an older, obsoleted version of GTK+ and not in the latest version GTK+ 3. This represents a problem in a number of ways. First of all, most modern GNU/Linux distributions now use GTK+ 3 which has a different theming mechanism whichis not compatible and hence cannot be used with GTK+ 2. This project aims to port the native look and feel from GTK+ 2 to GTK+ 3, solving most of the above issues.
  • [GNU Classpath] Port the GTK+ AWT support for GTK+ 3 GTK (GIMP Toolkit) is an open source toolkit for Linux and Unix systems for GUI production and is used by many java applications. The GNU Classpath at the moment ships with a GTK+2 peer which provides most of its GUI support, which is unfortunately outdated as most GNU/Linux distributions are packaged and shipped with GTK+3. Thus this project aims to prepare and port the GTK+ peer to work and build with GTK+ 3 providing and ideally allowing for the uses of the new GTK+3 features with GNU Classpath. The porting process will be conducted following a guide provided by GTK+. The porting process should also be done in such a manner as to make the classpath backwards compatible with GTK+ 2, this is to avoid future problems, if any occur with the usage of GTK+ 3.
  • [HURD] Improve the GDB Port for GNU Hurd Many cases show that the GDB on GNU Hurd is not so good as on GNU/Linux in terms of functionality and integrity. The former eagerly need to improve the porting such as fixing the bug and make up the defect of missing important component like gdbserver. Gdbserver makes it possible to remotely debug. Without the porting of gdbserver, the porting of GDB to GNU Hurd is incomplete.
  • API for LibreDWG This project aims to make LibreDWG library easily usable for developers. This will facilitate integrating library into other CAD Programs. Right now there is no proper support for AutoCAD based DWG files in any opesource CAD program for GNU. So functions and API will be created in High level C for easy usage of LibreDWG.
  • Bison - partial orders precedence and associativity In Bison grammars, provide a way to declare precedence and associativity of symbols with a partial order to detect unwanted conflict resolutions. Unify the precedence declaration system with the %dprec rule for GLR.
  • Blogging System for MediaGoblin MediaGoblin is currently used as free platform for media publishing programs. A large number of users constantly upload media and hence having a blogging system will enable them to brag about the content that they add. I propopse to add blogging system to MediaGoblin as a separate plugin by reusing components such as MediaEntry, MediaTag, Collection etc from the existing infrastructure. With a blogging system, MediaGoblin can be used as an alternative to tumblr. I also propose to implement oEmbed protocol to provide embedding support in MediaGoblin.
  • Emacs - VC Modernization GNU Emacs comes with a generic version control interface called VC. VC commands work with several different version control systems; currently, it supports GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS, SCCS/CSSC, and Subversion. Version control systems provide you with three important capabilities: reversibility, concurrency, and history. However, there's a lot of work to do in VC, such as improving dealing with branches and dealing with push/pull operations. This project will add/change/clean up features that are needed for modern version control systems.
  • Emacs XWidgets Emacs XWidgets is an experimental branch to enable embedding GTK widgets inside an Emacs window. For example, this permits Emacs to render HTML pages with WebKit. The goal of this project is to improve the current implementation by converting C code to Elisp code and to work on the GObject introspection integration. My mentor for this project will be Joakim Verona, the developer of this branch.
  • Emacsy, An Embeddable Emacs-like Library for GNU Guile Scheme Emacsy is an embeddable Emacs-like library aimed at non-textual applications. Emacsy is the Emacs OS minus the text editor. Its aim is to provide the following features: keymaps, minibuffer, recordable macros, history, tab completion, major and minor modes, and a comprehensive online help system. And make these features easy to integrate into any interative C/C++ application. Emacsy is not a text editor. Emacsy is an attempt to bring the Emacs way of doing things to other applications natively.
  • GNU Octave - Incomplete sparse factorizations ichol, ilu According to the ideas page, the GNU Octave project can be enriched by implementing methods for Incomplete Sparse - and LU-Factorization, that are part of MATLAB for example.
  • GNU Octave The "Agora" My idea includes to re-shape the Agora website to include the documentation, help and support and improve the way by which the users share and download the snippets and bundles.
  • GNU Octave: Improve binary packaging The aim of this project is to simplify the process of building Octave from source and easily generate binary packages for Windows and Mac OS X. Currently Windows or Mac OS X users have to follow a very complex and long procedure in order to install Octave. This project will not only ease Windows/Mac OS X users of Octave, but will save a lot of time of package maintainers as well.
  • GNU Octave: Improve JIT compiling Octave's interpreter is very slow on some loops. There is already an initial implement of a just-in-time compiler (JITC) in LLVM. But it still lacks some features. This project consists in understanding current implementation and extending it so that functions and exponents (e.g. 2^z) compile with the JITC.
  • Gnucap The addition of command and output compatibility plugins to make the Gnucap more efficient.It will be a replacement for the advanced commercial simulators for some purposes.
  • GNUnet - Creation of a GUI for the GNUnet PlanetLab/Parallel Deployment tool Implement a GUI for GNUnet's parallel deployment to to control large scale experiments on hundreds of nodes.
  • GNUstep: Opal-backed rendering system for gnustep-gui in gnustep-back GNUstep currently offers a number of rendering backends inside gnustep-back for its AppKit implementation, gnustep-gui, such as xlib and cairo. This proposal primarily involves adding a new rendering backend based on GNUstep's own graphics library, Opal. This will benefit platform compatibility, and various integration efforts.
  • Guile-Emacs Replace the Elisp interpreter with Guile's Elisp compiler
  • Improving GNUnet's adhoc connectivity with a bluetooth transport The project consists in creating a bluetooth transport plugin which will improve GNUnet's ad hoc capabilities. The improvement will be available both on Windows and on Linux distributions.
  • Integrating GNUnet and PSYC Design and implemention of the multicast, PSYC, PSYCstore and social component of GNUnet.
  • LibreDWG Decode Refactoring LibreDWG GNU is a library programmed in C language for reading and writing DWG(DraWinG) files. DWG is binary file format for storing 2-D and 3-D design data and meta data. LibreDWG supports three versions of DWG : DWG 2000(fully implemented), DWG 2004(partially implemented), DWG 2007(partially implemented). Functionality of last two versions is not complete.So, it needs to finish the decoding part of these versions. Partially decoded functions of these DWG versions are in a single file. As a consequence, it requires refactoring and proper developer's documentation.
  • Mediagoblin Pluggable User Authentication & Implementations Convert mediagoblin's current authentication system to a plugin authentication system and provide plugins for basic auth, OpenID, Persona, and LDAP support
  • Octave - image processing of ND images The Octave language is naturally suited for image processing which has lead to its success in this field. Most of the functions for this purpose have already been implemented but are unable to cope with ND (multidimensional) images, a common occurrence in the medical and biological fields. The proposed project aims at expanding Octave and its image package to support ND images.
  • Octave - Tex/LaTeX markup I’m choosing to add TeX/LaTeX markup to text objects in OpenGL plots as my project for this year of GSoC. I would like to build my solution based on the approach used by a similar effort in the matplotlib community: The solution will first extract the LaTeX formatting from the code, create a TEX file, which will be then converted to a DVI file using the LaTeX system. Then using dvipng the DVI file will be converted to a PNG file, and ‘pasted’ onto the OpenGL rendered graph.
  • Octave Numerical Project - General purpose Finite Element library Among the possible projects proposed I would like to develop the "General purpose Finite Element library"
  • Octave: Fix audio processing Implement PortAudio based audio playback and recording functionality corresponding to audiodevinfo, audiorecorder and audioplayer in MATLAB. Fix legacy functions so that they use this new framework. Implement other audio related functionality in Octave within this scope.
  • Prolog For Java - Rewrite The Parser This document is my proposal for working for GNU Prolog For Java. I would be rewriting the parser such that it supports UTF-8. The parser needs to be rewritten as the old javacc code doesn’t compile to working java in modern javaccs. The parser may throw errors or become non-terminating if unicode occurs in it's input. Extensive testing has to go in tandem with the change in code of the parser to make it better.
  • Recutils - Add Python bindings to Recutils GNU Recutils is a set of tools and libraries to access human-editable, plain text databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. The aim of the project is to add Python bindings to librec, the C library of recutils.
  • Search Interface for MediaGoblin Search is an important tool for a web application which lets a user look for a piece of information in a pile of data and improves the usability of a site. MediaGoblin lacks a search interface and it being a platform for sharing of media, it is of utmost importance that we provide a search interface. There are various open source search engines such as Whoosh, ElasticSearch, Xapian that can be integrated with MediaGoblin. This project aims at researching about the best search engine that can be integrated with MediaGoblin according to our use cases and preferences and then implementing it in a way.
  • Wget: Move Test Bench Suite from Perl to Python. Rewrite the testing environment for Wget in Python. This is required since although Perl is a powerful language, it's syntax is quite non-intuitive to the C Programmers who write code for Wget.