
Zunächst möchte ich Ihnen sagen, was Google Code-in für diejenigen ist, die es nicht wissen. Dies ist ein Online-Wettbewerb für Schüler im Alter von 13 bis 17 Jahren, der sie in die Open Source-Welt einführen soll und die Gelegenheit bietet, mit Organisationen zusammenzuarbeiten, die Open Source-Software entwickeln. Ich habe dieses Jahr teilgenommen und bin einer der Gewinner geworden.
Wie findet dieser Wettbewerb statt? 25 Open-Source-Organisationen des Wettbewerbs erstellen kleine Aufgaben (für deren Ausführung 3-5 Stunden erforderlich sind), an denen die Teilnehmer arbeiten müssen. In diesem Jahr waren solche Organisationen: Wikimedia, Ubuntu, Zulip, FOSSASIA, Drupal, BRL-CAD, Coala, Haiku, OSGeo, Apertium, JBoss Community und andere. Mentoren von Organisationen führen Überprüfungen durch und leisten bei Bedarf Unterstützung (für die meisten Teilnehmer ist GCI jedoch die erste Erfahrung mit Open Source-Projekten). Der Wettbewerb dauert 7 Wochen (Ende November - Anfang Januar).
Preise sind verfügbar. Für die Erledigung von 3 Aufgaben erhalten die Teilnehmer ein T-Shirt. Jede Organisation wählt außerdem die 5 besten Teilnehmer für den Gesamtbeitrag zum Projekt aus - sie erhalten einen "Hoodie" und die 2 besten von ihnen werden mit einer Reise zum Google-Hauptsitz (Mountain View, Kalifornien, USA) ausgezeichnet.
Die Veröffentlichungen der Gewinner der vergangenen Jahre waren bereits auf Habré: Ilya Kovalevsky - 2012 (KDE) , Mikhail Ivchenko - 2013 (KDE) , Stanislav Krivenko - 2014 (Apertium)
Der Wettbewerb ändert sich jedoch und wird immer beliebter. Deshalb habe ich beschlossen, meine Erfahrungen mit der Teilnahme zu teilen.

Die Zahl der Teilnehmer wächst von Jahr zu Jahr - Statistiken aus dem Google Open Source Blog
In diesem Jahr nahmen mehr als 3,5 Tausend Studenten aus 78 Ländern teil (2,5-mal mehr als im Vorjahr).

Wettbewerbsalter - Statistiken aus dem Google Open Source Blog
Meine Erfahrung
Für mich war die Open Source-Welt immer sehr interessant, aber ich wusste nicht, wo ich anfangen sollte. Als ich von Google Code-in erfuhr, entschied ich, dass dies ein guter Anfang sein würde. Aufgaben für Wikimedia. Warum genau diese Organisation? Erstens ist dies ein größeres Projekt als andere Projekte, was bedeutet, dass es dort das interessanteste sein sollte. Außerdem nutzen wir alle Wikipedia - warum helfen wir ihr nicht mit etwas im Gegenzug?
Weitere Informationen zur Teilnahme dieser Organisation am GCI finden Sie auf der Wettbewerbsseite in MediaWiki .
Wikimedia entwickelt MediaWiki (die Engine, auf der Wikipedia ausgeführt wird) und andere damit verbundene Erweiterungen und Tools.
Missionen
Die ersten Schritte in der Open Source Welt waren aufregend! Es war sehr schön, viele interessante Leute im IRC zu treffen (von Wikimedia sowie in vielen anderen Organisationen für die Kommunikation verwendet) und mit ihnen an Aufgaben zu arbeiten! Die Mentoren begrüßten uns herzlich und halfen beim Einrichten aller erforderlichen Entwicklungsumgebungen sowie beim Zugriff auf das Gerrit-System (Code Review).
Bei der Ausführung von Aufgaben fiel ich schnell in den "Zustand des Flusses": Nachdem ich die erste erhalten hatte, nahm ich eine weitere, dann eine weitere und eine weitere auf - insgesamt 39 Aufgaben. Es ist sehr schön zu sehen, wann Ihr Patch von den Entwicklern akzeptiert wird und die Aufgabe als erledigt markiert ist. Ich habe dafür gesorgt, dass auch Anfänger wie ich ihren Beitrag leisten können.

