Google Summer of Code is a program sponsored by Google to introduce students to open source programming. Students work on the projects mentored by different open source organizations. It is an incredible opportunity to learn the various tools and practices used in real world softwares. I was GSOC 2014 student under Open Web Application Security Project in my sophomore year. In this post I will shed some lights on how to start preparing for GSOC.
The learning curve of the program is high, hence you need to have an ample amount of time for start preparing. Remember it’s never too early to start preparing for GSOC. After all, GSOC is all about open source software development and you can always contribute to open source projects. If you are running short of time, don’t worry it’s never too late to start your preparation! You don’t need to be an expert to get selected but it is always helpful if you have a strong foundation in computer science.
Familiarize yourself with Google Summer Of Code program, know what it is all about. This is valid for any contest/program in which you want to participate. Google open source blog is a good source to start with. Explore how the program works. This will help you to prepare yourself mentally for the rest of the journey. GSOC flossmanual covers each bit of the program in great detail. Know about the perks that GSOC students get. It will help you to stay motivated throughout.
If words like version control, IRC, github etc sounds alien to you then you need to first learn the basics. It is assumed that you have proficiency in at-least one of the programming language, if not then the first step is to learn a programming language. You need to familiarize yourself with a version control system like git. There are many free online resources for learning git. One of my favorites is try git. You need not to be an expert in these tools, you just need to know the basics rest of the things will come en route. GSOC is all about learning - from submitting your first patch, preparing your proposal to successfully completing the program you will learn something new each day!
Choosing the right OS
If you are a windows user then you might feel odd one out in the group of developers. Most of the developers prefer linux over windows for various obvious reasons. Although it is not a necessity (unless you are working on the linux kernel itself) but it is highly recommended that you install and learn any of the linux flavor. You might find it difficult at first but trust me, it will make your life a lot easier later.
Finding an org
You need to choose an open source organization which participates in Google Summer of Code. Although the list of organizations which are selected is not public until two months before the commencement of the program, however you can always take a look at the previous year organizations. GSOC 2014 organizations are listed here. Choose the organization based on your interest and the projects, not based on the number of slots it gets.
Choosing a project
The selected organizations have an idea page in which they list down all the projects which they are willing to mentor for Summer Of Code. For example, the list of projects of Mozilla for GSOC ‘14 are here. Again, choose the project which interest you most. Get in touch with the community and the mentors. Read the contributing instructions of the project, ask the developers about how to start contributing, setup the development environment and try to peek into the codebase of the project.
This is the second most important factor (sometimes most important!) in your application. You need to have at-least few patches in the projects of the organization in which you plan to apply. Some organization won’t even accept proposals until you have submitted at-least one patch. The more patches you submit, the more are your chances of getting selected. By submitting patches you familiarize yourself with the application codebase and at the same time you learn about the strict coding standards. Patches will also be very helpful once you are selected.
Flip bits, not burgers!
This is the most important part of the application. It is the only thing which is evaluated by the organization. The best part is that your college, past experience (except open source experience), internships etc won’t even matter in your application. The proposal must be concise and should cover all the implementation details of the project. It must have a clear timeline of all the major milestones in the project. The earlier you start, the stronger your proposal. Don’t focus on the quantity but the quality. Different organizations have different templates for the proposal so the best person to give feedback about your proposal is your mentor himself/herself. Don’t hesitate to ask your mentor what he/she feels about your proposal. Ask for suggestions and keep on improving your proposal until the deadline is reached.
Remember, mentors are volunteers and they are not obliged to help you. They have many other important things to do, so respect their time. Learn the IRC, mailing list etiquettes and how to ask smart questions. This presentation is also going to help you a lot.
Code, eat, sleep, repeat!
Code the summers away! And don’t get disheartened if your proposal is rejected, you can always contribute to the organization and learn from the community.