GSoC/GCI Archive
Google Summer of Code 2015

GNU Project

License: GNU General Public License version 3.0 (GPLv3)

Web Page:

Mailing List:

The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is entirely free software: the GNU system.


  • [GNU Wget] Improve Wget's security - Version 2 I propose a project to improve Wget's security by adding support for some of the most widely used and regarded security mechanisms. If this proposal gets accepted, by the end of the project, Wget will be able to handle the HSTS extension to HTTP, and to interact with an FTP server via SSL/TLS. This is a copy-paste of the original document, which is hosted at Google Drive, and can be found in the additional info URL.
  • GNU Lilypond MusicXML Export GNU Lilypond has been a part of the GNU project since 1996 and has provided users with free rights to text-based music engraving software. The aim of this project is to provide a functional MusicXML export option for GNU Lilypond users. MusicXML is a standard music notation format which allows digitally-engraved music to be converted between different notation software.
  • GNU Octave: Optimization package: Add lsqcurvefit,lsqlin,lsqnonlin/etc The Optimization package is missing functions for 'lsqnonlin', 'lsqcurvefit', 'nonlin_curvefit', 'nonlin_residmin', 'lsqnonlin', 'fmincon', 'quadprog' etc. The first priority is to implement these as using back-end algorithms already present in the Optimization package, the documentation for leasqr, nonlin_residmin, nonlin_curvefit, nonlin_min. Further extension would be to add new optimization algorithms or variants in the back-end to those already implemented.
  • GNU Taler - libfints FinTS is a standard for online payments, transactions, history and everything else needed for end-user online banking and transaction processing by a payment provider. Based on HBCI this standard is being used by many German banks including Sparkassen, Deutsche Bank and Commerzbank. The Goal of this Project is to implement a simple and secure library that enables applications such as GNU Taler to easily implement online banking functions needed for basic customer-merchant transactions.
  • guix - Binary package distribution through GnuNet The project aims to provide a practical decentralisation distribution mechanism for binary packages, using GNUnet’s networking layers. In that model, users would be able to automatically share binaries they have built locally, and to install binaries built by other users. Source:
  • Implementation of ALG-based NAT traversal for GNUnet The goal of this project is to research and implement in GNUNet an ALG-based NAT traversal method such a FTP/SIP-based hole punching and STUN support.
  • Improving and fixing Core Animation for GNUstep GNUstep is a free software implementation of the Cocoa (Apple’s native object-oriented API). One of the libraries in its implementation is Core Animation. In its current state, it could be used only for games and demos; it is fairly incomplete. Some of the problems include low performance, bugs etc. Primary goal of this project is to develop it to be usable in practice: in applications and on mobile devices.
  • MEDIAGOBLIN: ANDROID UI MAKING USE OF PUMP API SUMMARY - Create a MediaGoblin Android application similar to Instagram using the API - Ensure application is F-Droid approved
  • Octave - TISEAN package TISEAN is a suite of code for nonlinear time series analysis. It is old but there are many algorithms there that haven't been re-implemented as libre software. The objective is to integrate TISEAN as a octave package as it was done for the Control package. The functions cuould be integrated in the existing time series analysis package
  • Physical memory management The GNU Mach kernel maps all physical memory into the kernel address space, and uses virtual memory to provide continuous chunks for kernel objects like IPC tables. This imposes a limit of ~250000 ports. It is the most pressing scalability issue. We propose to replace the page allocator by a buddy allocator to provide continuous chunks of memory directly from the physical memory, to use it as a backend for the slab allocator, and to replace the IPC tables by a more scalable data structure.
  • Porting Guix to GNU/Hurd The aim of this project is to port Guix to GNU/Hurd, so it would allow Guix to cross-build the bootstrap binaries needed to bootstrap itself in a Hurd System, allow the cross-building and native building of packages for the Hurd, and make the required modifications in Guix so it can produce a virtual machine image that boots into such a system.
  • wget - Speed up Wget's Download Mechanism This project is about adding two performance enhancements to wget: conditional GET requests and TCP Fast Open.