My favorites | Sign in
Project Logo
             
Search
for
Updated Mar 19, 2009 by LHospo
AdviceforStudents  
Advice for GSoC Students

Welcome to the Advice for GSoC Students Page

Whether or not you're new to open source development, the work you'll do as part of the Google Summer of CodeTM program is not the "usual" way people are involved in developing free software. The information on this page, written by GSoC students and mentors for students, is meant to help you choose a mentoring organization, write your application and hone your skills as an open source developer.

In addition to the advice here, Patrick Barnes, organization administrator for the Fedora Project, has posted some helpful hints in the Google Summer of Code Discussion Group.

Alex Russell from the Dojo Project has also posted some great advice for students.

Bart Massey with Portland State University has posted PSU's application guidelines, which also contain some good overall tips for effective proposal writing in general. Great advice from a mentor and organization administrator who has been with us for many years. :)

The folks at the Drupal project also have some great application guidelines for students.

Laurynas Biveinis has written an excellent introduction to life as a Summer of Code student.

Applying to GSoC

Choosing a Mentoring Organization

Alex Pico with GenMAPP has once again created a categorized list of mentoring organizations for 2009 using Delicio.us, a social bookmarking site. For more on how to use this list most effectively, see Alex's post on the Google Summer of Code Discussion list.

Haoyu Bai, GSoC 2008 student working with the SWIG project, has created a custom search for all of our 2009 mentoring organizations. For more on how to use this tool most effectively, see Haoyu's post on the Google Summer of Code Discussion list.

If you're interested in some historical references on participating organizations, you can check out:

Alex Pico with GenMAPP created a categorized list of mentoring organizations for GSoC 2008. The list is admittedly somewhat subjective, it may be of help to you in narrowing down the list of organizations you'd like to investigate.

You may also want to check out this list of 2008 mentoring organizations categorized by programming language.

While you'll want to choose a mentoring organization based on your technical skill set, there are many other factors to consider. Further, several organizations will require similar expertise from their students, so you may find yourself facing some challenging decisions about where to spend your time applying. Here are a few suggestions to help you determine which organizations will be the best ones for you:

  • Hang out in the organization's IRC channel.
  • Subscribe to the organization's development mailing list.
  • Read any introductory documentation on the code base.
  • Poke around in the issue tracker.

When exploring these areas, ask yourself a few questions:

  • Do you feel like there is sufficient documentation available to help you get started?
  • Can you follow the IRC and mailing lists discussions or are you having trouble understanding them?
  • Do the personalities of the developers and community match well with yours?
  • If you have a question, are you comfortable with the way it was answered? Was the response helpful to you?
  • Do the organization's development philosophy and goals match yours well?

If you don't find yourself answering yes to most of these questions, you may want to consider contributing more to this project outside of Google Summer of CodeTM.

Additionally, some organizations are considering additional due diligence beyond just the application, such as interviews in IRC. If you're asked to interview with an organization, remember that this interview is like every other interview you'll do throughout your career: both you and the organization are deciding if there is a good fit between the two of you. Make sure to ask plenty of questions about the organization's expectations, development methodology, and any other matters that will help you decide if the organization is right for you. Remember, the ultimate goal of Google Summer of CodeTM is to help you find a community that you'll be happy to continue contributing to long after the program ends, so the more investigation you do up front, the better.

Angie Byron says:

For a long time I've had an interest in activism, and helped contribute graphics and posters to the Spread Firefox community for awhile. The first thing I do whenever I visit a new site is "view source" to see what's being used to generate it. I found references to Drupal, so that organization stuck out in my mind when I saw it on Google's mentor list.
After some more research, I discovered that the CMS was used by a number of political and grassroots organizations and so, coupled with the fact that it was written in PHP (which is my primary language of choice), I knew that Drupal would be a great fit as a mentoring organization.

Choosing a Project

