Please read the GNU Project's guidelines for Summer of Code projects.
Please note that you are not bound to use these ideas, you can propose a new project. It is a good idea to find a mentor and discuss the idea before submit it.
GNU is a large and complex project, and thus is subdivided into packages, which are relatively independent projetcts. In Summer of Code, GNU acts as an umbrella organization for its packages. The ideas here are grouped by package. The packages are listed in alphabetical order. Many packages have more than one suggestion, or even their own ideas page.
GNU Classpath, Essential Libraries for Java, is a GNU project to create free core class libraries for use with virtual machines and compilers for the java programming language.
GNU Classpath maintains a list of ideas here: http://developer.classpath.org/mediation/GoogleSoC2013.
GNU CLISP is an ANSI Common Lisp Implementation.
Most of the work has already been done by the project developers. The only major thing left to be implemented are thread safe hash tables. Since hash tables are used internally in CLOS, it is not viable to make them lockable. The current implementation should be replaced with lock-free open-addressing ones like described here: http://www.azulsystems.com/events/javaone_2007/2007_LockFreeHash.pdf The hardest part in this reimplementation is integration with GC because of weak relations. For more information see doc/multithread.txt in the CLISP source distribution.
GNU Emacs is the extensible, customizable, self-documenting real-time display editor.
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 GObjectIntrospection.
Gnucap is a modern post-spice circuit simulator with several advantages over Spice derivatives.
Gnucap maintains a list of ideas here: http://gnucap.org/dokuwiki/doku.php?id=gnucap:projects.
Contact:Al Davis (email@example.com)
GNUnet is a framework for secure peer-to-peer networking that does not use any centralized or otherwise trusted services. A first service implemented on top of the networking layer allows anonymous censorship-resistant file-sharing. Anonymity is provided by making messages originating from a peer indistinguishable from messages that the peer is routing. All peers act as routers and use link-encrypted connections with stable bandwidth utilization to communicate with each other. GNUnet uses a simple, excess-based economic model to allocate resources. Peers in GNUnet monitor each others behavior with respect to resource usage; peers that contribute to the network are rewarded with better service. GNUnet is part of the GNU project.
GNUnet maintains a list of ideas here: https://gnunet.org/gsoc2013.
GNU Guix is a purely functional package manager, and associated free software distribution, for the GNU system. In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection.
GNU Guix provides a transparent binary/source deployment model. A server can claim: “hey, I have the binary for /nix/store/v9zic07iar8w90zcy398r745w78a7lqs-emacs-24.3!”, where the base32 string uniquely identifies a build process. If you trust that server to provide genuine binaries, then you can grab them instead of building Emacs locally.
The “traditional model” has been to have a build farm build and serve binary packages. In that model, users trust the build farm to provide authentic binaries.
The project aims to provide a
Problems to be solved include the authentication of binary packages, user privacy, and the development of a user interface that makes it trivial to contribute package build results.
GNU Guix is currently a "userland" distribution: users can install it on top of another distribution, but it is not bootable yet. It provides around 400 packages, and can already be used to do some serious hacking, but it lacks nice graphical user interfaces.
The project aims at packaging one widely used desktop environment. The applicant can choose their favorite one, as long as it's neither too big (in which case it might be hard to package completely) nor too small (ie. a simple window manager). Some possible choices could be GNOME, GNUstep, KDE, XFCE or LXDE.
The goal of this project is to write a complete package management user interface for use in GNU Emacs. The UI would provide the same functionality as the guix package command, but using an interface similar to that of package.el.Mentor: Ludovic Courtès
The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).
Contact: firstname.lastname@example.org (to subscribe, see the list-info page).
GNU LibreDWG is a free C library to handle DWG files. It aims to be a free replacement for the OpenDWG libraries. DWG is the native file format of AutoCAD.
The SoC ideas for the Libre DWG can be found in the following webpage: http://libreplanet.org/wiki/LibreDWG/SummerOfCode
GNU Mediagoblin is a free software media publishing software that everyone can use.
The SoC ideas for Mediagoblin can be found in the following webpage: http://wiki.mediagoblin.org/GSOC_2013
Contact:email@example.com (please subscribe to the mailing list in advance)
GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable.
The SoC ideas for Octave can be found in the following webpage: http://wiki.octave.org/Summer_of_Code_Project_Ideas
GNU Prolog for Java is an implementation of ISO Prolog as a Java library (gnu.prolog). Last year a successful GSoC student revived it and made it compliant with part 1 of the ISO standard.
Currently GNU Prolog for Java only implements part 1 of the ISO standard it should implement part 2 - Modules as well.
There are also the extensions to part 1 which have not yet been implemented and support for part 3 - Definite clause grammar rules could also be added.
Support for threading inside Prolog code in GNU Prolog for Java would make it much more useful in multicore environments and there is a section of the ISO standard on this. It is likely that changes would need to be made to the core of the library as it was originally written without much thought about multithreading.
Currently the parser is very flaky and does not support UTF-8, it needs to be rewritten as the old javacc code doesn't compile to working java in modern javaccs and other compiler compilers should do a better job. See #30283 and #30780 for more details.
Currently all prolog code is completely trusted and can do anything that native java could do. However it might be interesting to add constraints that prevent it from performing certain actions and instead sandbox it. This way the host java application could recover from running non-terminating Prolog code gracefully.
Contact: firstname.lastname@example.org (to subscribe, see the list-info page).
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 goal this project is to write python bindings for librec, which is the recutils C library. This would allow the people to manipulate recfiles from python scripts.
The Free Software Foundation is the principal organizational sponsor of the GNU Operating System. Support GNU and the FSF by buying manuals and gear, joining the FSF as an associate member, or making a donation, either directly to the FSF or via Flattr.