Moja przygoda z GSoC: współtworzenie rozszerzeń do Chrome

Harsh Singh
Harsh Singh

Data publikacji: 28 października 2025 r.

Nazywam się Harsh Singh i jestem studentem ostatniego roku studiów inżynierskich na kierunku inżynieria chemiczna w IIT (ISM) Dhanbad.W 2025 roku brałem udział w programie Google Summer of Code (GSOC). W tym poście opisuję moją drogę do zakwalifikowania się do GSoC i niektóre rzeczy, których się nauczyłem podczas udziału w tym programie.

Przed GSoC: odkrywanie tworzenia rozszerzeń

Na pierwszym roku, podobnie jak wielu innych studentów, chciałem dołączyć do CyberLabs, oficjalnego klubu technicznego naszej uczelni. Aby się przygotować, poszedłem do starszego kolegi, który pokazał mi rozszerzenie do Chrome, które stworzył, aby dostać się do klubu. Było to zupełnie inne podejście do tworzenia stron internetowych niż to, które znałem. Wydawało się to świetnym sposobem na wstrzykiwanie skryptów i modyfikowanie stron internetowych w własnej przeglądarce.

Korzystałem z wielu interfejsów API rozszerzeń, a nawet byłem świadkiem przejścia z Manifestu V2 na V3. Udało mi się stworzyć mały projekt z ich wykorzystaniem, dostałem się do CyberLabs, a potem zająłem się studiami i na jakiś czas porzuciłem tworzenie rozszerzeń.

Niedawno, gdy zastanawiałem się nad zgłoszeniem do Google Summer of Code (GSoC), natknąłem się na projekt dotyczący interfejsów API rozszerzeń Chrome. Poczułem nostalgię – „Czy nie byłoby fajnie stworzyć tym razem interfejs API, z którego w przyszłości skorzysta student drugiego roku, aby wejść do CyberLabs? To byłby najlepszy sposób na pokazanie swoich możliwości”. Większość terminologii związanej z rozszerzeniami jest mi znana z poprzednich projektów, więc to zadanie idealnie do mnie pasuje.

Przygotowuję się do zastosowania

Spontanicznie postanowiłem skontaktować się z Oliverem, inżynierem ds. relacji z programistami w zespole ds. rozszerzeń do Chrome. Zapytałem go, co trzeba zrobić, aby zakwalifikować się do programu GSoC w Chromium. Odpowiedział w ciągu kilku dni. Jego e-mail był bardzo zachęcający. Napisał, że chcą tylko sprawdzić, czy potrafię poruszać się po bazie kodu i pisać w C++.

Zacząłem od skonfigurowania Chromium na moim komputerze. To była prawdziwa walka. Konfiguracja ogromnej bazy kodu i uzyskanie prawidłowej kompilacji zajęło mi 4 pełne dni i niezliczone próby. W internecie znalazłem prosty problem – dotyczył on sidePanel.open() bez gestu użytkownika – i przesłałem poprawkę. (Z perspektywy czasu była to niewielka zmiana 🙂). Wysłałem Oliverowi e-maila z informacją o postępach. Powiedział, że nie planują tego obsługiwać, ale dodał też, że wykonana przeze mnie praca wystarczyła, aby pokazać, że jestem poważnie zainteresowany. Następnie zaproponował mi pracę nad metodą getPosition w przypadku panelu bocznego. Wpadłem na to, wysłałem mu kolejnego maila i bardzo się ucieszył. Powiedział, że moje podejście jest zgodne z tym, co omawiał jego zespół. Dzięki temu zyskałem pewność, że mogę kontynuować projekt, ponieważ rozumiem kod i mogę wprowadzać w nim zmiany.

Moja propozycja GSoC

Następny był wniosek o GSoC. Początkowy opis projektu „SidePanel APIs & DNR APIs” był bardzo ogólny, więc nie wiedziałem, jakie konkretne zadania wymienić ani jak utworzyć harmonogram w propozycji. Wysłałem do Oliwiera e-maila w tej sprawie, a on odpisał, że zaktualizował opis projektu. Ku mojemu zadowoleniu dodał kilka interfejsów API, w tym sidePanel.getPosition API, nad którym już pracowałem.

Kluczowe elementy mojej propozycji to zrozumienie projektu, pomysły na projekt, praca przed złożeniem propozycji i harmonogram dostaw. Dokładnie określiłem zakres moich zadań, co świadczy o tym, że dobrze rozumiem, na czym polega praca. Przygotowałem(-am) ofertę i dwukrotnie ją sprawdziłem(-am).

Żałuję, że nie uwzględniłem odpowiedniej specyfikacji projektu funkcji, które planowałem stworzyć. To ważna wskazówka dla przyszłych kandydatów. Na przykład, proponując interfejs API do zamykania panelu bocznego, powinienem był przedstawić parametry, uzasadnić swoje wybory, wyjaśnić, jak poradziłbym sobie w przypadku nietypowych sytuacji, i opisać, jak można by ustandaryzować interfejs API dla wszystkich przeglądarek. To świadczyłoby o znacznie większym zrozumieniu.

