Google Summer of Code i rozszerzenia do Chrome

Jestem studentem 2 roku z Chin, pasjonatem tworzenia stron internetowych. W pierwszym roku studiów dołączyłem do klubu technicznego na uczelni. Właśnie w tym klubie poznałem programowanie i oprogramowanie open source. W klubie poznałam grupę podobnie myślących partnerów, którzy kochają kodowanie. To właśnie od nich dowiedziałem się o Google Summer of Code na początku 2023 r. Ten globalny program organizowany przez Google łączy uczniów z organizacjami open source i pomaga im w lepszym wykorzystaniu wakacji dzięki udziałowi w projektach open source.

Przesłałem zgłoszenie, aby wypróbować tę aplikację. Na szczęście zostałem przyjęty. Lato, które spędziłam, pracując nad repozytorium przykładowych rozszerzeń do Chrome, było niezapomniane i bezcenne. Oczywiście dużo też się nauczyłem, m.in. skutecznej komunikacji, umiejętności kodowania i planowania.

Zbliża się koniec GSoC 2023, więc warto podzielić się moimi doświadczeniami z tego wydarzenia. W tym poście krótko opiszę ogólny proces GSoC na podstawie mojego udziału w nim. Mam nadzieję, że będzie to dla Ciebie pomocne.

Jak przyczyniłam się do Google Summer of Code

Zgłosiłam się do projektu Chromium GSoC 2023, w którym moim głównym zadaniem będzie uaktualnienie istniejących próbek rozszerzeń Chrome do pracy z Manifestem V3, w tym skryptów i dokumentów.

Na samym początku

Po raz pierwszy dowiedziałem się o GSoC w lutym 2023 r., ale nie byłem jeszcze pewien, czy chcę się zgłosić. Miałem wtedy kilka wątpliwości:

  • Jestem introwertykiem, 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, a radzenie sobie z różnicami w strefach czasowych może być trudne.
  • GSoC to tak znany program, że może być konkurencyjny, przez co moje szanse wydają się niewielkie.

Mogę jednak zapewnić, że żaden z nich nie był problemem.

Zanim opowiem swoją historię, chcę opowiedzieć o czymś, co przydarzyło mi się na początku 2022 r. To zdarzenie było też dla mnie okazją do udziału w GSoC. Chciałem przenieść rozszerzenie przeglądarki oparte na platformie Manifest V2 na platformę Manifest V3. Aby przeprowadzić migrację, musiałem zapoznać się z dokumentacją i zrozumieć wszystkie zmiany w interfejsie API. Musiałem też sprawdzić, czy są odpowiednie przykłady. Zrozumienie nowego interfejsu API i przeniesienie kodu jest dla mnie dość trudne.

Dlatego bardzo się ucieszyłem, gdy przeglądając listę projektów GSoC, natknąłem się na pomysł związany z MV3. Chcieliśmy przyczynić się do ulepszenia przykładowych rozszerzeń Manifest V3 i zapewnić wygodę przyszłym programistom.

W marcu wysłałem do Olivera, jednego z mentorów, krótki e-maila z informacją o moich planach:

zgłoszenie do udziału w projekcie GSoC,

Dzień dobry,

