My road to Google Summer of Code

Monday, May 5, 2014

As part of our celebration of the 10th instance of Google Summer of Code, we are highlighting some of our student participants on the Open Source blog. Today’s story comes from Hesham AL-Matary, a GSoC student for RTEMS for the past three years. Student participants have already been announced for GSoC 2014, but Hesham provides some great tips for those who may be interested in participating in the future.

In 2012, I learned about a program called Google Summer of Code (GSoC) that Google organizes for students to work on open source software projects. Like most Computer Engineering students, I knew GSoC was a great opportunity — if only I could have the chance to participate!  My expectations of being accepted were very low. But I figured, why not give it a try? What could I lose? I decided to take the first step.

I scanned the GSoC program website and searched for the keywords that matched my interests: embedded systems, operating systems, RTOS, and C. It was great to see that's exactly what RTEMS tags included in their organization profile. I clicked on the link to the RTEMS website, read more about the organization, and searched for open projects. Not surprisingly, there was an open project that appealed to me. I completed some additional research, read more of RTEMS’ documentation, and finally felt ready to submit a proposal. I submitted my proposal early on in the program period and quickly realized this was a smart move; I was able to get lots of valuable and detailed comments and feedback from the folks in the RTEMS community.

Their comments made me believe that what I was proposing was something important and needed by users; a feeling that I never had before.  After a few more weeks of discussions and project modifications, my proposal was ready. Once I submitted my proposal, I was comfortable with what I did and I knew I could not have done any better. A few weeks later, the projects were announced and I had been accepted! Without a doubt, that moment was a turning point in my life.

Participating in GSoC that first year with RTEMS allowed me to learn more about software engineering than I ever would have imagined. Specifically, I now know how important the design phase is, the benefits of feedback and discussions, and of course, why it’s useful to interact with the community via mailing list and IRC on a regular basis. My technical expertise has been enriched in a variety of areas including C programming, RTOS, gdb, gcc, simulators, hardware, embedded systems, git, source control, documentation and so much more. Last but not least, making connections with some great mentors at RTEMS was one of the best aspects of participating in GSoC for me.

You may be surprised to know that I actually enjoyed having deadlines, challenges and troubles. I feel that’s what GSoC is partially about (aside from encouraging students to work with open source software): a real world work experience. People in RTEMS, and any other organization, want you to complete your project successfully. They are thrilled to help you with the challenges you face. Thanks to my mentor at RTEMS I was able to pass both the midterm and final evaluations — I could finally brag that I was a former GSoC participant!
Statement of accomplishment - GSoC 2012
I am now in my third year of participating in Google Summer of Code with RTEMS.  I also was able to participate as a mentor in Google Code-in, an open source contest that targets 13-17 year old students.This summer I’ll be working on my most challenging project yet!

GSoC helped me achieve the following:
  • I learned a ton about open source software.
  • I am hooked on open source and RTEMS.
  • I got hands-on experience with real world software.
  • I made connections with great developers.
  • I completed great projects (and got a nice stipend doing so).

If you are a student and considering applying to GSoC, here is my advice:
  1. Don’t worry about your modest experience, you're bound to learn more as you go along in the program. Basics are enough.
  2. Submit a proposal and get in touch with the organization community via IRC or their mailing list. Do both early!
  3. Ensure your proposal is well structured and detailed. It should explain how you will work on the project and give a clear and reasonable timeline as well as deliverables. Most organizations provide a template for writing proposals.
  4. Choose a project that appeals to the organization and its users while also matching your interests.
By Hesham AL-Matary, Google Summer of Code Student, 2012-2014