This is a long overdue post. And I realized if I don’t do it now then there is no point in doing this at all. In this blog post, I will be talking about Google Summer of Code!! What it is?, How to apply?, Why to apply? & other related questions. Although almost all the questions about the program are already answered on the official FAQ page, this post reflects my personal thoughts based on my experience. Feel free to close this tab & chill out in case you don’t want to read further.
Disclaimer: There are many, in fact, a very large number of posts on this topic. The only reason I am doing one more is to help spread the word about Open Source and GSoC. Nonetheless, this is one way of giving back to the community. Also, some of the content in this post is from the official GSoC website and a majority of this is from my own personal experience.
What is Google Summer of Code?
Google Summer of Code also called GSoC is a worldwide program to introduce University students to the world Open Source Software. It usually happens in the summer and the program ‘officially’ runs for about 3 months. It is a paid program and every student is paid as per the PPP model of the respective country. Last but not the worst the whole program is sponsored by Google, hence the name.
What is Open Source Software?
Open Source Software abbreviated as ‘OSS’ is basically a community developed software available for free. It is basically all those free software we download & use like Ubuntu, Firefox, Github, Android, so on & so forth. The list of Open Source Softwares we use is never ending from languages like Python, Java to operating systems like Fedora, Ubuntu. It is everywhere. If you still don’t believe this take a time out of your schedule & make a list of software, tools, & other related things you use and google all those. I can assure you at least half of those ( in a regular scenario ) would be open source.
What exactly happens in Open Source Software?
Basically, this is what happens in Open Source Software. Unlike a company with its own developers developing a proprietary software, in an Open Source Software developers from different parts of the world contribute and build a software which is circulated for free. As most of the developers are from different places, to collaborate & communicate mailing lists, slack channel or discord channel or something relevant is used.
A contribution need not always be code. Mind this. Reporting issues, improving documentation, doing tests, raising awareness and much more come under a contribution. So, for a typical OSS organization there are developers who write code, who test, users who report issues, tutors who teach the use of the software, UI/UX designers who improve the software, volunteers who write blogs about the software, managers who gets the things done, maintainers who look after the code repos, etc.
Enough of the nonsense. What exactly happens in a GSoC Program?
Let me be blunt. This is what happens.!
There is no other nicer way to explain the program than this screenshot. Basically, you will have to choose an and then choose a project given by them or you can propose one. And then you write a proposal for the project and if you get selected you work with the org contributing the whole summer while also getting paid.
What is the selection process?
There are various aspects on which selection is done.
- Understanding of the project. – This is very important! Your proposal reflects your understanding.
- Skills required for the project. – Need not be at an expertise level. A basic level works. But sometimes depends on the project you are applying for.
- Interest & Response – How interested you are & How fast are you responding to the emails or chats? Your way of communication with the org reflects your interest & response.
- Proposal – A very decent proposal is more than enough.
What is needed to get into this program?
INTEREST! INTEREST! INTEREST!
If you have interest & passion towards software/ hardware and if you are committed to working for it, Enough!! That is all you need. If you have this, everything else comes along.
Do note that, you need not be a CS/ IT student, if you are interested and have decent skills, you can go ahead and apply.
FYI It is not advisable to apply if you are just looking for the benefits & money. Try to find what interests you amongst the thousands of projects. Something should distract you. Find that interesting project for you. Please don’t force yourself to be interested you will eventually be filtered out in the process if not you won’t be able to complete the project which will make all your efforts pointless. Please don’t! If you do, you will be grabbing the opportunity from a co-student who might successfully complete the project.
What are the types of projects that will be put up by the Orgs?
What type? You say! Everything related to computers. From software to hardware. Everything. If you can research well if you will find projects almost in all specific fields. Programming, Operating Systems, Android, Web, Machine Learning, Robotics, Embedded, VLSI, Artifical Intelligence..any thing you can think of. In the worst case, you have the option to propose one of your choice which is aligned with the work of any organization. So, take a deep breath, dive into the projects and find the project you like.
How can you improve your chances?
- If you haven’t started to look at & understand things, START NOW. There is no better time than now.
- Though you can apply for atmost 5 organizations, it is preferable to apply for atmost 2 or 3. As you apply to more than one organization you will have issues focusing on both and also there is a chance that some other student who applied to one of the same projects you did might have applied for only that and he would be preferred over you in some cases. So to be safe apply for atmost 2 or may be worse 3.
- Understand the organization you are applying to, how it works, who calls the shots, what are the technologies that are used, what version control system is used. More you understand the org, the better understanding you will get on the org & the project.
- Make contact. This is the right time to do it. Know what is the communication medium for the organization, introduce yourself in the mailing list/ channel/ whatever. Tell them a bit about yourself and that you are interested to apply to their org and ask them how to get started with the software. Most often you will be guided by the org members on how to proceed and start working.
- Besides this, set up the software you are trying to apply for on your machine. Explore the software and understand what is what. Try to find bugs and report them.
- Read documentation & blogs. Patience is an important factor when trying to apply for programmes like these. Spend some time and study good blogs, documentation, videos, podcasts and any other useful resource. It really helps when you want to understand something new.
- Ask questions. If you are stuck anywhere and have something about some feature. Ask it. Through whichever medium you can. If you do it by the mailing list, you will have a good chance of someone answering you. Don’t hesitate to ask. If the question is dumb you will appreciated for asking it in the first place.
- Last but not the least. CONTRIBUTE. Do this as much as you can. By contribute I mean report bugs, improve documentation, add a new feature, participate in discussions on the mailing lists or in the respective chat channels, write blog posts, write tutorials, anything that will improve and is a good thing for the Org. Do note to list all the contributions you did in the proposal. This shows your interest & commitment.
How can you start from scratch?
- Learn Git and/ or Github or the source version control being used by the organization of your interest. Most often the SVC used will be Github.
- An understanding of how a source version control works is very valuable & will bear a lot of weight in your proposal.
- Use resources like the following to learn more about an Open Source Project and contributing to it.
- Also, there is a recent tweet sometime last week, where people are willing to mentor to help anyone do their first PR. Take a look at that tweet.
Note: If you are very much new, then try not to give up at any point in time. The more time you spend on these the more understanding you will get about this.
How to deal with the situation if you don't get into this years program?
Not at all a problem. Don’t even worry an inch, given that you have given your best. If you have already done a few contributions to some org, Good. You have passed the first test. Congratulations! Welcome to the world of Open Source. You have officially contributed to an Open Source Software. Now, you kind of know how all this OSS works. Isn’t it amazing? Did you fall in love with the work they do? I hope you had a good time. Now, it is your call if you want to continue contributing for a different project or on the same not as a GSoC student. You may not get the recognition or any money. But you will get to LEARN a lot. You get to EXPERIENCE great things. I don’t think you can compare your learning & experience with the money & recognition. These are not even close to comparing. It is like comparing apples & oranges.
If your work is good and appalling you will eventually get opportunities. Your project might be accepted unofficially & you might get paid, or you may be invited to your org’s conference, or you may be given a new project, anything. “Luck follows when you have decent hard work.”
How to select organizations?
- Look for organizations from last year. Check out the archives page for all the details.
- Choose an org that interests you by understanding the work they do. And try to make contact.
- See if you don’t understand the work an Org does, you keep looking at it like a foreign entity. Research the org, Understand the work. The same foreign org will start appearing to be friendly.
- If you already have one or two in mind, go ahead and start contributing. If you are not sure to select any follow these steps
- If you are starting now to select an Org, go through the archive and make a list of interested Orgs. Do note, new Orgs can be selected this year or sometimes the old ones may not be selected. So, choose Orgs that repeat every year.
- Assume you have around 10 – 20 on your list. Do an iteration of all the Orgs and short down the list to about 5 by reading about them, reading past students experiences/ reports ( all these can found with a simple google search ). Basically, do a small research and bring down the number.
- Your analysis of an org should tell you what kind of students they select like only Ph.D.’s or only experienced developers, etc. Use stuff like these to shortlist Orgs.
- Now you have 5, see if you get the number down. If you can’t and if you are interested in all those, analyse which org has a nice community, good reviews, good response to questions asked, and whatever factor you would like. Bluntly do a background check of all the orgs.
- By now you should have come down to 1 or 2. So don’t give it a second thought jump right in and start contributing.
- If you are starting late may be after the list has come, look out for new organizations as they will have less competition. But if you are delaying till then, make sure you have basic knowledge of source version control and other things.
How to select projects?
- Use the same archive page and check out last year projects. Get an idea of how the projects are. Read the students submissions given for old projects and see how they have performed.
- Probably by the next month, list of projects will be announced. By then it is good to have a list of interested Orgs and some contributions.
- Usually, if an org has X projects in the list, they will only be given Y slots by Google. So, the project you choose may or may not be selected. Once the students have applied, organizations will have a polling to fill the given slots from all the projects taking into consideration of various factors like the importance of the project for the org, interest from students, project goals, mentor availability, applicants capability and so on.
- Instead of taking a wild guess, try to understand which project has more importance based on the org current position and apply for that. Read mailing lists, talk to mentors, Read more about the projects. You will have an idea of which project is of high importance.
- If you want to go with the project you like, make sure you to portray your project as an important one through the proposal. Present your case decently. Most often if the student is very much dedicated & equally interested, it will also be considered as a factor in choosing that project. So, bear this in mind.
How to make your first contact?
A very basic & important thing to keep in mind about Open Source is community engagement. If you have a question, want some help, whatever ask the community. This can be done through any of the Org’s communication channels. It is highly recommended to do it by mailing list which reaches a lot of people. So, if you are doing a first contact, do it on the mailing list. Introduce yourself, don’t blabber useless things. Tell them you are interested to contribute and you want to apply for their Org. And also ask them how to get started if you want to. Or you can start asking questions. Ask if there are any prerequisites, as some Orgs have that which won’t be tough, mostly they will ask you to contribute in some way. The more you interact, the more you will have a chance for your project.
How to write a good proposal?
Usually, your Org will have a proposal template which you can follow.
If not, go to Github. Search for ‘GSoC Proposals’. You will get a good number of results. Check them out. If not you can specifically search for your org past year proposals on Github or Google. I am writing down a few good places to find proposals from past years.
The point of checking out old proposals will give you some understanding of how to write one. Other this there are some other tips.
Make sure your proposal
- includes a page or two about you. Your background, skills, how many hours you can work in the summer and what are the timings (mention time zone of yours), do you have any other commitments in the summer, your contact details (Github, Email, IRC, phone, etc)
- includes Why you chose that particular project?
- includes Why do you consider yourself as the right candidate?
- contains Project details like Project description, why is it important, timeline, technologies to be used, milestones, etc.
- is reviewed by your mentor, other organization developers, in fact, you can post it in the mailing list which will fetch you many reviews. You can also get it reviewed by your Prof if they are familiar with it, your seniors, old GSoCers, etc. The person reviewing need not be aware of the org & tech, he/ she can guide you in improving the writing and presenting part.
Why should you apply?
Not for recognition. Not for the pay. For the EXPERIENCE.
The learnings, experience, exposure, quality of things are what you should apply for. The world of Open Source is like a pandora’s box. You find it interesting & great, but don’t know what it has unless you open the box and see how awesome & marvelous it is. You can get this experience not only through GSoC, but this is one way to get started. I can guarantee you, you will love the world of Open Source!!
I can give myself as an example, I love tech and stuff but never did Open Source, but the GSoC 2017 has completely changed my way of working and also influenced my study, interests, knowledge & my also my way of life. Guess what! I started mixing Open Source Projects & my regular classes to do what I love, besides getting course credits 😉 .
Why am I doing this?
Out of sheer interest. I have noticed lots & lots of students are unaware of this program. I had a real experience in this matter. Once I tried explaining to some of my friends from otherUniversities with CS background about what I am doing as a GSoC student and what is open source and all. Guess what! I failed in explaining. Since then, when someone asked me, what have you done last summer, I started answering a ‘remote internship’. Easy right. But I failed at telling them what I am exactly doing. I couldn’t get it, when someone from other Universities can easily get what GSoC is, why can’t these. I came to a conclusion that the only thing causing this problem is, they are not aware and they don’t have the exposure. So, this is my first step to increase awareness about Open Source. I would like to continue doing so in some form or the other.
Out of Topic:
Just so you know there are various other similar programs you can apply to, you can find them in the link here.
HTH! Feel free to give your suggestions or comments or questions. I would be happy to guide you or review your proposal or stuff if you want to.
If you would like to reach out to me feel free to ping me at firstname.lastname@example.org
I will keep improving this post whenever possible. Keep an eye on the edit section.
In ❤ with Open Source
I am Rajula Vineet Reddy & I was a Google Summer of Code ’17 student with Pharo Consortium. I am currently in my junior year of Information Technology course at IIIT Bangalore, India.
- Logo gsoc: https://developers.google.com/open-source/gsoc/resources/marketing
- Gifs Sources: https://giphy.com