GNU application for Summer of Code 2011

From LibrePlanet
Jump to: navigation, search

For GSoC 2012, see GNU_application_for_Summer_of_Code_2012

This page is intended to summarize information regarding GNU application and participation in Google Summer of Code 2011]. Basically GNU acts as an umbrella organization for GNU packages. Larger packages such as GCC usually apply separately, but that is not a rule. It is up to the package maintainers whether they are applying as GNU or as the package itself.

Please feel free to add any useful information regarding GNU SoC11 application to this page.

When appropriate, all information here will be uploaded to http://www.gnu.org/software/soc-projects/ideas-2011.html

This year, Rodrigo Rodrigues da Silva (pitanga at gnu dot org) is handling the organization application for GNU. Rodrigo, Thomas Schwinge and Paolo Bonzini are the organization administrators.

Questions should be directed to the summer-of-code@gnu.org mailing list.

Contents

Ideas

Paste here your ideas or a link to your ideas page. If you need some inspiration on how it should like, please take a look at last year's ideas page

Example project 1

  • Link to package's home page
  • Link to mailing list for students who would like to get more information about ideas and application
  • Link to ideas page
  • Any other useful info

Example project 2

  • Link to package's home page
  • Link to mailing list for students who would like to get more information about ideas and application
  • Any other useful info

Describe idea 1

foo

Describe idea 2

bar

   END OF EXAMPLES

