How to apply for Google Summer of Code ?

Google Summer of Code organizations list has been published. Soon, within april 8th you will be able to submit your applications. Google summer of code is a premier Open Source programs managed by Google. The certificate of Google Summer of code adds higher market value to your resume. You will be receiving certificate stating 3 months Student Developer for Google and also you will be receiving a good paycheck of $5000.

I participated thrice (2008, 2009, 2010) with different organizations. I would like to give you few advices regarding how to apply and participate.

There are 171 open source organizations got accepted by Google for GSOC 2011. You can see the list from: http://socghop.appspot.com/program/accepted_orgs/google/gsoc2011

Each of the organizations will accept few projects (No of projects as per decided by google). No of projects for each organization varies according to the market value of organizations. You can submit one or more (I prefer 3 applications) to same or different organizations.

Each of the organizations will have there project ideas page. You can select an idea that interests you or propose a new idea to them. (But already listed idea has more changes to get accepted - I feel so).

Each student who get accepted will be assigned with a mentor from the corresponding organization. Mentor will be a very experienced guy who is already contributing to the projects. In my case during my first summer of code, surprisingly my mentor John Palmeri is the author DBus-IPC, Gnome Executive and Author of GNOME network manager. You can get such kind of exposure during the project.

How to apply for a project ?

Go through the accepted organization list, Click on the organization, Go to the ideas page. You can find many ideas listed with details (Prerequisite, Difficulty level, Expected mentor, Contact person, Related information URL, URL of mailing list, etc). If you find some idea interesting, invest some time researching about the background, and related technologies related to the idea. Once you gain basic information about what you exactly need to do with project and what technologies you should use, contact the mentor or person listed.

To collect necessary details about the project and get the background of technology, look into mailing list associated with the project/organization. You can also subscribe to the mailing list. #### Contacting organization or associated person e-mail

Write properly what idea you want to work on, your background and how you wanted to work on the project. Include as much as details on how you will implement the project and ask necessary questions.

IRC Chat

If you are not familiar with IRC, IRC is a type of group chat system widely used in Open Source development environment. Each organization will have a channel (Eg. #pardus-devel - pardus linux developers channel), where you can login and chat with a registered nickname. For open source project, the chat server will be irc.freenode.net.

To use IRC, you can install XChat client using: sudo apt-get install xchat or use the webchat interface :?http://webchat.freenode.net/ For basics of IRC chat, read http://www.irchelp.org/irchelp/irctutorial.html You can use the assigned contact person’s nickname to contact him over IRC. IRC is a public chat where many are interacting each other. Please do not spam or ask stupid questions like (I am newbie. I want to participate in GSOC. Plzzz help.) Write proper words rather than using chat language like ( u thr. plz. i gt ths idea frm). Do not flood the channel. Be very decent and formal over the chat channel. Before you ask questions, I strictly recommend read this article to following the hacking culture:

http://www.catb.org/~esr/faqs/smart-questions.html

How do each organization selects project proposals ?

From my experience, there will be a group of people from the GSOC organization who review the project proposals. They will have an internal voting system. They vote induvidually and rank the list of proposals. According to the number of project slots assigned for the organization, they select the higher ranked proposals. The most higher preference is always to get successful completion of projects. So they look heavily at the strength of your project proposal. The project proposals that consist of as much strong details to support the fact that you are going to complete the project get accepted.

How to write a project proposal ?

Usually you will find a specified format for the project proposal for each of the organization. Once the application period opens, you will come to know about the format. To have strong proposal I recommend to include the following things:

  • Your background: Showcase your abilities (Even if you haven’t done much. Market what you have)
  • Do enough research on project ideas and arrive at list of technologies you want to use (Include libraries required, dependencies, challenges, diificulties). This should show much of research and effort you have invested in the project.
  • List out the features of the idea you are going to implement and how it benefits. (You can discuss with the mentor and arrive with features and benefits)
  • If you had contacted the mentor before and had positive conversations about the project and discussions. He might also talk about you to other individuals in the organization. You can talk the public organization IRC channel, it gives lot of attention to you from the members who are going to vote for your proposal. If you have discussed technical details and give confidence in your ability, that will be positive to you while they vote.

  • Prototype (Optional): Prototypes are bonus points for a proposal. You can create GUI prototype designs, code prototype designs, etc if necessary. (Last time, I coded a command Pardus Linux Live installer in 500 LOC, served as prototype)

  • Timeline: Timeline is a must for a project proposal. You should indicate how you are going to spend three months time to completion and development of project.

A good format will be : Week 1 (May X - May Y) - Development of M module. Customization of C using T tool and commit changes…etc

  • Version control: You should be familiar with some version control systems like SVN, GIT, BAAZAR, etc

Here is a basic How to on SVN, http://betterexplained.com/articles/a-visual-guide-to-version-control/

You should let then know that you are comfortable with the organization specific version control. Before writing the proposal you should check out code from the corresponding branches related to your project idea For example, if you are contributing to Webcam app - Cheese, you should check out code of cheese using Git version control and build the application from source code and try out things.

All the best with your project proposals.