Google Summer of Code i rozszerzenia do Chrome

Jestem 2-klasistą z Chin i pasjonuję się programowaniem stron internetowych. W pierwszym roku dołączyłam do klubu technicznego na naszej uczelni. To był mój początek programowania i otwartego kodu źródłowego. W klubie poznałam grupę podobnie myślących partnerów, którzy uwielbiają kodowanie. To od nich dowiedziałem się o Google Summer of Code na początku 2023 roku. Ten organizowany przez Google globalny program umożliwia uczniom nawiązywanie kontaktów z organizacjami open source i pomaga im lepiej wykorzystywać czas letni przez udział w aktywnościach open source.

Wypróbowałem go i przesłałem/wysłałam zgłoszenie. Na szczęście moje zgłoszenie zostało przyjęte. Lato, które spędziłem, tworząc repozytorium Chrome Extension Samples, było dla mnie niezapomniane. Oczywiście, nauczyłam się też wielu rzeczy, takich jak skuteczna komunikacja, umiejętności kodowania i umiejętności planowania.

Zjazd GSoC 2023 dobiega końca, dlatego warto podzielić się moimi wrażeniami z korzystania z GSoC. W tym poście krótko przedstawię ogólny proces tworzenia GSoC. Mam nadzieję, że uda mi się pomóc w rozwiązaniu tego problemu.

Historia mojego udziału w GSoC

Zgłosiłem się do projektu Chromium GSoC 2023, w którym głównym zadaniem będzie uaktualnienie istniejących przykładowych rozszerzeń do Chrome, w tym kilku powiązanych skryptów i dokumentów, tak aby działały w interfejsie Manifest V3.

Na samym początku

Po raz pierwszy dowiedziałem się o GSoC w lutym 2023 roku, ale nie wiem, czy chcę się zgłosić. Miałam wtedy kilka obaw:

  • Jestem introwertyką, a angielski nie jest moim językiem ojczystym, więc komunikacja z mentorami może być trudna.
  • Społeczności GSoC pochodzą z całego świata, więc radzenie sobie z różnicami między strefami czasowymi może być trudne.
  • GSoC to program na tyle znany, że może być bardzo konkurencyjny, więc moje szanse są niewielkie.

Mogę jednak z pewnością stwierdzić, że żaden z tych problemów nie był problemem.

Zanim opowiem swoją historię, chciałbym opowiedzieć o czymś, co przydarzyło mi się na początku 2022 roku. Ten incydent był też dla mnie okazją do uczestnictwa w GSoC. Chodziło mi o przeniesienie rozszerzenia przeglądarki opartego na platformie Manifest V2 do platformy Manifest V3. Przed migracją trzeba było zapoznać się z dokumentacją i zrozumieć każdą zmianę interfejsu API. Musiałem też sprawdzić, czy są tam odpowiednie próbki. Zrozumienie nowego interfejsu API i przeniesienie kodu jest dla mnie nie lada wyzwaniem.

Dlatego właśnie przeglądając listę projektów GSoC, wpadłam na pomysł związany z MV3. Chętnie pomogę w ulepszaniu próbek rozszerzenia Manifest V3 i ułatwiam przyszłym deweloperom.

W marcu wysłałem do Olivera, jednego z opiekunów odpowiedzialnych za tę funkcję, e-maila z krótkim opisem mojego zamiaru:

Zgłoszenie do udziału w projekcie GSoC

Dzień dobry,