Remember, GSoC takes place over just three months, so choose a project that is reasonable to complete in that time frame. While we've built additional time into the program to allow you to get up to speed on your organization's community and documentation before you start coding, we repeatedly hear from mentors that their students undertook projects which were too complex to complete within the GSoC time frame. Undertaking an ambitious project is laudable, but don't choose a project and submit a proposal that will end up being too challenging and, therefore, frustrating for you. If you're having trouble determining whether your idea needs further distillation or refining, consider talking with the organization's developers and asking for their thoughts; it's an excellent way to get to know them.

Angie Byron says:

Remember to allow time for learning the various "support" activities around the project, such as version control systems, unit testing, and so on. If you're not already using these in your everyday development, getting up to speed can present a challenge. And even if you're actively using them, you still need to know how your organization does things and how it might be different from what you're used to.
Also, if you're not already familiar with the source code of your organization's project of choice, remember to to allow time for simply learning the code. This "getting into someone else's head" and understanding why code works the way it does can be especially challenging for students coming from an academic setting, where reading someone else's code is considered "cheating" and projects are done individually.
Ideally, you should have a thorough grasp on all of these before you even start on your project.

Writing Your Application

Your mentoring organization may have a template they would like you to use, which will be available when you apply using the GSoC web app. However, a template is just a start, and writing a proposal is very different than writing code or even an essay. Don't forget that your online application can and should be supplemented with additional materials, such as links to your Curriculum Vitae, repository locations for other open source code you've committed, etc.

Here are some suggestions to help you write your application, in addition to the suggestions in the FAQs:

Tim 'Mithro' Ansell says:

All the successful applications for Thousand Parsec had at least 3 revisions before the final deadline.

Angie Byron says:

I spent about a week writing my application, in between other things. I went after one of the bounties offered by my mentoring organization: a Quiz module for Drupal.
First, I read all of the background material and discussion that had taken place on the forums and mailing list around the idea. This helped me to better understand the motivations for the project, and also helped me to learn the names of some of the people interested in it, who I could later contact for additional feedback/insight and as testers. I also did some general skimming of Drupal's documentation: the handbooks, the API docs, and so on, to get a "feel" of the project. Finally, I checked to see if they had any specific SoC requirements beyond what Google had outlined.
Next, I e-mailed the mentor for the Quiz module bounty to let him know that I was interested in applying, and to introduce myself to him. In this way, we got to know each other a little bit even before I had applied formally, which helped my name to stick out a bit from the rest. I asked if he'd be willing to look over an initial draft of my application, and he said he'd be happy to. He also gave me some helpful tips on additional places to look for information, and some things to specifically mention in the application.
Next came actually writing up the application. I first described the goals in detail to get across my understanding of the project, but was careful not to just blatantly copy/paste stuff from the description; rather, I re-wrote it in my own words, and also added some more things that I thought of which could make the project better. I also tried to draw attention to personal qualities I had that made me suitable for the project, such as my experience both as a student and a teacher, my knowledge of XHTML/PHP/SQL, and my diverse IT background outside of web programming. I also spent time focusing on the benefits that the module would have for the Drupal community itself, in terms of widening its appeal, and how the module could also be useful outside of the academic setting.
Finally, came submission time. I sent the application to a teacher first for some last-minute proof-reading, and then onto the bounty's mentor as a final check. He gave the thumbs up and I submitted it. Then I spent pretty much every waking moment of the next few weeks with my stomach clenched in anticipation/fear. ;)

Responding to Requests for Further Information

Often, a mentoring organization may ask you for further information or clarification on your proposal. When responding to these requests, keep your responses concise and targeted. Organizations are reviewing literally hundreds of proposals, so your ability to communicate clearly and effectively will be a great asset to you.

Augie Fackler says:

Try to be prompt in responding to requests for information - if you take too long, it may be seen by the potential mentors as a lack of desire on the project.

Getting Started in GSoC

Getting to Know Your Organization's Community

While it's a great idea to due diligence in this area before submitting your proposal, should your application be accepted, you will definitely need to spend some time integrating with your organization's community. How to best bond with your new developer colleagues will vary widely, but it's essential that you do so; this aspect of participating in GSoC is so important that Google is announcing the program over three months before coding begins to ensure that all students have time to get to know their organizations developer (and user) communities.