Jestem studentem informatyki z Chin. Dowiedziałem się o projekcie Sample Extensions w ramach GSoC i zainteresowało mnie ulepszenie przykładowych plików manifestu w wersji 3. Nie mam dużego doświadczenia w tworzeniu przykładów użycia interfejsu API, ale mam doświadczenie w programowaniu internetowym i rozwijaniu rozszerzeń MV3 (https://github.com/daidr/paimon-webext). Dzięki temu wiem, jak ważne są przykłady użycia interfejsu API MV3. Chcę się uczyć i wnosić swój wkład w ich tworzenie. Czy nadal mogę zgłosić się do tego projektu?

Dziękujemy.

Niedługo potem otrzymałem odpowiedź od Olivera i Ali (szefa Olivera). Odpowiedzi na moje pytania oraz szczegółowe informacje o konkretnych zasadach i harmonogramie GSoC. Udostępniły mi też wiele cennych materiałów referencyjnych.

To było jak zastrzyk motywacji, który wzmocnił moją determinację do działania. Jeśli chcesz wziąć udział w przyszłych wydarzeniach związanych z oprogramowaniem open source, takich jak GSoC 2024, musisz podjąć pierwszy krok. Nie wahaj się i odważnie spróbuj.

Zanim się zgłosiłem, sprawdziłem kod projektu i pośpiesznie przejrzałem dokumentację. Chociaż GSoC zapewnia uczestnikom miesiąc na zapoznanie się ze społecznością, wcześniejsze poznanie jej pozwoliło mi napisać bardziej ukierunkowaną propozycję.

Próbowałem rozwiązać błędy startera dostarczone przez projekt. Te problemy były stosunkowo proste i pozwoliły mi szybko zrozumieć projekt. Jestem wdzięczna mojemu mentorowi Oliverowi (chociaż wtedy jeszcze nim nie był). Gdy tylko potrzebowałem wyjaśnień, szybko odpowiadał na moje e-maile i cierpliwie rozwiązywał moje problemy. Jeśli podczas pisania propozycji napotkasz problemy, możesz ją wysłać do mentora, aby sprawdzić, czy trzeba coś poprawić.

Akceptacja

Przed przesłaniem zgłoszenia należy napisać propozycję. Propozycja powinna zawierać pomysły, cele i harmonogram, a także formularz zgłoszeniowy. W zależności od projektu, nad którym chcesz pracować, możesz otrzymać dodatkowy szablon oferty. W internecie można znaleźć wiele gotowych przykładów ofert.

Po ukończeniu wersji roboczej wysłałam ją do mojego mentora, aby uzyskać opinię. Po przesłaniu aplikacji trzeba długo czekać na odpowiedź. Na początku maja otrzymałem powiadomienie, że moja prośba została zaakceptowana.

Praca z kodem

W pierwszym okresie nawiązywania więzi zajmowałem się usuwaniem pozostałych błędów w starterze i sprawdzałem, czy są jakieś nowe umiejętności, których muszę się nauczyć. Reszta czasu idzie na czytanie dokumentacji.

Po rozmowie z moim mentorem dostosowaliśmy niektóre cele, aby czas przeznaczony na zadania był bardziej rozsądny. Omówiliśmy też pomysł utworzenia nowej strony na stronie developer.chrome.com, na której znajdowałyby się wszystkie przykłady interfejsu API oraz podstawowe filtry, które ułatwiałyby programistom szybkie znajdowanie potrzebnych przykładów. To było dla mnie dość skomplikowane zadanie, a mnie i moją mentorkę zajęło sporo czasu zdefiniowanie projektu i stworzenie dokumentu z wymaganiami dotyczącymi produktu (PRD).

W przypadku tego większego zadania uznaliśmy, że w repozytorium z próbkami potrzebujemy automatycznego skryptu, który będzie przeszukiwać repozytorium i generować plik JSON zawierający listę przykładowych rozszerzeń i interfejsów API, których używają. Repozytorium dokumentacji na stronie developer.chrome.com używa teraz tego pliku do tworzenia strony.

Najpierw rozważałem użycie Babel do przeanalizowania abstrakcyjnego drzewa składni przykładowego kodu i zidentyfikowania interfejsów API, których używa. Gdy podzieliłam się z moim mentorem tą koncepcją, okazało się, że pracował już wcześniej nad czymś podobnym. Potwierdził on, że to podejście jest wykonalne. Gdy skończyłem pisać kod, mój mentor i inni członkowie zespołu przekazali mi cenne sugestie, m.in. zwrócili uwagę na podział kodu, ujednolicenie stylu kodu i prawidłowe udokumentowanie funkcji.

Po kilku dużych i małych przeglądach kod został scalony. Cały wątek znajdziesz na GitHub lub otwórz stronę na żywo.

Podsumowanie

Jeśli zastanawiasz się, co dało mi GSoC, to przede wszystkim wiedza na temat interfejsów API rozszerzeń przeglądarki. Dzięki lekturze dokumentacji i pisaniu nowych przykładów lepiej poznałem różne interfejsy API rozszerzeń przeglądarki.

Dodatkowo zdobyłem wiele umiejętności, których nie miałem przed przyjęciem do GSoC, np. przeprowadzania kompleksowej weryfikacji kodu i tworzenia dokumentów PRD. Zaczęłam też używać akcji GitHub do automatyzacji przepływów pracy i nauczyłam się, jak używać Babel do przeglądania wszystkich przykładów rozszerzeń i śledzenia używanych interfejsów API. Poza tym po raz pierwszy korzystałem z silnika szablonów Nunjucks. Te umiejętności są niezbędne do programowania i jestem bardzo zadowolony, że je zdobyłem. Udział w społecznościach open source sprawia mi przyjemność.

To lato przyniosło mi wiele niezapomnianych wspomnień. Programowanie sprawia mi wielką przyjemność. Spotkałem się z cierpliwymi mentorami, którzy mnie prowadzili i przekazywali ciekawą wiedzę, wzbogacając moje doświadczenie.

Wiedza z zakresu informatyki jest nieskończona. Kiedy porównałem się z innymi, zdałem sobie sprawę, że moje zrozumienie oprogramowania open source to tylko wierzchołek góry lodowej. Jednak każda pomoc się przydaje. GSoC to świetny punkt wyjścia do udziału w projektach open source.

Mam też nadzieję, że moje doświadczenie przyda się w przyszłości podczas udziału w projektach 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: moim zdaniem podczas szukania pomysłów na pierwszym miejscu powinny znaleźć się zainteresowania, a na drugim umiejętności. Ta strategia pozwoli Ci utrzymać entuzjazm podczas całego procesu tworzenia.
  2. Jakość ponad ilość: możesz przesłać wiele propozycji, aby zwiększyć szanse na przyjęcie do programu GSoC. Uważam jednak, że jakość jest ważniejsza, ponieważ ludzka energia jest ograniczona. Skupienie się na 2 lub 3 pomysłach może okazać się bardziej pomocne.
  3. Nie bój się nowych rzeczy: nie wahaj się wypróbować technologii, których nie używasz w projekcie. Masz prawie miesiąc na zapoznanie się z nieznanymi technologiami i całe lato na ich wdrożenie. Do dzieła!
  4. Zapoznaj się z projektem z wyprzedzeniem: na przykład przeczytaj dokumentację programistyczną, sprawdź historię poprzednich zatwierdzeń i problemów oraz przejrzyj wcześniejsze prośby o przechwyt. Dzięki temu, że wcześniej zapoznasz się z ogólnym zakresem projektu, będziesz mieć możliwość stworzenia bardziej wyczerpującej oferty.
  5. Utrzymywanie kontaktu: regularnie komunikuj się z mentorem i nie wahaj się zadawać pytań, gdy napotkasz problemy, zarówno przed złożeniem wniosku, jak i po przyjęciu. Większość mentorów chętnie pomaga w rozwiązywaniu problemów. Dzięki temu mogą też śledzić Twoje postępy.

Dziękujemy za przeczytanie tego artykułu.