Jestem studentem informatyki z Chin. Na GSoC dowiedziałem się o projekcie związanym z przykładami rozszerzeń do Chrome i interesowałem się ulepszaniem platformy Manifest V3. Nie mam zbyt dużego doświadczenia w pracy nad próbkami interfejsów API, ale mam doświadczenie w tworzeniu stron internetowych i rozszerzeń MV3 (https://github.com/daidr/paimon-webext), co uświadomiło mi, jak ważne są próbki interfejsu API MV3. Chcę się uczyć i wnosić w nich udział. Czy nadal mogę zgłosić się do tego projektu?

Dziękujemy.

Niedługo potem dotarła do mnie odpowiedź od Oliwiera i Ali (szefa Olivera). Odpowiedzieli na moje pytania oraz przedstawili szczegółowe informacje na temat zasad i harmonogramu GSoC. Udostępniali mi też wiele cennych materiałów referencyjnych.

To było jak strzał w ramię, który wzmocnił moją determinację, aby pójść do przodu. Jeśli chcesz wziąć udział w nadchodzących wydarzeniach open source, niezależnie od tego, czy GSoC 2024, czy cokolwiek innego, musisz zrobić pierwszy krok. Wypróbuj go odważnie.

Przed przesłaniem wniosku sprawdziłem kod projektu i przejrzałem(-am) dokumentację. Chociaż GSoC zapewnia uczestnikom niemal miesięczny okres zacieśniania więzów ze społecznością, wcześniejsza wiedza zniwelowała presję i umożliwiła mi opracowanie bardziej ukierunkowanej oferty.

Próbowałem rozwiązać błędy startowe w ramach projektu. Omówione kwestie były stosunkowo proste i pomogły mi szybko zrozumieć, na czym polega projekt. Jestem wdzięczny za mój mentor, Oliverowi (chociaż wtedy nie był moim mentorem). Szybko odpowiadał na moje e-maile, gdy potrzebne były wyjaśnienia, i cierpliwie rozwiązywał moje problemy. Jeśli podczas pisania oferty napotkasz problemy, możesz też wysłać ją do swojego mentora, by sprawdzić, czy któreś obszary wymagają poprawy.

Akceptowanie

Napisanie oferty to ostatnia rzecz, jaką należy zrobić przed przesłaniem wniosku. Oprócz formularza zgłoszeniowego propozycja powinna zawierać pomysły, cele i harmonogram. W zależności od projektu, nad którym chcesz pracować, możesz otrzymać dodatkowy szablon propozycji. W internecie dostępnych jest wiele gotowych przykładowych propozycji.

Po utworzeniu wersji roboczej wysłałam ją do mojego mentora, aby się z nią zapoznał. Po przesłaniu zgłoszenia długo trzeba czekać. Na początku maja dotarły do mnie powiadomienie, że moje zgłoszenie zostało przyjęte.

Kodowanie

W początkowym okresie nawiązywania więzi najpierw zajmowałem się pozostałymi błędami występującymi na początku i sprawdzałem, czy udało mi się zdobyć nowe umiejętności. Resztę czasu spędzam na czytaniu dokumentacji.

Po rozmowie z mentorem doprecyzowaliśmy kilka celów, aby czas przydzielany na poszczególne zadania był bardziej rozsądny. Omówiliśmy też pomysł utworzenia nowej strony developers.chrome.com z listą wszystkich przykładów interfejsu API i udostępnieniem podstawowych filtrów, które ułatwią programistom szybkie znalezienie potrzebnych przykładów. Było to dla mnie dość złożone, dlatego zdefiniowanie projektu i opracowanie dokumentu wymagań dotyczących usług zajęło mi sporo czasu.

W przypadku tego większego zadania uznaliśmy, że potrzebny jest automatyczny skrypt w repozytorium przykładów, który przemierzy repozytorium i wygeneruje plik JSON zawierający listę przykładowych rozszerzeń i używanych przez nie interfejsów API. Ten plik jest teraz używany do utworzenia strony w repozytorium z dokumentacją programisty.chrome.com.

Początkowo zastanowiłem się nad użyciem Babel do przeanalizowania drzewa składni abstrakcyjnego przykładowego kodu i zidentyfikowania używanych w nim interfejsów API. Po podzieleniu się pomysłem z mentorką odkryłam, że ta osoba pracowała już nad podobnymi pomysłami, co potwierdza wiarygodność tej metody. Gdy stworzyłem kod, mój mentor i inni członkowie jego zespołu przekazali cenne sugestie dotyczące między innymi zwracania uwagi na segmentację kodu, standaryzację stylu kodu i odpowiedniego dokumentowania funkcji.

Po kilku dużych i małych zmianach kod został pomyślnie scalony. Cały wątek możesz znaleźć na GitHub lub wyświetlić stronę na żywo.

Podsumowanie

Jeśli zapytacie mnie, co przyniosło mi GSoC: najpierw trzeba oczywiście mieć świadomość wiedzy na temat interfejsów API rozszerzeń przeglądarki. Dzięki lekcjom dokumentacji i napisaniu nowych przykładów udało mi się szczegółowo zrozumieć różne interfejsy API rozszerzeń do przeglądarek.

Dodatkowo udało mi się zdobyć wiele umiejętności, z którymi nie miałam zbyt dużego doświadczenia przed przyjęciem do GSoC. Są to na przykład szkolenia w zakresie kompleksowej weryfikacji kodu i tworzenia PRD. Zacząłem też używać działań GitHub do automatyzacji przepływów pracy i nauczyłem się, jak za pomocą Babel przeglądać wszystkie przykłady rozszerzeń i śledzić używane interfejsy API. Poza tym moje pierwsze doświadczenia z silnikiem szablonów Nunjucks. Te umiejętności są niezbędne do programowania. Cieszę się, że je udało mi się poznać. Uczestnictwo w społecznościach open source sprawia mi radość.

To lato zapamiętało mi wiele niezapomnianych wspomnień. Kodowanie dostarcza mi dużo treści. Spotkałem się z mentorami od pacjentów, którzy mi pomogli, przekazali ciekawą wiedzę, wzbogacając moje doświadczenie.

Wiedza w dziedzinie informatyki jest nieograniczona. Gdy porównywałam siebie z innymi, zdałam sobie sprawę, że moja wiedza na temat open source to tylko wierzchołek góry lodowej. Jednak każda pomoc jest dla nas ważna. Uważam, że GSoC to świetny punkt wyjścia do uczestnictwa w modelu open source.

Mam również nadzieję, że moje doświadczenie pomoże Ci w przyszłym uczestnictwie w działaniach open source.

Oto kilka sugestii dla osób, które chcą wziąć udział w Google Summer of Code:

  1. Wybierz pomysł, który Ci odpowiada: uważam, że gdy szukasz pomysłów, na pierwszym miejscu stawiaj zainteresowania. Ta strategia pozwoli Ci utrzymać entuzjazm podczas całego procesu przekazywania darowizn.
  2. Jakość jest ważniejsza niż ilość: możesz przesłać wiele ofert, aby zwiększyć szansę na ich zaakceptowanie w GSoC. Uważam jednak, że jakość jest prawdopodobnie ważniejsza, ponieważ człowiek jest ograniczony. W końcu bardziej pomocne będzie skupienie się na dwóch lub trzech pomysłach.
  3. Nie bój się nowych rzeczy: wypróbuj technologie, z którymi nigdy nie zdarzyło Ci się korzystać w projekcie. Masz prawie miesiąc na więzi ze społecznością, aby zapoznać się z nieznanymi technologiami, a całe lato – aby je wdrożyć. Do dzieła!
  4. Zapoznaj się z projektem z wyprzedzeniem: możesz na przykład zapoznać się z dokumentacją programistyczną, przejrzeć historię wcześniejszych zatwierdzeń i problemów oraz przejrzeć wcześniejsze żądania pull. Wcześniejsze poznanie projektu pozwoli Ci przygotować bardziej kompleksową ofertę.
  5. Utrzymywanie kontaktu: regularnie rozmawiaj z mentorem i nie wahaj się zadawać pytań w trakcie rozwiązywania problemów – zarówno przed zgłoszeniem, jak i po zaakceptowaniu. Większość mentorów chętnie pomaga Ci w rozwiązywaniu problemów, dzięki czemu mogą również śledzić Twoje postępy.

Dziękuję za zapoznanie się z tą wiadomością.