by Judy Gichoya, MD
Hacking #GSOC : How to gain real life experience and support open source
The resume/CV currency in the current job market is changing. With or without a college certificate, potential employers will request a code repository like your GitHub profile to showcase your portfolio. Beyond code, developers are increasingly expected to take up leadership roles and be able to work well with teams.
With potential to fork and clone millions of repositories online, how can you get a differentiating factor in the work you display on your profile? Moreover, if you are a self-taught programmer that is taking advantage of the numerous MOOC courses both paid and free, how can you show your potential employer your abilities, helping you land your dream job?
Summer internships are commonly used by students to gain real world experience. Google’s open source office provides one such opportunity through their Google Summer of Code program (GSOC) which is open to university students who are 18 years or older. The program was started in May 2005, and I have been a mentor since 2011.
First, the rejection…
I applied for GSOC in 2010. I was fresh out of medical school and had been part of the OpenMRS open source community as a developer. We had a delay in starting our medical internship, and to fill my time, I was looking at several options to advance my skills. I decided to participate in GSOC with OpenMRS, as I would be making some money while contributing to an organization that I enjoyed working with.
I managed to fetch a segment of my proposal out of the email archives — attached below. Briefly, I was going to work on the longitudinal patient module which would show a timeline of a patient’s details making it easy for the doctor to glance at a snapshot of the patient’s data.
I spent some time chatting with my potential mentor, who wanted more details on my proposal.
However, despite communication with mentors, being a part of the community, and an attempt at writing a GSOC proposal, my efforts fell short.
I was devastated at not seeing my name in the final 15 students for the 2010 summer. I remember reading through the list of selected students searching for my name, rereading the list, and then realizing that I was not good enough, despite spending so much volunteer time with OpenMRS.
Back to basics
Despite my failed single attempt and never trying to be a GSOC student again, I dedicated my time to being a mentor — maybe to have the safety net of not being rejected. I have enjoyed working in open source projects on health, and currently volunteer as a maintainer for the LibreHealth Radiology project. LibreHealth is a GSOC organization this year, and in this article I summarize my experience as a mentor to help you write a winning proposal. I hope you can use the same advice to apply for other summer programs. Here are my top three tips!
After selecting an organization to work with through the summer, spend time figuring out where most of the conversations occur. Most open source organizations will have a form of wiki, an issue tracking platform, a chat platform, and a static web page.
For example, LibreHealth has a community forum where you can introduce yourself as you join the community, and a dedicated #GSOC chat channel to interact with mentors and other students. Scroll through the conversation history to get a sense of what questions have been asked and what projects are of interest to the organization.
Once you master the communication step, help others!
How? By welcoming new members, helping them get their developer environment set up, and answering their questions.
Remember, organizations want students who have the potential of being long-term contributors.
You are applying for Summer of Code, so its natural to expect that you will be assessed on your programming ability. Thus the next resource to figure out is where the code lives for your organization. If you are evaluating several organizations, it may be difficult to narrow down on your final organization and then zone in on the project you will apply for.
One way to shorten the learning curve is to look at demo sites where the final applications are hosted. Look at the technology stack and do a self evaluation to find out whether you have the required skills or can learn them in time before the project begins.
Select tickets that are beginner level or tagged
#gsoc as we do for LibreHealth. Figure out the mandatory prerequisites for coding that will be needed for accepted students.
You can filter the tickets that you can work on easily by checking out the issues and the relevant tags.
Thanks to the wonderful work of one of our Google Code In students Jake Du, we have a landing page that can help you figure out if you have the skills required to participate in our projects.
Now that you have a form of understanding of your potential organization, and have contributed to a beginner task or a prerequisite task, delve into the proposed projects for GSOC. We post our projects in our community forum with a #gsoc tag.
Read through each proposed project, and check whether it interests you. You are more likely to be successful at a project that motivates you, so choose wisely.
At this point, communicate with potential mentors of the project. Ask questions. Clarify areas you don’t understand. Also take advantage of the fact that as an outsider you bring in a new set of eyes to an open source project. You can therefore help suggest new documentation and ideas and help grow open source.
Remember to check eligibility criteria of the summer program, and that you meet the requirements! At this point, you are ready to start drafting your proposal.
5. Start early
Each student is allowed to submit a maximum of three proposals. I see a lot of students try to game the system by submitting multiple proposals to maximize their chances of winning. Remember quality trumps quantity.
Familiarize yourself with the GSOC timelines — they are unlikely to change. You have slim chances of receiving feedback on your proposal and making meaningful changes when you submit your proposal last-minute.
6. Learn from the past
If you are applying to an organization that has been a previous GSOC participant, then you have the benefit of past submissions. Look up previous proposals as well as the mandatory blog posts where students document their progress.
You can get a lot of insight into whether you’re the right fit for an organization, and you’ll also get feedback on what’s possible to accomplish in the summer.
7. Plan ahead
Most of the winning proposals demonstrate that the student has an understanding of the task to be done and is available to work full time on the project. You are expected to dedicate at least 40 hours every week to work on the project, so plan wisely for the summer.
Document clearly what you think should be achieved, and reflect this on your timeline. Remember you can fail #GSOC and lose your stipend and reputation. So be realistic on evaluating your ability and timelines.
8. Have Fun
GSOC and other summer programs like Outreachy and Rails Summer of Code offer a big reward on your personal involvement with open source. My mentee from the last 2 years ivange larry has been a phenomenon in open source, and now runs a Java Users Group in Cameroon to help other students get into open source like he did.
I invest in the successful students to help them find a career that they love. One of my good friends and collaborators Saptarshi Purkayastha started out as a GSOC student and is now a professor of Informatics, training future generations of students, and working in our Informatics Innovation Lab to use technology to do meaningful work and save lives.
I want to end this post by sharing Elon Musk’s comment shared last week that I found inspirational:
Life cannot just be about solving one miserable problem after another. That cannot be the only thing. There need to be things that inspire you, that make you glad to wake up in the morning and be part of humanity.
If you enjoyed this article or found it useful — please consider sharing it.
- 18th March 2018 — Umashanthi was referred to as He… Updated and corrected to She because she is female