Angie Byron says:

I found what helped me the most with getting integrated in the community was helping with user support and documentation. This is stuff that tends to get a bit neglected in open source projects, so when someone steps up in these areas, the rest of the community really appreciates it. It's also a great way to understand the project better.
I hung out in the support IRC channel, and whenever anyone asked a question I'd challenge myself to try and find an answer. At first, I was mostly just learning things from other people, but gradually I found I was able to answer a couple questions myself, and pretty soon I was actually answering a couple developers' questions. :D
In addition to this, whenever I'd discover something new that wasn't already in the documentation, I'd document it. Nothing helps to ensure you really understand something more than trying to teach other people about it. :)
After awhile, this kind of thing earns you a reputation in the community, and your reputation in an open source community is your best asset.

The Intimidation Factor

Whether or not your proposal is accepted, you'll likely find yourself in a pretty intimidating situation: posting questions on mailing lists where the project's founder or other famous developers are subscribers. This prospect can be plain terrifying; no one likes to look stupid, and getting flamed isn't the most pleasant of experiences. While we hope that you'll receive positive and useful responses to every question you posit, sharp retorts or responses of RTFM are par for the course in open source.

So, a word to the wise: you will say things that you will later wish you'd thought through more. You will post questions that are not as articulate as you'd like. You will make mistakes that you will later look back at and cringe, thinking "how could I have written this code?" These situations are just a part of life and are not unique to open source, so roll up your sleeves, thicken your skin and remember that failures are as much a part of gaining knowledge as successes.

Angie Byron says:

I was terrified the first time I went to introduce myself in the developer channel on IRC -- especially after I got flamed off the face of the planet for being off-topic. ;) A couple different things helped:
a) I started just idling in the channel and watching how the developers interacted with each other. I got to see patterns of what types of questions comments were/weren't allowed, when it was okay to chit-chat vs. when it was time to be quiet because developers were working on hashing out a serious problem, and so on.
b) Whenever someone asked for a patch review, or to have a bug validated, or started a discussion that was at my level, I would join in and try and participate. This helped me to meet other developers on a 'contributor' level, which helped me to earn their respect.

Communication

While your mentor is your primary point of contact with the organization, don't forget that there's an entire community out there to help you. Communicate early and communicate often, both with your mentor and the community as a whole. Distributed development can be more difficult by its very nature, as you can't simply talk to your mentor in a hallway to get good advice; get used to being proactive in your questions,

Remember too that documenting your design decisions and any changes to your milestones or development plan, etc., will not only be useful to you, but will help to keep you and your mentor on the same page regarding expectations for your work.

Angie Byron says:

The hardest lesson I had to learn about communication was that it's okay to ask for help. Sounds silly, right? But you feel a lot of pressure for being one of the few who is accepted into SoC. It's easy to fall into the trap of trying to impress your mentor and community by not asking questions so that you come across as smart, only to spin your wheels hopelessly on some silly problem and waste valuable time.
Obviously, don't go around bugging people about every little thing (always try to figure it out yourself and do some basic troubleshooting first), but also don't feel like if you ask questions people are going to think any less of you. Remember that SoC is a learning experience, and your mentor and the rest of the community are there to guide you along your journey. Also remember that even the "super hackers" in your community asked lots of questions to get to that level. :)

Marty Connor says:

Your mentor almost certainly volunteered to do GSoC, and helping you succeed is probably a good part of why. Learning to communicate on a regular basis with your mentor will help them help you. I have found questions from my students to be very helpful in improving design, implementation, and documentation of our software.

Time Management

Even for someone who positively thrives in an academic setting, having a big, open summer with far-away deadlines where you are forced to structure your own time can be very challenging. Many talented, smart, driven people end up not making it through Summer of Code because of this difficulty.

A couple things can help with this:

Angie Byron says:

