GNU application for Summer of Code 2012

From LibrePlanet
Revision as of 11:19, 24 March 2012 by Cwebber (talk | contribs) (GNU MediaGoblin)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

For last year's page, see GNU_application_for_Summer_of_Code_2011


Packages applying under the GNU umbrella must send their ideas to the summer-of-code@gnu.org mailing list so they get incorporated in www.gnu.org/s/soc-projects. Adding the ideas to this wiki page is _not_ enough!


This page is intended to summarize information regarding GNU application and participation in Google Summer of Code 2012. 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's SoC12 application to this page.

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

This year, ??? is handling the organization application for GNU. ??? 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

GNU Foo

  • 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

GNU Bar

  • 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 MediaGoblin

GNU MediaGoblin is a free software media publishing system for the web aiming for decentralization and extensibility.

  • Homepage
  • Ideas for GSoC: [[1]]
  • Prerequisites: Python skills and ideally decent HTML and CSS skills

GNU Zile

  • Home page
  • Ideas for GSoC and contact details: GNU Zile
  • Prerequisites: C/POSIX skills, an interest in portability and the UNIX philosophy.

For last year's proposals, see GNU_application_for_Summer_of_Code_2012

GNU Emacs Org-mode

Org-mode is an outliner for GNU Emacs. The Org Mode community prepared its own Org-mode GSoC 2012 ideas page. Here is a short summary of the proposed project ideas:

Org-mode/ Picolisp interaction

Picolisp is a lisp dialect and a web application framework.The purpose of this project is to combine Org-mode and Picolisp to create a fullfledge web programming framework inside GNU Emacs using Picolisp as an infrastructure.

Notebook" like console interface on top of Org Mode/ Babel

Implementing a multi-programming-language "notebook" like console interface build on top of Org-mode and Babel (with both Emacs and HTML interfaces).

Asynchronous code block execution for Org Babel

Adding support for asynchronous code block execution.

Piping results between Babel code blocks

Adding support for piping results between code blocks allowing many blocks to run concurrently (probably best combined with asynchronous execution).

Handling Babel code block output written to STDERR

Adding support for handling output written to STDERR.

Git merge tool for Org files

This project idea is about writing a git merge driver for Org mode files, in the way git-merge-changelog does this for GNU style ChangeLog files.

Org Mode specific diff and change tracking

There are interesting ideas with regards to change tracking and a synchronizing algorithm able to mix diff3 with the Org Mode tree synchronizer.

GNU TLS

Strict certificate path validation

Currently GnuTLS implements a simple and straightforward certificate path validation algorithm. However a complete validation algorithm, such as the one described in RFC5280, requires the consideration of several factors that are currently ignored (certificate policies, path constraints etc). The target of this project is to implement the complete certificate path validation algorithm from RFC5280.

TLS and DTLS extensions

Two extensions are to be implemented:

  • DTLS Heartbeat
  • Certificate status request

The former is an extension to the datagram TLS protocol described in rfc6520 to support heartbeat messages in order to identify the status of the peer (dead or not). The latter provides a way for an HTTPS server to provide a fresh OCSP response to the client, described in RFC6066. This saves the client from the burden of having to connect to the CAs OCSP server in order to get a fresh certificate status.

Faster elliptic curve scalar multiplication

Improve the scalar multiplication in elliptic curves by implementing the wNAF based method as well as the Yao-DBNS method.

Interoperability tests and fixes for PKCS #12 and PKCS #8

Improve the support for encrypted private keys and certificates, by implementing the algorithms and formats used by other popular implementations (openssl, windows).

GNUnet

GNUnet is a framework for secure peer-to-peer networking organized in a layered fashion.

GNUnet already offers an API (mesh) that allows to create unicast and multicast tunnels in restricted route networks/mesh networks, allowing two peers to communicate independently of the NAT situation or any other factor.

Live talk/videoconference

  • Your task

Your task would be to use the tunnel funcionality and build a point-to-point multimedia capability on top of it, allowing users to simultaneously send and receive video and/or audio streams. The application would have to take care of bitrates, adjusting quality, some security aspects, etc.

  • Expected results

The expected result is a program built on top of the GNUnet architecture which will allow a two way multimedia communication: to have a live conversation with another person over the decentralized P2P network.

  • Prerequisites:
    • Have a good understanding of C and the related developement tools.
    • Be confortable reading other people's code to make the most of the exisiting GNUnet APIs.
    • Have some knowledge of multimedia and network interactions (buffering, jitter, losses, etc).
    • Enjoy designing and programming distributed applications and protocols.
    • Some experience with GUI programming.
  • Mentor: Bartlomiej Polot GNUnet team member and the main mesh developer.

Multimedia Streaming

  • Your task

Your task would be to use the tunnel funcionality and build an efficient multicast multimedia capability on top of it, allowing users to send or receive video and/or audio streams. The application would have to take care of qualities, permissions, channels, etc.

  • Expected results

The expected result is a program built on top of the GNUnet architecture for one way multimedia communication. The uses of this program could be sending or receiving channels of radio (auido only), TV (audio/video), or remote surveillance (video only) over the decentralized P2P.

  • Prerequisites:
    • Have a good understanding of C and the related developement tools.
    • Be confortable reading other people's code to make the most of the exisiting GNUnet APIs.
    • Have some knowledge of multimedia and network interactions (buffering, jitter, losses, etc).
    • Enjoy designing and programming distributed applications and protocols.
    • Some experience with GUI programming.
  • Mentor: Bartlomiej Polot GNUnet team member and the main mesh developer.

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.

Useful links and information

Form

   We need to fill a long form before submitting the application. Please help!
 This information was submitted in 2011. It might need some cleanup/update.

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.