Google Code-in 2017
To begin, I’ll tell you what Google Code-in is for those who don’t know - this is an online competition for students aged 13-17, which aims to introduce them to the Open Source world, providing an opportunity to work with organizations developing open source software. I took part this year and became one of the winners.
How is this competition held? 25 open source organizations of the competition create small (requiring 3-5 hours to complete) tasks on which participants must work. This year, such organizations were: Wikimedia, Ubuntu, Zulip, FOSSASIA, Drupal, BRL-CAD, coala, Haiku, OSGeo, Apertium, JBoss Community and others. Mentors of organizations carry out verification and, if necessary, provide assistance (nevertheless, for most participants, GCI is the first experience with open source projects). The competition lasts 7 weeks (end of November - beginning of January).
Prizes are available. For completing 3 tasks, participants receive a T-shirt. Each organization also selects the 5 best participants for the total contribution to the project - they get a "hoodie", and the 2 best of them are awarded with a trip to Google headquarters (Mountain View, California, USA).
The publications of the winners of previous years have already been on Habré: Ilya Kovalevsky - 2012 (KDE) , Mikhail Ivchenko - 2013 (KDE) , Stanislav Krivenko - 2014 (Apertium)
However, the competition is changing and gaining popularity, so I also decided to share my experience of participation .
The number of contestants is growing every year - statistics from the Google Open Source Blog
This year, more than 3.5 thousand students from 78 countries took part (2.5 times more than last year).
Contest Ages - Statistics from the Google Open Source Blog
My experience
For me, the open source world has always been very interesting, but I did not know where to start. So when I found out about Google Code-in, I decided that this would be a good start. Tasks performed for Wikimedia. Why exactly this organization? Firstly, this is a larger project than other projects, which means it should be the most interesting thing there. In addition, we all use Wikipedia - why not help her with something in return?
You can read more about the participation of this organization in the GCI on the contest page in MediaWiki .
Wikimedia is developing MediaWiki (the engine on which Wikipedia runs) and other extensions and tools related to it.
Tasks
The first steps in the open source world were exciting! It was very nice to meet a lot of interesting people on IRC (used by Wikimedia, as well as in many other organizations for communication) and work with them on tasks! The mentors provided a warm welcome and helped set up all the necessary development environments, as well as access to the code review (Gerrit) system.
Performing tasks, I quickly fell into the "state of the flow": after I received the first, I took up one more, then another and another - a total of 39 tasks. It is very nice to see when your patch is accepted by the developers, and the task is marked as completed. I made sure that even beginners like me can do their part.
At Wikimedia, assignments included the use of various programming languages and technologies. The main language here is PHP (because it is written on it by MediaWiki), but Python, C ++, C #, Java, NodeJS, Ruby, Objective-C, Lua are also used. That is why GCI is a good opportunity to learn something new.
I performed various tasks: from simple ones (such as fixing simple bugs, improving CI, improving unit test coverage, refactoring old code) to more complex ones, including adding new functions.
For example, one of the difficult, but very interesting tasks was to increase the accuracy of a tool based on machine learning to determine the quality of the changes made to the article. I added tracking of the amount of text to the model without reference to the sources (after all, if there are very few or no links to sources, does this mean something about the quality of the article?).
For new functions, tests were added, documentation was written. A code review of each patch was also mandatory (the process is quite valuable in terms of the knowledge and experience gained. I also checked some patches of other participants in the competition).
In general, during the whole Wikimedia contest, more than 300 participants, led by 50 mentors, completed about 760 tasks while working on: the Mediawiki core, its extensions, APIs, Kiwix and Wikipedia mobile applications, as well as other tools such as Pywikibot and Huggle.
Examples of tasks
A short list of the most interesting tasks that I worked on - with links to the patch, task in Wikimedia Phabricator and the corresponding task page on the GCI website.
- Evaluate the quality of edits to the article ( pull request , Phabricator , GCI )
- Add support for more note writing languages to the Score extension ( patch , Phabricator , GCI )
- Add a new service page to MediaWiki to search for unused files ( patch , Phabricator , GCI )
- We add the ability to work with Gerrit in the CLI for working with git services
git-repo
( pull request , Phabricator , GCI ) - Add
pytest-flask
for testing the Wikilabels service ( pull request , Phabricator , GCI ) - Fix minor security issues with MediaWiki parser ( patch , Phabricator , GCI )
- Add
VCR.py
to run tests Pywikibot offline ( patch , Phabricator , GCI ) - Increase coverage with Newsletter extension tests ( patch , Phabricator , GCI )
There were very simple tasks that can be easily dealt with even without previous experience with open source: turn on CI for one of the extensions ( patch , task ), fix a small bug in the design of the error page ( patch , task ), add static analysis to CI Vector style ( patch , task )
Two months of the competition were filled with interesting work and a lot of communication with people from all over the world. I was so passionate that I began to skip school a bit and spent less time preparing for exams. Mentors did a tremendous job, writing new tasks and checking our patches even for Christmas and New Year. I also did work out of competition: I took simple tasks from the bug tracker when there was free time (for example, while waiting for a task to be verified). After the contest, he also continued to make a contribution.
After completing the GCI, I received a letter from Google saying that Wikimedia chose me as the winner and I get a "grand prize" - a visit to Google’s headquarters in Mountain View.
the trip
The trip was scheduled for June - so that all winners could get a visa and not be distracted from studying at school, preparing and passing exams.
The trip was filled with unforgettable impressions. The organization is at the highest level: every moment is thought out.
On the first day, when all the winners gathered at the Google office in San Francisco, we were told about what we will do in the next days and a small game was held to get to know each other. We were given a large number of gifts. The trip was also attended by mentors from organizations. It was incredibly nice to meet someone from the people with whom I worked so much a few months earlier.
On the second day, we went to Google Headquarters in Mountain View - "Googleplex". An award ceremony was held with Google Open Source Director Chris DiBona.
After that we were told a lot of interesting things about the company, we visited the Google Visitor Center, where we bought souvenirs and took a large number of photos.
The trip organizers also prepared a very pleasant surprise: they invited a Google employee from each winner’s country - we had the opportunity to talk and ask questions. In addition, “googlers” came to us with presentations: one of the employees talked about how he solved a difficult cryptographic task, another talked about his open source project, which was created sometime in 20% of the working time, HR - about how to write good Resume, Developer Relations - about various programs in Google to “keep in touch” with developers.
The speaker from Waymo (a subsidiary of unmanned vehicles) did not even have time to answer questions! It was very interesting to listen to him, especially looking at the Waymo cars passing by the window.
The next day, we traveled around the city visiting the main attractions. It was fun, took a lot of photos.
Of course, we visited the Golden Gate.
In the evening, they sailed on the bay of San Francisco.
On the last day, there were some very interesting presentations by Google employees. We were told about Kubernetes and demonstrated it in work.
Containers are very useful - but that doesn’t mean that they should be used for everything.
We also learned about licensing open source software (very useful, because what I had difficulty trying to figure out earlier was explained here in a clear language). There was also an interesting presentation about Project Fi (Google’s virtual network operator).
Moreover, Wikimedia has an office in San Francisco. So I decided to take the opportunity to visit him.
Поездка оставила о себе много приятных воспоминаний. Я был очень рад встретиться с командой Google Open Source, менторами и участниками GCI.
Заключение
Статистика по странам — Google Open Source Blog
К сожалению, в этом году кроме меня не было победителей из Украины или других стран постсоветского пространства. Надеюсь, что мой пост поможет привлечь внимание к Google Code-in у русскоязычной аудитории.
Если среди читателей (или их детей) есть школьники — ставьте заметку в календарь на середину октября — в этот момент уже будут известны организации, которые будут принимать участие в GCI 2018. Сам конкурс начнётся где-то в конце ноября. Я планирую быть ментором в Wikimedia — если вы выберете эту организацию, пишите — буду рад помочь и ответить на вопросы.
For students, I recommend paying attention to the Google Summer of Code (organized by the same Google team that is working on GCI), which is a good opportunity to contribute to open source.
Winners, Their Parents, and Mentors - Photo by Stephanie Taylor, CC-BY-SA
In conclusion, I want to say that open source plays a crucial role in the modern world of software development. The fundamental functions of the Internet work thanks to Open Source (Linux, Apache, MySQL, Mozilla Firefox, Chromium, PHP, Python, NodeJS, Go ... - all this is open source), and it is the future.
Thank you and successful pull requests!