[image of the Head of a GNU]

GNU guidelines for Summer of Code projects

First, thanks for stopping by. The GNU Project needs volunteers to improve the GNU operating system, and to help the Free Software Movement in various other ways.

What Is This?

This year, Google's Summer of Code program does not presume projects call themselves "open source" (a term we cannot accept), so we can participate in it.

The idea list for GNU-related projects for students to implement as part of the Summer of Code is on a separate page. Please read the other information on this page too! We've tried to ensure that each project:

The definition of the word "student" in use for the Summer of Code program is quite broad; go check it to see if you might qualify. If you know somone who already works on a GNU project and meets the eligibility requirements, please encourage them to submit a proposal.

This page is primarily directed to student programmers wishing to participate, but if you are not yourself eligible for the Summer of Code program, you can still help; read on!

What to do with the suggestions

If you are an eligible and interested student, read through the list and note the projects you are interested in. You, as the student programmer, then submit a proposal to Google; see the next section. You might submit the proposal unchanged, or you might adapt it, for example:

In any case, if you do want to modify an existing project suggestion, or if you have an idea for a completely new project for a GNU package, it would be wise to talk with the existing maintainers and other developers first. You can find the current contacts for a package using the FSF/UNESCO Free Software Directory. You might also find it helpful to discuss your idea with the members of the relevant GNU mailing list.

Please remember the suggested projects are not coursework assignments. If you'd like to work on the Summer of Code, you should satisfy yourself that you understand the project you propose to work on, and that you have a good chance of completing the necessary work within the time available.

Your proposal

Proposals are submitted via the Google Summer of Code web site. When proposing your project, please make sure you include the following information:

Your name
If we include your work in the GNU Project, a copyright assignment will be required, so we will need to know your name.
Your email address
We need to be able to communicate with you!
The name of the project.
If your project is from the ideas list, please use the same title, unless a change is needed to reflect the fact that your propsal is not quite the same as the suggestion.
Summary
Please include this, rather than just referring to the suggestion, to help avoid misunderstanding.
Benefits
Please explain how users will benefit from your project. How will the GNU project itself benefit?
Deliverables
What software will be added or changed? What parts of the project's code will be affected? Which documentation will you update?
Plan
Please indicate how you and your mentor will track your progress as you work on the project, and how the mid-term evaluation of your project will be made. What will you be working on, and how long will each part of the work take? What objective results will be visible at each stage? How will you know if you are ahead or behind schedule? If you are unable to complete the project, are the results from part-way through still useful? How?
Qualification
Why did this project appeal to you? How will you benefit from it? Why are you particularly suited to work on this? What will you do once the project is "finished"? Have you worked on any Free Software before?

Please feel free to ask questions about the overall Summer of Code process at Summer-Discuss-2006@googlegroups.com

Your Code and Documentation

The GNU Project has standards relating to how software is developed and how it is documented. These are designed to make the resulting software useful, maintainable, easy to install, and most importantly make sure that it will remain free (as in freedom). You will need to make sure you do several things:

  1. Comply with the GNU coding standards.
  2. Write good documentation as well as good software.
  3. Work with other members of the project to ensure that your work fits well with the rest of the project you are working on. If your project stands alone, that's fine; your mentor will be able to describe for you how to make your software GNUish.
  4. Make a copyright assignment or disclaimer to the Free Software Foundation.
  5. Obtain a copyright disclaimer from your school, if necessary.
Your mentor will be able to give you guidance on copyright matters. The GNU Project won't be able to incorporate your code until both the assignment and the disclaimer (if it is needed) have been taken care of, so please start that process as soon as your project is approved.

Summer of Code Project Suggestions

For the actual project suggestions, please see the separate page with the list of Summer of Code GNU project ideas.

We'll be updating this list as new projects are identified (but not after May 8, 2006, which is when student proposals are due).

Even if you are not an eligible student, coming up with good projects meeting the criteria above that benefit an existing GNU package is very welcome (the sooner the better). If you do, please contact the maintainer for the package. If you can find a mentor for the project (or can mentor it yourself, with the maintainer's consent), then email the idea to us at summer-of-code@gnu.org.

That is not the only list

There are other lists of things that need to be done on the GNU project. This list is not intended to replace them. However, the other task lists are mostly more open-ended, include larger and more complex tasks, and the tasks on the other lists don't come with a mentor; you will need to find one.
  1. A short list of high-priority political actions (mostly);
  2. the GNU Help Wanted task list;
  3. and a longer list of projects needing help, but this list is not limited to official GNU packages.