Zu den Aufgaben bei Wikimedia gehörte die Verwendung verschiedener Programmiersprachen und -technologien. Die Hauptsprache hier ist PHP (weil es von MediaWiki darauf geschrieben wurde), aber es werden auch Python, C ++, C #, Java, NodeJS, Ruby, Objective-C und Lua verwendet. Deshalb ist GCI eine gute Gelegenheit, etwas Neues zu lernen.
Ich habe verschiedene Aufgaben ausgeführt: von einfachen (wie das Beheben einfacher Fehler, das Verbessern von CI, das Verbessern der Abdeckung von Komponententests, das Umgestalten von altem Code) bis hin zu komplexeren Aufgaben, einschließlich des Hinzufügens neuer Funktionen.
Eine der schwierigen, aber sehr interessanten Aufgaben bestand beispielsweise darin, die Genauigkeit eines auf maschinellem Lernen basierenden Werkzeugs zu erhöhen, um die Qualität der am Artikel vorgenommenen Änderungen zu bestimmen. Ich habe dem Modell eine Nachverfolgung der Textmenge ohne Bezugnahme auf die Quellen hinzugefügt (bedeutet dies, wenn es nur sehr wenige oder keine Links zu Quellen gibt, etwas über die Qualität des Artikels?)
Für neue Funktionen wurden Tests hinzugefügt und Dokumentationen geschrieben. Eine Codeüberprüfung jedes Patches war ebenfalls obligatorisch (der Prozess ist im Hinblick auf die gewonnenen Kenntnisse und Erfahrungen sehr wertvoll. Ich habe auch einige Patches anderer Teilnehmer des Wettbewerbs überprüft).
Im Allgemeinen haben während des gesamten Wikimedia-Wettbewerbs mehr als 300 Teilnehmer, angeführt von 50 Mentoren, etwa 760 Aufgaben erledigt: den Mediawiki-Kern, seine Erweiterungen, APIs, Kiwix- und Wikipedia-Mobilanwendungen sowie andere Tools wie Pywikibot und Huggle.
Beispiele für Aufgaben
Eine kurze Liste der interessantesten Aufgaben, an denen ich gearbeitet habe - mit Links zum Patch, der Aufgabe in Wikimedia Phabricator und der entsprechenden Aufgabenseite auf der GCI-Website.
- Bewerten Sie die Qualität der Änderungen am Artikel ( Pull Request , Phabricator , GCI ).
- Fügen Sie der Score-Erweiterung ( Patch , Phabricator , GCI ) Unterstützung für weitere Sprachen zum Schreiben von Notizen hinzu.
- Fügen Sie MediaWiki eine neue Service-Seite hinzu, um nach nicht verwendeten Dateien zu suchen ( Patch , Phabricator , GCI ).
- Wir fügen die Möglichkeit hinzu, mit Gerrit in der CLI zu arbeiten, um mit Git-Diensten
git-repo
( Pull Request , Phabricator , GCI ) zu arbeiten. - Fügen Sie eine
pytest-flask
, um den Wikilabels-Dienst zu testen ( Pull Request , Phabricator , GCI ). - Beheben Sie kleinere Sicherheitsprobleme mit dem MediaWiki-Parser ( Patch , Phabricator , GCI ).
- Fügen Sie
VCR.py
, um Pywikibot-Tests offline auszuführen ( Patch , Phabricator , GCI ). - Erhöhen Sie die Abdeckung mit Newsletter-Erweiterungstests ( Patch , Phabricator , GCI )
Es gab sehr einfache Aufgaben, die auch ohne vorherige Erfahrung mit Open Source problemlos erledigt werden können: Aktivieren Sie CI für eine der Erweiterungen ( Patch , Aufgabe ), beheben Sie einen kleinen Fehler im Design der Fehlerseite ( Patch , Aufgabe ), fügen Sie CI eine statische Analyse hinzu Vektorstil ( Patch , Aufgabe )
Zwei Monate des Wettbewerbs waren voller interessanter Arbeit und viel Kommunikation mit Menschen aus aller Welt. Ich war so leidenschaftlich, dass ich anfing, die Schule ein wenig zu überspringen und weniger Zeit damit verbrachte, mich auf Prüfungen vorzubereiten. Mentoren haben hervorragende Arbeit geleistet, neue Aufgaben geschrieben und unsere Patches auch für Weihnachten und Neujahr überprüft. Ich habe auch außerhalb des Wettbewerbs gearbeitet: Ich habe einfache Aufgaben aus dem Bug-Tracker übernommen, wenn Freizeit zur Verfügung stand (z. B. während ich auf die Überprüfung einer Aufgabe wartete). Nach dem Wettbewerb leistete er auch weiterhin einen Beitrag.
Nach Abschluss des GCI erhielt ich einen Brief von Google, in dem Wikimedia mich als Gewinner auswählte und ich einen "Hauptpreis" erhielt - einen Besuch in der Google-Zentrale in Mountain View.
Fahrt
Die Reise war für Juni geplant - damit alle Gewinner ein Visum erhalten und nicht vom Lernen in der Schule, der Vorbereitung und dem Bestehen von Prüfungen abgelenkt werden.

