Good you are here! What is GSoC about?
Google Summer of Code (GSoC) promotes open source software development by sponsoring students to work on open source projects from the comfort of their home. If you are a student interested in developing open source software, this program is for you! Don't worry if you have not developed open source software before. You can get started now by fixing a small bug, which is a requirement for a successful application, but should not take you a lot of time and will show us your willingness to dive into the code. We are generally looking for students who are willing to learn, have good coding skills and, most importantly, have a keen interest in open source software development.
Students who successfully complete GSoC will receive a stipend which is dependent on their country of residence for their work.
How to Apply
To participate in GSoC as a student please check GSoC eligibility section.
Only coding projects are allowed for GGSoC.
Decide on a GSoC Project
You can start by reviewing the GSoC project ideas on ideas page or by selecting a GNOME project that has a mentor listed for it and talking to the mentor about what would be a suitable GSoC project. Neither list is exclusive, you can find the main developers of any project on IRC, introduce yourself, and ask about what would be a suitable GSoC project or present your idea. Base any ideas you propose on the research about the needs of a particular module and make sure there is a mentor interested in guiding you in implementing this idea before basing your application on it.
The following things can help you select a project and prepare your idea:
Read the project's wiki page on the GNOME wiki
Lurk on the project's IRC channel
Build the code for the project and run it to check out its capabilities, read newcomers tutorial to do it.
Look at the recent changes in the project's Git repository
Read Planet GNOME
To prepare a strong proposal, you need to learn as many things as you can about what would be involved in implementing it and display that knowledge in your proposal.
Some general GNOME IRC channels you can hang out on are #gnome-hackers, #newcomers, and #soc. If you have any questions related to applying for Google Summer of Code in GNOME, you can ask them in the #soc channel or contact GNOME GSoC administrators. However, please avoid questions like "do you think my proposal will be accepted?".
Make a Small Contribution
Once you decide on the project you are proposing, you need to fix a small bug for the module you will work on for implementing your project proposal. You can ask the module's mentor for a suggestion for what a suitable bug can be or find one in the project's Bugzilla and double check about it with the mentor. You will need to download and run the code for the project and create a patch that fixes the bug. Your patch may end up being just a few lines of code, but this demonstrates a willingness to learn and get involved.
To start with your contribution, go through the newcomers tutorial.
Fill out the Application
Once the students applications period has opened (see schedule), you have to submit your application on Google's Summer of Code website. Your application must be written in English. It should contain a detailed description of your project proposal. Copy and paste all questions below into your application form and answer all of them. Do not skip any question, if you do, your proposal will be invalid:
* What is your e-mail address and IRC nick? * What is your web page, blog, or Twitter? Note: this is required for a valid proposal, you can create one in e.g. wordpress.com. * What city and country will you reside in during the summer? * What is your academic background, including university, major, and expected or achieved graduation date for any degree you have or are pursuing? * Who is a possible mentor for the project you are proposing? * What is the ultimate goal of your proposal? * What components/modules will the proposed work modify or create? * What benefits does your proposed work have for GNOME and its community? * Why are you the right person to work on this project? * How do you plan to achieve completion of your project? * Please provide a schedule with dates and important milestones/deliverables (in two week increments). * For GUADEC, the GNOME conference hosted this year 28th July - 2 August in Manchester, United Kingdom, we encourage you to do a small presentation of 3 minutes. What part of your project will be showable? * What are your past experiences with the open source world as a user and as a contributor? * Please include a link to the committed code in the form https://git.gnome.org/browse/[MODULE]/log/?qt=author&q=[YOUR NAME] or to Bugzilla for the bugs you fixed for the GNOME module your proposal is related to. * If available, please include links to any other code you wrote for GNOME or other open source projects. * What other relevant projects have you worked on previously and what knowledge you gained from working on them? * What other time commitments, such as school work, exams, research, another job, planned vacation, etc., will you have between May 4 and August 29? What are the dates for these commitments and how many hours a week do these commitments take?
Please be factual and clear in answering these questions. Feel free to add anything else that is relevant for your application. Try to use correct English if possible. The selection committee understands that not all applicants speak English as their first language. In fact, many GNOME community members speak English as their second or third language!
It is never too early to start working on your GSoC application! Note that GSoC positions are very competitive (with about 4 applicants for one position in the past) The key to creating a strong proposal is to propose a manageable and agreed-upon project, make a contribution to the module your proposal is related to, and write an application that clearly demonstrates your knowledge, skills, and enthusiasm.
Every GNOME Foundation member will be able to look at the student applications and comment on them. When the student application period is closed, a small selection committee (around 10 people) will analyze the comments and select the projects that are, in their opinion, the best. Here are some criteria of selection: usefulness for GNOME, student's knowledge about the project, manageable timeline, demonstrated skills in prior GNOME contributions and other work, availability of a mentor interested in guiding the project.
How you will work
If your application is accepted, here are some information about how you'll integrate with our community, and what we'd like you to do:
- You will be assigned a mentor, (s)he will provide guidance throughout the project and will judge your achievements
- You will either have access to a git repository or create your own git repository (There are also services such as gitorious and github) where you'll put your code
You will be subscribed to the gnome-soc-list mailing list
If you don't have a blog, we'll ask you to create one. We'll aggregate everyone's blogs on a Planet about GNOME and Summer of Code and will ask you to blog about your work at least every two weeks. We'd be interested to learn not only about your project, but also about your other interests! You can have a look at Planet GNOME at http://planet.gnome.org.
- You can come in the #soc channel on irc.gnome.org, to talk with other students and mentors (and feel free to join other channels!)
- It'd be great if you could try as much as possible to integrate with the community in all possible ways! That's the most important part of Summer of Code. Don't be surprised if you are invited to some local GNOME events!
Although it's unlikely, you may run into problems with your assigned mentor. In this case feel free to talk to GNOME GSoC administrators.
Licensing and Attribution
GSoC requires any code and other contributions you provide to be given under an OSI approved license, to ensure your work is available for use by anyone in the world.
The GNOME modules are released under various free software licenses, generally the GPLv2 (and later) and the LGPLv2 (and later). Therefore you must agree that the code, ideas and all other aspects of your contributions in your entry are released under the same license as the the module you're contributing to, so that they may be included in the GNOME project.
We are very pleased to have your help and as a courtesy are happy to attribute your work in various places, for example in blog posts. We will assume you want your name mentioned unless you suggest an alias, or the desire to remain anonymous.
In order to upload your code samples for google (or some Outreachy equivalent) you have to extract your patches from the repository. A script trying to ease this proccess can be downloaded here:
This script will:
- search the repository in the current directory for all commits from the given author
- detect consequent commit ranges from this author
- ask you for every range of commits in which subdirectory you want this range to be stored
- store patches for this range there
If you find a bug, file it in the github bugtracker of the repository. So if you fiddle with it to make it suit your needs, feel free to send a pull request or a patch (mail or so) so everyone has something from it.