Jestem studentem 2. roku z Chin, pasjonatem tworzenia stron internetowych. W pierwszym roku studiów dołączyłem do klubu technicznego na uczelni. To było moje pierwsze zetknięcie się z programowaniem i oprogramowaniem open source. W klubie poznałem 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 pożytecznym spędzeniu lata dzięki udziałowi w projektach open source.
Przesłałem zgłoszenie. 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.
GSoC 2023 dobiega końca, więc warto podzielić się moimi wrażeniami z tego wydarzenia. W tym poście krótko omówię ogólny proces GSoC na podstawie mojego udziału w tym konkursie. Mam nadzieję, że okaże się on dla Ciebie przydatny.
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 uaktualnianie istniejących próbek rozszerzeń Chrome do pracy w wersji Manifest V3, w tym niektórych powiązanych skryptów i dokumentów.
Na samym początku
Po raz pierwszy dowiedziałem/dowiedziałam się o GSoC w lutym 2023 r., ale nie byłem/byłam jeszcze pewien/pewna, 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 for Chrome podczas GSoC i zainteresowało mnie ulepszenie przykładów pliku manifestu w wersji 3. Nie mam dużego doświadczenia w pracy nad przykładowymi interfejsami API, ale mam doświadczenie w programowaniu stron internetowych i rozszerzeń MV3 (https://github.com/daidr/paimon-webext), dzięki któremu zdaję sobie sprawę z ważności przykładowych interfejsów API MV3. Chcę się uczyć i wnosić swój wkład w ich rozwój. Czy mogę jeszcze 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 nadchodzących wydarzeniach związanych z oprogramowaniem open source, takich jak GSoC 2024, musisz podjąć pierwszy krok. Nie wahaj się i odważnie spróbuj.
Przed przesłaniem zgłoszenia 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 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 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łem się z moim mentorem tą koncepcją, okazało się, że pracował już wcześniej nad czymś podobnym, co potwierdziło wykonalność tego podejścia. 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 oczywiście wiedza na temat interfejsów API rozszerzeń przeglądarki. Dzięki przeczytaniu dokumentacji i napisaniu 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ładowych rozszerzeń i śledzenia używanych interfejsów API. Ponadto 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:
- 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.
- 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.
- Nie bój się nowych rzeczy: nie bój się testować 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!
- Zapoznaj się z projektem z wyprzedzeniem: przeczytaj na przykład dokumentację programistyczną, sprawdź historię poprzednich zatwierdzeń i problemów oraz przejrzyj poprzednie prośby o przechwyt. Dzięki temu, że wcześniej zapoznasz się z ogólnym zakresem projektu, będziesz mieć możliwość napisania bardziej wyczerpującej oferty.
- 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.