Summer of Code projects for GNU
This page has the project suggestions for GNU's participation in Google Summer of Code 2010. (Project proposals for 2006, 2007, 2008, and 2009 are archived.)
Please read the GNU Project's guidelines for Summer of Code projects.
Most importantly, please make sure you include all the information requested. If you have questions, please ask summer-of-code@gnu.org (list info here).
Project suggestions
The ideas here are listed in alphabetical order by project. Many projects have more than one suggestion.
- Classpath - Denemo - GNUstep - Guile - GNOWSYS - Hurd - JACAL - libextractor & libmicrohttpd LibreDWG - MyServer - Prolog for Java - Screen - SLIB - XaoS -
Classpath
- Contribute to the Caciocavallo Project. Caciocavallo is a Toolkit written in order to easy the portability of Java to new platforms for the OpenJDK Challenge Contest. We are interested in students that can help us fix bugs and write test cases. One project that is particularly challenging is to rewrite the focus handling code. We are also interested in running JavaFX on top of Cacio. Another taks would be to adapt the rendering manager in the JDK in order to use different look and feel for Caciocavallo widgets and for Swing ones.
- Revive the Escher project. Escher is a pure java implementation of the client side of the XProtocol and is the library behind the XPeer code in Classpath. The project is not developed anymore but it still has its uses. We would like to see efforts to fix the remaining bugs and to implement the missing functionality, like completing the OpenGL subsystem for example or porting all the constants used in the code to Java emums.
- Contribute to the IcePick project. The IcePick webpage is here: http://icedtea.classpath.org/wiki/IcePick We would like to have contributors on this project
- CVMI. CVMI is another OpenJDK Challenge project hosted here: http://fuseyism.com/openjdk/cvmi/. We would like to see work done on this project. A related task would be to help porting gcj to use the OpenJDK class library.
Denemo
Please see this separate page for GNU Denemo.
See also this to-do list for GNU Denemo.
GNUstep
Please see this separate page for GNUstep.
Guile
- Further work on Guile Emacs integration (implementing elisp to the extent that Guile can replace Emacs' elisp implementation—has to do with compilers and Emacs hacking)
- Compiling other languages to Guile (Lua, finishing the JavaScript compiler, lazy languages like Nix's packaging language)
- Native compilation (many possibly implementations)
GNOWSYS
- Emacs Web Service. There are two existing projects (http://github.com/eschulte/simple-server and http://www.emacswiki.org/emacs/EmacsEchoServer) which provide some preliminary model to work on. Based on these projects, we intend to develop a web service that exposes Emacs functions and macros to any client (desktop or web client). This is required for web based semantic desktop (gnowser). The candidates are required to have elisp and CGI experience.
- Semantic Desktop. GNOWSYS can be used as a Triple Store, and is currently being developed to support collaborative ontology (systems) editing as well as creating applications by instantiating the developed ontologies. Sharing highly granular data (RDF triples) across applications is the central feature of Semantic desktops, and this can be achieved by developing such clients (either in gnowsys-mode of Emacs or as a gnome-gnowser). Depending on the expertize of the candidate we are looking for students with knowledge in pyGTK or elisp. Previous knowledge of RDF,OWL, XTM or other semantic web based applications will be an additional advantage.
- Visual Computing Studio. Developing a visual computing studio (IDE) based on the heterogeneous distributed computing model of GNOWSYS. We intend to develop a educationally useful programming workspace as found in Turtle Activity . Exposure to web service architecture, pyGTK and metaknowledge of structure of programs will be useful.
- Speed Optimization of writing and reading of GNOWSYS store. Benchmarking gnowsysApp_rc1 to detect bottlenecks and designing and implementing alternative parellelization of processing to enhance performance of GNOWSYS as a triple store. Very good knowledge of Python, postgresql, file system, and experience with handling large sets of data are preferred. Database optimization techniques like connection pooling will be required.
- Collaborative Concept Mapping Activity in Sugar with GNOWSYS as storage. A pyGTK based extension of the gnowser project to do refined concept mapping. Based on the codebase of Labyrinth Activity in Sugar, we intend to develop a full featured collaborative concept mapping application using GNOWSYS as a storage.
- Synchronization of Data between gnowsys serversTwo or more remote servers of GNOWSYS exchange messages between them, subscribe to parts of database and establish sync relationships (subscription). Automatic agent based synchronization should happen between the servers. This involves, determining the changes, messaging the changes to subscribed servers, and initiating transfer mechanisms using RDF based data exchange.
Good understanding of serialization of data, XML, RDF, and file transfer protocols, agent oriented services with good working knowledge in Python required.
Please discuss the projects in the gnowsys-dev@gnowledge.org mailing list if necessary. If students come with their own ideas, please write about them in the mailing list.
GNU Hurd
What is the GNU Hurd? 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).
Please see this separate page for our project ideas, as well as our student application form.
JACAL
- Code "Decomposition of Algebraic Functions"
- Code "Polynomial Interpolation"
- Add support for "Mathematical Markup Language"
GNU libextractor and GNU libmicrohttpd
GNU libextractor is a library used to extract meta-data from files of
arbitrary type. The goal is to provide developers of file-sharing
networks or WWW-indexing bots with a universal library to obtain
simple keywords to match against queries.
The TODO file gives a rough general overview of things to be done. Especially additional plugins for common file formats would be appreciated.
GNU libmicrohttpd is a library that provides an embedded HTTP server as part of another application. It is small, cross-platform, reentrant and supports IPv6 and HTTP 1.1.
The team would like to receive students' own ideas on how to improve both projects. We are also interested in applications or frameworks that build upon them, for example a library that makes web application development with libmicrohttpd easier (template/tag library) and/or helps with working around web security issues. Talk to us! You can find us on the IRC channel #gnunet and on the libextractor / libmicrohttpd mailing list.
LibreDWG
Please see this separate page for GNU LibreDWG.
MyServer
Please see this separate page for our project ideas.
Prolog for Java
GNU Prolog for Java would like to mentor students for GSoC, but doesn't have an ideas list together at the moment. Please see their web page for contact information.
Screen
Improve scripting support in GNU Screen. Currently, there is some support for scripting in lua and some support for scripting in python. A summer of code student will be expected to extend the scripting framework to provide greater range of functionalities available to a script. Interested students are encouraged to take a look at the work and the sample scripts in these repositories to get a feel of the work involved. Students can work on adding support for other scripting languages as well (e.g. perl, guile etc.).
SLIB
- Augment SLIB's discrete-fourier-transform package to work efficiently on non-power-of-two sized arrays. (more)
XaoS
Currently we need students who can help us in solving several issues, listed here.
Submitting ideas to this page
- If you are an eligible student and have an idea that is not listed here, you should propose it normally through the Google Summer of Code web site (after applications are open). Please discuss it with the package maintainers.
- If you are a GNU package developer, have an idea for a Summer of Code project for your own package, and can mentor it yourself, please email the idea at summer-of-code@gnu.org and one of the administrators will add it. (Simple HTML fragment in plain text preferred.) Please also recruit a backup mentor and tell us who that will be. Make sure that the description of your idea contains enough information (perhaps in the form of pointers to other information or mailing lists) for students to research the feasibility of them implementing your idea. More info.
- In all other cases (e.g., you are a developer with an idea for another package), please contact the maintainer for the package. If you can find a mentor for the project (or, hopefully, can mentor it yourself), then we will add it if it is feasible. The project must meet the Summer of Code criteria; see the guidelines.
Links
- Google SoC 2010 FAQ.
- 2010 timeline (from the FAQ).
- Google mailing lists and IRC (from the FAQ).
- Several GNU packages register separately in the Google Summer of Code. These include: GCC, GIMP, GNOME, Gnumeric, GNUstep.