by Marco Burstein (skunkmb)

Something to Chat About: Google Code-in 2017 with Zulip!

Thoughts from a Winner of Google Code-in 2017

Source code for a chess-playing Zulip chatbot

My name is Marco Burstein, and last year I was a winner of Google Code-in 2017 with an organization called Zulip. With Google Code-in 2018 just around the corner, I thought it would be a good time to share my Google Code-in experience with the world!

So, what is Google Code-in?

The Google Code-in Logo

Google Code-in (or “GCI” for short) is a competition where students from all over the globe contribute to open-source projects. GCI students complete tasks for open-source organizations (or “orgs”) from October 23 to December 12.

Once the competition ends, the organizations will each choose six finalists and two grand-prize winners. Each finalist receives a limited-edition hoodie, and the winners are awarded an all-expenses-paid trip to Google Headquarters in California!

In order to enter Google Code-in, you do not have to be a programmer! Google Code-in includes several different task types, including programming tasks along with quality assurance, outreach, and more.

What is open-source?

A tree can represent open-source concepts like branches and pull requests!

The backbone of Google Code-in is open-source software. Essentially, software being “open-source” means that anyone can view and modify the project’s code.

Oftentimes, organizations use tools such as GitHub as a platform for their open-source workflow. Students will learn to create branches for new functionality, and will gain experience opening pull requests, where they submit their branches to the organization’s main repository.

Throughout Google Code-in, students contribute to these open-source organizations in many different ways, such as adding new features, fixing bugs, or doing research.

Who can sign up?

Any pre-university student can enter Google Code-in

Google Code-in is open to any pre-university students aged 13–17. Each year, more and more students enter, with 3,555 students entering last year.

My Google Code-in Experience

Choosing Zulip

The Zulip Logo

I raced to my computer and typed in my password. It was time. The day had finally arrived: Google Code-in 2017 was starting! I had been waiting for months for GCI to begin; now was my chance to test my programming skills, and possibly win a trip to Google Headquarters in the process.

Before the competition started, I rigorously studied each organization, making sure I knew which one I was going to focus on. I even made a spreadsheet to help make me decide! The organization that I ended up choosing was Zulip: “the world’s most productive group chat”; it uses Python and Django on the backend with JavaScript on the frontend. Zulip combines the immediacy of chat with the efficiency of email-style message threading to make group chats better than anywhere else. It’s also completely free!

Once I had chosen my organization, I was ready to start completing tasks.

Tasks and Lessons Along the Way

I worked on a chess-playing chatbot for Zulip.

Throughout the competition, with the support of the Zulip mentors and team, I completed many tasks that I couldn’t have even imagined the year before. During the competition, I spent day after day working, sometimes not even getting out of my pajamas! One of my personal favorites was my creation of a Zulip chatbot to play chess with a user. “Chessbot” supports not only playing with other users but also against the computer itself through a connection to another open source project: the Stockfish chess engine. After writing over 900 lines of code, I submitted a functioning — albeit a bit buggy — chessbot system. After days of tweaks through code review sessions with my mentors, chessbot was accepted and merged.

Another favorite task of mine was the addition of a Zulip feature that would automatically translate emoticons (like “:)” ) to emoji (like “😃”). After several improvements and changes throughout the review process with my mentors, my feature was added as an option in the Zulip settings. It felt extremely satisfying to open up Zulip and see an option that I worked to create!

These tasks showed me how rewarding it can be to challenge yourself; many tasks took me days to complete, but at the end, I felt immense satisfaction and joy at what I had accomplished. Additionally, these tasks showed me the importance of collaboration during the programming process. Working on open-source projects has shown me that being helped by others improves your code’s quality dramatically. Before Google Code-in, I had never done a code review before, but through making chessbot, the emoticon translation feature, and more, I saw the importance of being helped by others to catch bugs and find solutions.

By having mentors I’ve been able to learn how to write code that fits into a larger ecosystem, and working with Zulip has shown me the power of open source, both for creating software and for bringing people together.

