This summer I participated in Google Summer of Code. I worked in the aimacode organization, mentoring under Peter Norvig for the aima-python repository. I mainly worked on writing IPython notebooks explaining Artificial Intelligence algorithms and implementing pseudocode from the book Artificial Intelligence: A Modern Approach (by Stuart Russel and Peter Norvig).

In this short series of blogs I will give a summary of my experience and tips for students who want to participate in the program themselves.

Researching Organizations

When the organizations got announced (around the end of February), I took a look at the list of orgs and picked out 2-3 that caught my attention. To find something that suits you, you should not only read the project ideas in their GSoC page, but also check out if they have a public repository you can take a look at and see if their work suits you. Good -and probably obvious- places to look at is the contributing and readme markdown files most repositories have. If the organization provides a guide for Google Summer of Code students, then all the better.

The Chatroom - First Contact

After the org research phase, I went to my highest-priority orgs’ chat hub of choice (some used IRC, others Gitter) and introduced myself. I followed some of the ongoing conversations, and there were some students who were asking questions, but ultimately I didn’t do much there. If you have questions, it is a great place to go, but don’t fret over being social (at least not at first). Your opportunities to become part of the community will come later and you shouldn’t force it.

Contributing to an Organization

If this is your first time working in an open-source community, contributing to an organization may seem daunting. Doing so though will greatly increase your chances at getting selected (and in the end you might even like it). Some organizations have it as a requirement. Overall, it is a great way to get your foot in the door; it not only shows what you can do, but it also gets your name out there so that mentors can recognize you.

So, how should you go about contributing? I suggest you first focus on the small things. No matter how miscellaneous your initial edits may seem, things like testing and documentation are very important for any project. Here are some ideas on how you can contribute:

  • If the project has automated testing, that is a great place to start. By adding to these tests, you will not only start getting into the community, but you will also become more familiar with how the code works and maybe uncover a bug or two that you can fix/report. Keep adding tests until you feel more comfortable to start contributing more significant code. A quick note on reporting bugs: Try to describe the bug and how it occurs in as much detail as possible without going overboard. Add the tests were the code failed, error messages, what you did that caused the bug (where applicable), etc.

  • If there is no automated testing, you can ask around about what needs to be done. Mentors surely will have something for you, so don’t hesitate reaching out! If it is not documentation or testing, there will definitely be something for you to do or otherwise the organization wouldn’t be in the program in the first place.

  • Take a look at the issues and pick one. Make sure you read the contributing guide before you start working on an issue, since there might be some guidelines on how the process works (maybe an org has a policy of leaving a comment on issues you want to take on, etc.). If the community is large enough, there will always be issues that need to be taken care of, so keep an eye out for those.

  • Refactor code. Large codebases in particular might be in need of that, so start hacking away. Remember to document your work!

There are numerous other ways to contribute, but these are the more general ones that apply to most projects out ther. One quick note on what you shouldn’t be doing: don’t try to make some feature from the get-go, unless you are very confident you can deliver it on time. Even if you want to go down that route, I highly suggest you contact a mentor beforehand. All in all, don’t bite more than you can chew.

The Chatroom - Helping Others

Since there are a lot of students taking part, the organization will receive an influx of questions. Since some students tend to come in a bit late, if you start when the program is announced, you will have a head start and you will be able to help others out. That is a great way to show you want to be part of the community and mentors will certainly appreciate that. Remember that even though a good candidate is one who will get the job done, a great candidate is on who will also stick around after the summer is over.