GNU Autotools

  • Description: Automake is a tool for automatically generating `Makefile.in' files compliant with the GNU Coding Standards. Automake requires the use of Autoconf. Autoconf is an extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of M4 macro calls.
  • Home page: http://www.gnu.org/software/autoconf/ http://www.gnu.org/software/automake/
  • Contact: automake@gnu.org

Project 1: Interfacing with a test protocol like TAP or subunit

Currently, Automake's simple tests as well as Autoconf's Autotest each use their own testing output. Automake-generated Makefiles could be consumers of the protocol for third-party testsuites. Automake-generated simple testsuites (TESTS) and Autoconf-generated Autotest testsuites could be producers.

This project would entail both investigating the possible protocols, advantages of either step, prototyping an implementation, and getting it ready to merge into the code. Each step on its own would already be useful on its own, and small enough to be completed within the given time frame.

Project 2: Exploit more features of GNU make in Automake

Automake could (optionally) exploit more features of GNU make, with an eventual goal of reimplementing some of the functionality in GNU make, both for efficiency and for more ease of use. When a project using Automake requires GNU make anyway, it would be nice if Automake could play along better with GNU make-specific notation in the Automake special variables (like foo_SOURCES etc).

Mentors

  • Ralf Wildenhues
  • Eric Blake (backup mentor)

GNU CLISP

  • Description: GNU CLISP is an implementation of Common Lisp, a high-level, general-purpose, object-oriented, dynamic, functional programming language.
  • Home page: http://clisp.org
  • Contact: clisp-devel@lists.sf.net
  • Help Wanted

Finish the multi-threading interface

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.

Embed CLISP into your favorite application

Embed CLISP into your favorite application, e.g., VIM, Firefox, Gnumeric, or OpenOffice. This might require some additional API in CLISP.

Mentors

  • Vladimir Tzankov
  • Sam Steingold
  • Bruno Haible

GNU Denemo

Project 1: Create functions for all graphical LilyPond glyphs

Create a set of commands for the user to insert all possible LilyPond/Music glyphs, defined in the LilyPond font. These are nearly all musical signs of today and the past, common and uncommon. Adding them to Denemo will make it a comprehensive notation editor. Needed student skills: Essential: Extensive knowledge of musical notation and music theory. Knowledge of Scheme. Useful: Knowledge of LilyPond.

Project 2: Make midi/audio output realtime-capable

Denemo creates MIDI messages to use them with its internal Fluidsynth-sampler or send them out via the Jack Audio Connection Kit. This procedure is not realtime-safe yet. Graphical computation and controlling Denemo during playback creates playback-glitches. In order to fix this the midi/audio subsystem should run in its own realtime-thread and get priority. Needed student skills: Programming in C, experience in threads and realtime programming. Useful: Knowledge of MIDI and the Jack Audio Connection Kit.

Mentors

  • Richard Shann (Maintainer)
  • Jeremiah Benham

GNU FM

Mentors

  • Mike Sheldon
  • Jørgen Bøhnsdalen

GNU gdb

GNOWSYS

  • Description: GNOWSYS is kernel for semantic computing.
  • Home page: http://www.gnu.org/software/gnowsys
  • Contact: Students desirous of joining should join gnowsys-dev@gnowledge.org

list to discuss their projects.

Collaborative Concept Mapping Activity in Sugar Learning Platform 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. The application is required to have three modes: mindMap-mode, conceptMap-mode and conceptMap-mode-with-storage-gnowsys. Python and pyGTK are prerequisites for doing this project.

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 memcache and pgpool will be an additional asset.

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.

Synchronization of Data between gnowsys servers

Two 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.

GNU Guile

CPAN for Guile

Guile needs a CPAN-alike. See the thread on guile-devel for more discussions. It looks like dorodango is a good start, but needs adapting for Guile, and it would be nice to use something stowfs-like locally as well.

Other ideas are possible; start a thread on guile-devel for more info.

Mentors

  • Andy Wingo

GNU Hurd

  • Description: The mission of the Hurd project is to create a general-purpose kernel suitable for the GNU operating system, which is viable for everyday use, and gives users and programs as much control over their computing environment as possible.

In traditional operating systems, most system functionality is provided by the kernel, and thus cannot be easily modified. The Hurd on the other hand -- following the GNU spirit of giving users more control over the software they use -- implements a unique design, which makes it feasible to change almost everything, down to the core features of the system.

While on other systems, such changes would require a lot of effort and special privileges to rebuild the system core, with the Hurd this is not necessary: the extensible architecture enables users (or applications) to simply modify their local system environment at any time, while leaving the rest of the system in place.

The most obvious example is the completely decentralized VFS mechanism: it can be extended in almost any imaginable way, simply by setting up suitable server processes (translators). Not only does this empower users, but also it helps application development: desktop environments such as GNOME for example, when making use of these possibilities, wouldn't need to create their own VFS mechanism -- they simply could extend the system VFS to suit their needs.

One major element of the design which enables this extensibility, is the use of a true multiserver microkernel architecture. The Hurd is quite unique in being the only general-purpose multiserver microkernel system in development today, that is nearly ready for everyday use, and offering almost perfect UNIX compatibility. (About 65% of all packages in the Debian repository are available for the Hurd.) The "general-purpose" and "everyday use" bits are decisive here: all other existing true microkernel systems are either research projects not nearly complete enough for actual use; or limited to embedded systems and other special purposes; or both.

GNU Classpath

IcedRobot

rms said IcedRobot may participate in GSoC under the aegis of GNU.

Kawa

  • Description: Kawa is best known as a Scheme implementation for the Java platform. It compiles Scheme to java bytecodes. It is also a general framework for implementing dynamic languages, and includes a full implementation of XQuery and the beginnings of implementations of Common Lisp and Emacs Lisp (JEmacs).
  • Home page: http://www.gnu.org/software/kawa
  • Ideas page: http://www.gnu.org/software/kawa/Ideas-and-tasks.html
  • Contact: kawa@sourceware.org

Mentors

  • Per Bothner (Maintainer)
  • Helmut Eller
  • Jamison Hope

GNU LibreDWG

  • Description: GNU LibreDWG is a free implementation of the .dwg file format, a secret format used by many CAD applications.
  • Home page: http://gnu.org/s/libredwg
  • Contact: libredwg@gnu.org
  • Ideas page

GNU Gnash

GNU Prolog for Java

Implement part 2 of the ISO standard - Modules

Currently GNU Prolog for Java only implements part 1 of the ISO standard it should implement part 2 - Modules as well #30281. There are also the extensions to part 1 #30395 which have not yet been implemented and support for part 3 - Definite clause grammar rules could also be added.

Implement part 5 of the ISO standard - Threads

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.

Rewrite the parser

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.

Add security constraints to running Prolog code

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.

SLIB

GNU XaoS

Description: XaoS is a fast real-time fractal zoomer, created by Jan Hubicka and Thomas Marsh in 1996. During the past 15 years dozens of volunteers contributed to the code. Now XaoS is maintained by J.B. Langston and Zoltan Kovacs, mentors for GSoC 2011.

Useful links and information

Form

   We need to fill a long form before submitting the application. Please help!

Organization Name

GNU Project

Description (required)

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 an organization in Summer of Code 2011, GNU aims to act as an umbrella for all of its packages.

Home page (required)

http://gnu.org

Main Organization License (required)

GNU General Public License (GPL)

Why is your organization applying to participate in GSoC 2011? What do you hope to gain by participating (required)

The primary goal of our participation is to find and introduce new long-term contributors to GNU, since the development of most GNU packages rely heavily on volunteer work.

The mentor-student setup, together with the period of focused work during the summer session, also offer a unique opportunity for kick-starting innovative new projects apart from mainline development, which are hard to fit in among the normal day-to-day development work. This is particularly important for GNU.

Last but not least, GSoC participation always yields a lot of valuable input from new people, and helps spreading technical and other knowledge about the GNU Project among actual and potential contributors. Since GNU is a very large and broad project, it is important that the community know what GNU is and how to contribute to it. Having well defined ideas and opportunities help newcomers to get into the actual development.

If accepted, would this be your first year participating in GSoC?

No.

Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.

Yes. GNU has participated in GSoC since 2006. Being an Umbrella organization, our main challenge is in coordinating between the various suborganizations (packages) within our organization and getting them involved. In order to achieve more integration and better coordination, a GSoC-specific list was created in 2008, where the organization administrators, mentors and students could organize and discuss GSoC participation in a broader sense.

Every year, some of the participating packages are new to GSoC, which means they don't have experience in evaluating the quality of student proposals. In spite of this, because we had more experienced GSoC participants tutor the newcomers, we managed a very good success rate last year, with a lot of useful contributions to various parts of the GNU Operating System.

In 2010 we had a higher number of proposals if compared to 2009, even for first time projects. Having a commitment with high quality, we did reject some of the proposals, not filling all of the slots that had been provided to us. In the end, we had a 100% passing grade and a good retention level, allowing us to dub 2010 as a very successful year.

Most of the outcome work is already integrated into the mainline codebase (e.g. LibreDWG), while some are still staging and waiting to mature, possibly through new GSoC proposals (e.g. Classpath and Guile).

If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6 students passed in 2006.

2010: 14/14 passed

2009: 7/8 passed

Previous years: not available

What is the URL for your ideas page?

http://www.gnu.org/software/soc-projects/ideas.html

What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2011. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.

summer-of-code@gnu.org (http://lists.gnu.org/mailman/listinfo/summer-of-code) is the mailing list where students should go to get general information about GNU participation in GSoC. Each GNU package has its own development list, available through the ideas page, where students should ask for specific information.

What is the main IRC channel for your organization? (required)

\#gnu at irc.freenode.net

Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2011 site.

http://www.gnu.org/software/soc-projects/guidelines.html

What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible. (required)

Choice of mentors is up to the various suborganizations. Usually maintainers or the most active developers act as mentors, guaranteeing that the students are in good hands.

What is your plan for dealing with disappearing students? (required)

We encourage all mentors to keep in touch with their students as much as possible, so any problems with motivation or technical difficulties are discovered and addressed as soon as possible. This should reduce the risk of students dropping out entirely.

The suborganizations usually have someone in charge of the GSoC participation, overseeing the progress of all GSoC projects within the suborganization. Being closer to the respective projects and mentors, they are a great help to the main organization administrators, who oversee the process as a whole and take action in last case.

What is your plan for dealing with disappearing mentors? (required)

Being among the main developers in the respective suborganisations, our mentors are usually very reliable.

We will also encourage our suborganisations to keep most communication with the students public, so other members of the respective communities can easily take the place of a mentor dropping out.

What steps will you take to encourage students to interact with your project's community before, during and after the program? (required)

We have to rely on the respective communities to integrate the students as well as possible, so they are motivate to continue working with them. We will encourage the suborganisations in this.

If you are a small or new organization applying to GSoC, please list a larger, established GSoC organization or a Googler that can vouch for you here.

N/A

If you are a large organization who is vouching for a small organization applying to GSoC for their first time this year, please list their name and why you think they'd be good candidates for GSoC here:

N/A.

Anything else you'd like to tell us?

TODO

Backup Admin (Link ID)

Jose Marchesi, AFAIK. Need Link ID. Olaf Buddenhagen (LinkID antrik) can jump in if necessary.