The Trip

Students, mentors, and parents at Google!

The grand-prize trip for Google Code-in is a fantastic trip to San Francisco, including a day at the Googleplex in Mountain View. I had an outstanding time on the trip, and it was honestly a dream-come-true to be able to visit the Google Headquarters. I felt extremely fortunate and excited to be able to see the inner-workings of the technology company that inspires me so much.

Me and one of my mentors, Rohitt

While in San Francisco, I got to meet one of my Zulip mentors Rohitt in-person after spending months communicating with him over the Internet. Rohitt was extremely welcoming and helpful to me during the GCI process, and it was wonderful getting a chance to meet someone that had such a positive impact on me.

Where other winners are from

Meeting with the other winners and mentors from all across the globe was fantastic, too. Even though we live in different countries and speak different languages, we were all brought together through our common passion for open-source technology.

Some Tips

To help out any newcomers hearing about Google Code-in through this post, I figured I’d include some tips and tricks for competing in GCI. To start things off, I would recommend that you become comfortable with a few important tools used by many open-source organizations:

  1. GitHub, which is where almost all open source code is hosted online. It’s essential that you understand how to use GitHub in order to submit work and get feedback.
  2. IRC, short for Internet Relay Chat, which is how many open source organizations communicate. There are multiple different IRC clients, which let you chat with anyone else using the service. You can check out this guide made by Google on how to use it.

During the competition, I think that there are a few important things to keep in mind in order to be as successful as you can be.

Stick to one organization.

Doing tasks for one organization exclusively enables you to be much more efficient, since you will always be using the same development ecosystem. Over time, you will become more and more comfortable with the way your organization’s source code is structured, which increases your productivity.

Be active in the community.

Organizations like to students that are dedicated and committed. By being active in the community, you show your engagement and interest in the organization. One way to be active is to answer other people’s questions in the IRC chat. You could also leave comments or feedback on other pull requests, or do work for the organization outside of just doing GCI tasks.

Do hard tasks.

Doing difficult tasks shows your organization that you are willing to challenge yourself by working on things outside of your comfort zone. Challenging tasks are also better for demonstrating your skills, whether in programming, graphic design, or another medium.

However, due note that the GCI rules state that…

If you’re trying to be a Finalist or win a Grand Prize, you need to be in the top-twenty task completers for an organization.

Since doing a difficult task usually takes longer than an easy one, it is important to have a balance between the two types so that you can ensure that you are in the top twenty for your organization before the competition ends.

Furthermore, doing challenging tasks is more beneficial from a learning perspective. Solving more difficult problems will help you improve at programming, design, or any other skill.

Be polite.

Always be polite and gracious to all of your mentors as well as your fellow competitors. Mentors devote their time and energy to help students learn, so it is important to show gratitude for all that they do!

Have fun!

Last but not least, have fun! Participating in Google Code-in is a fantastic experience and a great way to learn new things. It is important to take a step back from focusing only on winning to enjoy the competition!

If you aren’t chosen as a winner, you shouldn’t be disappointed; instead, be happy that you were able to compete, and learn from your mistakes. You can compete again next year!

(If you want to hear more about my tips, I made a separate article that goes more in-depth with my advice.)

Conclusion

So, in conclusion, I want to say thank you. Thank you so much to Zulip for mentoring me and for serving as such an amazing community to be a part of. I really appreciate all of the time and effort that my mentors have spent reviewing my tasks and helping me improve. I look forward to continuing to contribute to Zulip in the future! Additionally, I want to thank Google and the Google Open Source team for putting on Google Code-in and for hosting all of us in San Francisco for such a fabulous week of activities. I feel so grateful to have had such an amazing opportunity, which I will surely remember for the rest of my life.

Google Code-in has opened my eyes to open source software and has inspired me to be more active in this community. I am so glad that I’ve been able to contribute to open source through this competition, and I know that it is just the beginning of my open source endeavors.