The best advice I can give students regarding time management is to break their projects down into smaller, bite-sized chunks. "Finish my SoC project" is not a good thing at all to have on your to-do list. It creates one big, amorphous ball of "stuff" you have to do, and it's is easy to get demoralized when you see it staring at you every day. You can fall into a procrastination trap thinking, "Ugh... I don't even know where to start with this... I'll try again tomorrow..."
Instead, break your project down into smaller, more manageable tasks like, "Research into foo thing to evaluate different approaches," "Write a function to do bar with baz and blah inputs that returns boing" and "Create icon for the yadda yadda button." This process accomplishes three things:
a) It will almost lay out a 'roadmap' to follow from start to completion if you do it thoroughly enough.
b) You'll end up with far fewer surprises at the end because you're almost forcing yourself to think through everything up front.
c) Each time you check something off, you're that much closer to being done!
Some people use fancy-schmancy project planning tools and GANTT charts and all that kind of stuff to do this. I use post-it notes. :P I write down, "This is the stuff I have to do today," prioritize it by urgency, then take the first thing on that list and try and "think-through" what it would take to finish that, and write that on a separate page. Then I just go through and mark things off as I finish them, and voila! I can look back and see that I actually made progress today! ;)

Luca Barbato says:

Some projects enforce in a strict way the "commit early, commit often" model, sometimes adding the constraint of having the commit not break the build, that is more or less a generalization of what Angie suggested and you should consider using both: split your project in tasks, complete each task by small traceable steps/commits. Even if this method is quite effective, it is usually clashing with the tendency to perfect the code before even thinking about commit: - Do not be afraid of pushing some code, getting feedback is important and fixing issues early usually spare lots of work later. - Do not be afraid of being considered dumb because a commit is: everybody does make mistakes, just few are good enough to accept that and fix them timely. Having smaller commits, one or more for each conceptual change, helps the mentors tracking your progress, makes you spare quite a lot of time bug hunting since there are many semi-automated tools to bisect the history and overall makes the casual observer feel there is lots of activity.

Tim 'Mithro' Ansell says:

I had "if it isn't committed, it doesn't exist" policy with my students. The "commit early, commit often" idea is a very good idea if you are new the project for a number of reasons. Most importantly, it allows the community to give you feedback on your code. This can save a huge amount of time later if you are going down the wrong path. Nothing is more frustrating than pushing a hundred line patch you spent hours working on and finding out someone else knows a single line way!

Advice for Non-US Students

There are a number of unique challenges facing students outside the USA. Most students outside the USA do not have the long summer break that the USA students enjoy. This is specially true for students who are located in the Southern Hemisphere, where it isn't even summer! Don't despair, a huge number of both accepted and successful students are not in the USA.

This section is specially for tips specifically for non-US students.


Comment by murala.arun, Mar 11, 2008

Hi,

My Name is Arun Kumar.I live in India.I am doing final year of Bachelor of Technology Course.This is the First time I heared of Google Summer Code.I want help about joining the as a Student in Google Summer code.So, please anybody help me giving me guidance in joining a mentor which requires a java coder for their project..and You can contact me through my mail and my mail id is murala.arun@gmail.com....I would be so thankful if u help me...

Comment by metaleks, Mar 11, 2008

Have you read the FAQs? There is plenty of information there :)

Comment by yankees26an, Mar 24, 2008

Brilliant tutorial. The "Writing Your Application" section should really be the master outline that everyone should if the organization doesn't provide one for you. It's thorough and complete.

It gives me a sense of confidence when writing the apps now.

Comment by mattshanks86, Mar 24, 2008

Agreed yankees. Very good article. Helps clarify a lot of questions and get insight from successful candidates aswell.

Comment by jubinchheda, Mar 25, 2008

This is a very well written advice page. I am pursuing my master's from Indian Institute of Technology and am on the last leg of my thesis for which I plan to add some J2ME support for moodle (moodle.org). Just struck me that moodle also floats GSoC projects and that I can find some mentors.

Comment by Nabil.Noaman, Mar 27, 2008