Die Reise war voller unvergesslicher Eindrücke. Die Organisation ist auf höchstem Niveau: Jeder Moment ist durchdacht.
Am ersten Tag, als sich alle Gewinner im Google-Büro in San Francisco versammelten, wurde uns mitgeteilt, was wir in den nächsten Tagen tun werden, und es wurde ein kleines Spiel abgehalten, um sich kennenzulernen. Wir erhielten eine große Anzahl von Geschenken. An der Reise nahmen auch Mentoren von Organisationen teil. Es war unglaublich schön, jemanden von den Leuten zu treffen, mit denen ich einige Monate zuvor so viel gearbeitet habe.
Am zweiten Tag gingen wir zum Google-Hauptsitz in Mountain View - "Googleplex". Eine Preisverleihung fand mit Google Open Source-Direktor Chris DiBona statt.

Nachdem uns viele interessante Dinge über das Unternehmen erzählt wurden, besuchten wir das Google Visitor Center, wo wir Souvenirs kauften und eine große Anzahl von Fotos machten.
Die Reiseveranstalter bereiteten auch eine sehr angenehme Überraschung vor: Sie luden einen Google-Mitarbeiter aus jedem Gewinnerland ein - wir hatten die Gelegenheit, zu sprechen und Fragen zu stellen. Darüber hinaus kamen „Googler“ mit Präsentationen zu uns: Einer der Mitarbeiter sprach darüber, wie er eine schwierige kryptografische Aufgabe gelöst hat, ein anderer über sein Open-Source-Projekt, das irgendwann in 20% der Arbeitszeit erstellt wurde, HR - darüber, wie man gut schreibt Lebenslauf, Entwicklerbeziehungen - Informationen zu verschiedenen Programmen in Google, um mit Entwicklern in Kontakt zu bleiben.

Der Sprecher von Waymo (einer Tochtergesellschaft unbemannter Fahrzeuge) hatte nicht einmal Zeit, Fragen zu beantworten! Es war sehr interessant, ihm zuzuhören, besonders die Waymo-Autos, die am Fenster vorbeifuhren.
Am nächsten Tag reisten wir durch die Stadt und besuchten die Hauptattraktionen. Es hat Spaß gemacht, viele Fotos gemacht.

Natürlich haben wir das Golden Gate besucht.

Am Abend segelten sie in der Bucht von San Francisco.
Am letzten Tag gab es einige sehr interessante Präsentationen von Google-Mitarbeitern. Uns wurde von Kubernetes erzählt und es in der Arbeit demonstriert.

Container sind sehr nützlich - aber das bedeutet nicht, dass sie für alles verwendet werden sollten.
Wir haben auch etwas über die Lizenzierung von Open Source-Software gelernt (sehr nützlich, da ich hier in einer klaren Sprache erklärt habe, was ich zuvor nur schwer herausfinden konnte). Es gab auch eine interessante Präsentation über Project Fi (Googles virtueller Netzbetreiber).
Darüber hinaus hat Wikimedia ein Büro in San Francisco. Also beschloss ich, die Gelegenheit zu nutzen, um ihn zu besuchen.

Die Reise hinterließ viele schöne Erinnerungen. Ich habe mich sehr gefreut, das Google Open Source-Team, Mentoren und GCI-Mitglieder zu treffen.
Fazit

Länderstatistik - Google Open Source Blog
Leider gab es dieses Jahr außer mir keine Gewinner aus der Ukraine oder anderen Ländern des postsowjetischen Raums. Ich hoffe, dass mein Beitrag dazu beiträgt, die Aufmerksamkeit des russischsprachigen Publikums auf den Google Code-in zu lenken.
Wenn sich unter den Lesern (oder ihren Kindern) Studenten befinden - schreiben Sie eine Notiz in den Kalender für Mitte Oktober -, sind die Organisationen, die am GCI 2018 teilnehmen werden, zu diesem Zeitpunkt bereits bekannt. Der Wettbewerb selbst wird Ende November beginnen. Ich habe vor, Mentor bei Wikimedia zu werden. Wenn Sie sich für diese Organisation entscheiden, schreiben Sie. Ich helfe Ihnen gerne weiter und beantworte Fragen.
Für Studenten empfehle ich, auf den Google Summer of Code zu achten (organisiert von demselben Google-Team, das an GCI arbeitet), das eine gute Gelegenheit ist, einen Beitrag zu Open Source zu leisten.

Gewinner, ihre Eltern und Mentoren - Foto von Stephanie Taylor, CC-BY-SA
Abschließend möchte ich sagen, dass Open Source in der modernen Welt der Softwareentwicklung eine entscheidende Rolle spielt. Die grundlegenden Funktionen des Internets funktionieren dank Open Source (Linux, Apache, MySQL, Mozilla Firefox, Chromium, PHP, Python, NodeJS, Go ... - all dies ist Open Source) und es ist die Zukunft.
Vielen Dank und erfolgreiche Pull-Anfragen!