W kontekście projektu rozszerzeń Chromium kluczową rolę odgrywa grupa WECG (WebExtensions Community Group, wymawiana „wee-C-G”), w której formalnie omawiane są nowe projekty interfejsów API. W okresie GSoC uczestnicy mogą przedstawiać swoje propozycje interfejsów API tej grupie. Dlatego przygotowanie pomysłu na projekt w propozycji GSoC jest ogromną zaletą, ponieważ pokazuje mentorom, że jesteś gotowy na ten kluczowy krok i dobrze sobie poradzisz w okresie GSoC.

Na początku maja otrzymałem e-maila z informacją, że zostałem przyjęty. 🙂

Mój wkład w GSoC

Okres GSoC był fantastyczny. Mój mentor, Solomon, był niezwykle miły, a nasze cotygodniowe spotkania były bardzo produktywne i pomagały mi utrzymać właściwy kierunek. Poznałem też innego współtwórcę, Amita P., który bardzo mi pomagał, gdy czułem się sfrustrowany. Udział w spotkaniach WECG otworzył mi oczy. Zobaczyłem, jak to wszystko działa na tym poziomie, i zrozumiałem, dlaczego doświadczenie ma tak duże znaczenie. Omówiłem tam moje propozycje interfejsów API i otrzymałem zgodę od innego dostawcy przeglądarki.

Na początku otworzyłem kilka list zmian. Później moje postępy zwolniły z powodu ciągłego sprawdzania kodu, ale nie zniechęciło mnie to. Moje główne scalone zmiany dotyczyły interfejsu Side Panel API:

Moje pozostałe listy zmian dotyczące interfejsu Commands API są nadal w trakcie opracowywania (w zależności od tego, jak aktywny będę po zakończeniu GSoC 🙂). Szczegółowe informacje znajdziesz w moim raporcie końcowym, który jest dostępny pod linkiem „Wyświetl kod” na stronie mojego projektu GSoC.

Specjalne podziękowania dla Olivera Dunka, Solomona Kinarda, Kelvina Jianga, Devlina Cronina, Toma Lukaszewicza i Andrei Orru, którzy sprawdzili prawie wszystkie moje zmiany. To wspaniałe uczucie, gdy mój kod staje się częścią Chrome. Moi mentorzy mówili, że mam silne poczucie „odpowiedzialności”, co było dla mnie ogromnym komplementem.

Podsumowanie

GSoC dał mi więcej niż tylko wiedzę techniczną. Dzięki temu mogłem uczestniczyć w ważnych dyskusjach, które będą miały wpływ na wielu deweloperów rozszerzeń. To była moja pierwsza praca, która znalazła zastosowanie w praktyce. Poznałam pacjentów, którzy byli dla mnie mentorami. Wiele się od nich nauczyłam, dzięki czemu całe to doświadczenie było niezwykle wzbogacające.

Mam nadzieję, że moja historia będzie przydatna dla innych osób, które chcą współtworzyć Chromium lub wziąć udział w programie Google Summer of Code.

Wskazówki dla osób, które chcą wziąć udział w GSoC

  1. Wybierz pomysł, który Ci się podoba. Odsetki powinny być Twoim priorytetem. Umiejętności zawsze można doskonalić, ale to pasja pomoże Ci wytrwać, gdy pojawią się trudności. Byłem po obu stronach i wierz mi: gdy pracujesz nad czymś, co Cię nie interesuje, będziesz obwiniać innych, gdy coś pójdzie nie tak. Jeśli jednak lubisz swoją pracę, potraktujesz to jako wyzwanie do pokonania.
  2. Nie bój się konkurencji. Widziałem wiele osób, które straciły motywację po zobaczeniu, kto jeszcze zgłasza się na kanałach społeczności. Każdy dobry projekt będzie miał konkurencję. Skup się na swoich mocnych stronach. Jeśli masz już doświadczenie z jakąś biblioteką, znajdź projekt, który jej używa. Będziesz mieć przewagę, ponieważ możesz wnieść do zespołu swoje unikalne doświadczenie.
  3. Doceniaj szczęście i skup się na komunikacji. Nie oszukujmy się, GSoC to trochę kwestia szczęścia. Niektóre popularne projekty otrzymują ponad 300 propozycji na 1–2 miejsca. Wątpię, czy mentorzy są w stanie dokładnie przeczytać każdą z nich. Dlatego wczesna komunikacja jest kluczowa. Zaangażuj się w projekt z wyprzedzeniem i upewnij się, że Twoja oferta jest solidna i konkretna.
  4. Jeśli nie zostaniesz wybrany(-a), to nie koniec świata. W Twoim CV znajdują się teraz cenne projekty open source. Wykorzystaj je, aby ubiegać się o inne możliwości letnie. Masz już opublikowane na swojej stronie doskonałe treści.

Na koniec:

„Każdy człowiek został stworzony do jakiejś konkretnej pracy, a pragnienie tej pracy zostało włożone w każde serce”. – Rumi

Dziękujemy za przeczytanie tego artykułu.