Hi, I have question How i apply to GSOC with other people to be a team work. Question in another form WE (me and my colleague) have application ,How can we apply with the same GSoC project.

Comment by itz.somnath, Mar 29, 2008

can I submit my OWN project topic and choose any of the listed organization for that project topic.

Comment by mohangupta13, Jul 24, 2008

hello this is mohan gupta from india ,im a b.tech student ,,i read a lot abt soc and at lot of places IRC is mentioned ,but i dont have an IRC ,so is it very important to use it? and when can one start approaching the mentoring organizations? thank you

Comment by santhosh.vkumar, Jan 28, 2009

HI I am santhosh v kumar from INDIA i came to know about this gcos. I am very much interested in it and i am good at ASP.NET c# will this stuff is acceptable.

Some one please reply.... with regards... santhosh v kumar
Comment by awsmalinga, Feb 07, 2009

Hi, I am Supun Malinga and I'm an undergraduate of University of Moratuwa, Sri Lanka. I'm willing to participate in gsoc 2009 and this is my first time applying for gsoc. This article gives me a great guidance and was very helpful in getting to know gsoc well. Thanks, Supun

Comment by harshana05, Feb 08, 2009

This is a great post for new prticipants like me for GSoc '09. I'm Harshana Eranga Martin of University Of Moratuwa, Srilanka.

Comment by LHospo, Mar 08, 2009

People looking for more information should look at the Program FAQs here:

http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs

There are links to our mailing list, information about our IRC channel, etc. Good luck!

Comment by aroshthilanka, Mar 17, 2009

Hi,

This is a very helpful post for the student who new to the GSoC.Thanks a lot.

Arosh Thilanka/University Of Moratuwa /Sri Lanka

Comment by mani2708, Mar 22, 2009

hey cn any one help me out: im going to complete my colege in june 2009 ...can i apply for this??????pls reply my id: mani2708@gmail.com

Comment by romanaverkin, Mar 22, 2009

Hello, I have an idea to develop USB powered device with GUI for Linux, how can I choose a mentoring organization for this project?

Comment by swbsanjeewa, Mar 23, 2009

Hi, I'm an undergraduate of University Of Peradeniya, Sri Lanka. I saw that a student can apply for many projects.Could I give priorities to the projects so I'll get the one I most like

Comment by soussou.sbs, Mar 23, 2009

Hi, i want to know how to increase my chances to get the project that i like to have should i talk with the mentor on IRC or i can just use my personnal mail??

Comment by ascentpurnea, Mar 23, 2009

quit ok.

Comment by arafath.c, Mar 26, 2009

Can anybody please tell me how to choose a good mentoring org? mail me at arafath.c@gmail.com

Comment by chenneng5758, Mar 28, 2009

Can anyone tell me where I should send my applying e-mail ? such as some web site , and some other things we may interested in.

Comment by msuworld, Mar 31, 2009

Hi'i'm shihab from Khulna University of Engineering & Technology,Khulna, Bangladesh. I'm trying to get a project on python on this Google Summer of Code. If anyone can help me than mail me at msuworld@gmail.com

Comment by shashankiit4, Apr 01, 2009

hello i am shashank sharma in ist year b tech in comp science in indian institute of technology. being in ist year do i have enough programming knowlege to participate in this programm .what is the extent of programming involved.

Comment by nadir.hajiyani, Apr 03, 2009

For submitting application Is just creating a new document enough from GSOC profile?

Comment by cainiaohhf, Apr 06, 2009

Hello,everybody.My name is Haifeng Hu.I'm Chinese.I study in Nanjing University of Science and Technology.I is so hard for me to use English to read and write.But I like this family.I want be one of this family.

Comment by rchu...@hotmail.com, Apr 12, 2009

Man, wish I had the summer free - I'd be all over Drupal. I've been submerged in it for 2 days straight and it's the epitome of brilliance.

Comment by juduras, Jun 02, 2009

Thanks www.cembertopu.com http://wwww.cembertopu.com


Sign in to add a comment
Hosted by Google Code