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 many other ways.
What is this?
Google's Summer of Code
program no longer presumes that projects call themselves “open
source” (a term we cannot accept),
so we can participate in it.
For general information about the program, check the main page at Google for Summer of Code. GNU has participated in the Google Summer of Code program as a mentoring organization since 2006.
All GNU-related organizational Summer of Code discussion happens on
the mailing list email@example.com
(subscription info here). Feel free to subscribe if you want to be involved, either as a mentor or student.
Actual development discussions take place on the lists for the
individual GNU packages.
We have an idea list for GNU-related projects
for students to implement as part of the Summer of Code. Please
read the information on this page too! We've tried to ensure that each
- is reasonably self-contained;
- can be completed in the two months available;
- has one or more mentors who can provide guidance as
a student works on the project.
of “student” used by Google is reasonably broad. If you
know somone who already works on a GNU project and meets the eligibility
requirements, please encourage them to submit a proposal.
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, as described in the following.
First, submit your application early. By doing so, it will be given
a greater share of attention than is possible for applications submitted
at the last minute. Many applications are submitted in the last few
days; there is no time for us to to give such last-minute student
submitters feedback on how to improve their proposal.
You might submit a proposal unchanged (though you will need to
include additional information, as described below), or you might adapt
it. Changes to the proposal could include:
- You think the project as suggested is too large and you can only
feasibly complete part of it; if so, make sure your proposal covers a
resaonable subset of the functionality (that is, something which is
useful without the rest of the project being implemented).
- You think the project as suggested is too small; in this case you
might want to extend the idea, combine projects, etc.
- You like the basic idea of the project but it's not such a good fit
for the skills that you have; in this case please feel free to suggest
an alternative, but try to remember that the idea is for the software to
be useful for its existing and potential users (for example, enhancing
GNU find to allow the filesystem to
be searched using Prolog may be interesting but is unlikely to set the
user base afire with enthusiasm).
In any case, it is wise to talk with the existing maintainers and
other developers first. You can find the current contacts for a package
using the Free Software
Directory. You might also find it helpful to discuss your idea with
the members of the relevant GNU mailing list for
the package. Many packages have IRC channels as well.
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.
Finally, please put the GNU package name (gdb, findutils, etc.) as
the first word of the one-line Title/Summary of your application (e.g. 'gdb - Improve reverse debugging').
Proposals are submitted via the Google Summer of Code 2013 web site (aka Melange).
When proposing your project, please make sure you include the following
information. You must follow this project template in order to have your proposal considered!
- Your name
- If we include your work in the GNU Project and a copyright assignment
is required, 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, except for prepending the package name,
unless a change is needed to reflect the fact that your propsal is not
quite the same as the suggestion.
- Please include this, rather than just referring to the suggestion,
to help avoid misunderstanding.
- Please explain how users will benefit from your project. How will
the GNU project itself benefit?
- What software will be added or changed? What parts of the
project's code will be affected? Which documentation will you update?
When we read this section of your proposal, we will be trying to figure
out how well you understand what needs to be done. We're more likely
to accept proposals from students who show us that they know what
needs to be done.
- 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. An important part of the
mid-term evaluation is that it's the point where everybody has to make
a judgement about whether the project is going to be completed in
time. It's important to have specific criteria for both the mid-term
evaluation point and the for the fully-completed project (that is: how
will you know where you're half-way, and how will you know when you're
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?
How will everybody know whether things are on-track at the half-way
Remember to mention any periods during the summer when you won't
actually be available to work on the project (though remember,
the Summer of Code project is expected to be your main activity).
- Our experience with earlier Summer of Code projects is that good
communication is essential to students' success. Students
who communicate clearly and frequently with their mentor are more
likely to be successful. Please indicate the ways in which you will
contact your mentor (and a schedule for doing it) to ensure that
they're always aware of your progress. While email is useful,
real-time forms of contact help a lot. Also, how will your mentor be
able to see your code as it progresses?
- 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?
Of the skills that you will need to complete the project, which do you
already have? What will you need to lean?
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 need to do
- Comply with the GNU coding standards.
- Write good documentation as well as good software.
- Work with other members of the project to ensure that your work
fits well with the rest of the project you are working on, and with GNU
- Most projects require you to make a copyright assignment or
disclaimer to the Free Software Foundation, in which case your
mentor will send you the necessary forms. In that case, and if necessary, you will also need to obtain a copyright disclaimer from your school.
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 they are 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 (until the
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 firstname.lastname@example.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, if you need one.