Google Summer of Code ed estensioni di Chrome

Sono al secondo anno dalla Cina e amo lo sviluppo web. Nel mio primo anno sono entrata in un club tecnico della nostra università. Questo club è stato la mia introduzione alla programmazione e all'open source. Nel club, ho incontrato un gruppo di partner affini che amano programmare. È stato loro che ho scoperto Google Summer of Code all'inizio del 2023. Questo programma globale organizzato da Google mette in contatto gli studenti con organizzazioni open source e li guida a sfruttare al meglio la loro estate partecipando ad attività open source.

Per provare, ho inviato la mia domanda di adesione. Fortunatamente la mia richiesta di partecipazione è stata accettata. L'estate che ho trascorso contribuire al repository Chrome Extension Samples è stata memorabile e preziosa. Ovviamente ho anche imparato molto: comunicazione efficace, competenze di programmazione e capacità di pianificazione, tra le altre cose.

Poiché GSoC 2023 volge al termine, vale la pena condividere alcune delle mie esperienze in GSoC. Questo post presenterà brevemente il processo generale di GSoC attraverso la mia partecipazione, spero di esservi utile.

Il mio contributo a GSoC

Ho fatto domanda per partecipare al progetto Chromium GSoC 2023, in cui la mia attività principale era eseguire l'upgrade degli esempi di estensioni di Chrome esistenti in modo che funzionino in Manifest V3, inclusi alcuni script e documenti correlati.

All'inizio

Ho scoperto GSoC per la prima volta a febbraio 2023, ma non sapevo ancora di voler fare domanda. Avevo dei dubbi a quei tempi:

  • Sono introversa e l'inglese non è la mia lingua madre, quindi comunicare con i mentori potrebbe essere difficile.
  • Le comunità GSoC provengono da tutto il mondo e gestire le differenze di fuso orario potrebbe essere difficile.
  • GSoC è un programma talmente famoso da essere competitivo, e le mie possibilità sembrano scarse.

Tuttavia, posso dire con certezza che nessuno di questi è stato un problema.

Prima di raccontare la mia storia, vorrei parlare di qualcosa che mi è successo all'inizio del 2022. Questo incidente mi è stato anche un'opportunità per partecipare a GSoC. Volevo eseguire la migrazione di un'estensione del browser basata su Manifest V2 a Manifest V3. Per completare la migrazione, ho dovuto fare riferimento alla documentazione e comprendere ogni modifica all'API. Inoltre, ho dovuto cercare se esistessero campioni pertinenti a scopo di riferimento. Capire la nuova API e trasferire il codice è piuttosto difficile per me.

Ecco perché ero molto entusiasta quando ho sfogliato l'elenco dei progetti GSoC e ho capito l'idea legata a MV3. Non vedevo l'ora di contribuire a migliorare gli esempi di estensione Manifest V3 e a fornire un servizio ai futuri sviluppatori.

A marzo ho mandato un'email a Oliver, uno dei mentori responsabili, con una breve email sulle mie intenzioni:

La candidatura per partecipare al progetto GSoC

Un saluto da Google,

Sono uno studente universitario in informatica cinese. Ho scoperto il progetto correlato a Chrome Extensions Samples in GSoC e volevo migliorare i Samples Manifest V3. Non ho molta esperienza nel lavorare sugli API Samples, tuttavia ho esperienza nello sviluppo web e nello sviluppo di estensioni MV3 (https://github.com/daidr/paimon-**) , il che mi ha fatto capire l'importanza dei campioni di API MV3, quindi vorrei sia imparare che contribuire. Posso comunque fare domanda per questo progetto?

Grazie.

Poco tempo dopo, ho ricevuto una risposta da Oliver e Ali (il capo di Oliver). Hanno risposto alle mie domande e mi hanno fornito informazioni dettagliate sulle regole specifiche e sulle tempistiche di GSoC. Hanno anche condiviso con me molti preziosi materiali di riferimento.

È stato come un colpo al braccio, che ha rafforzato la mia determinazione ad andare avanti. Fare il primo passo è fondamentale se ti interessa partecipare ai prossimi eventi open source, che si tratti di GSoC 2024 o qualsiasi altra cosa; non esitare mai e prova coraggiosamente.

Prima di fare domanda, ho controllato il codice del progetto e ho sfogliato la documentazione. Sebbene GSoC offra ai partecipanti un periodo di legame di quasi un mese per familiarizzare con la community, le conoscenze precedenti hanno ridotto la pressione e mi hanno permesso di scrivere una proposta più mirata.

Ho provato a risolvere i bug iniziali forniti dal progetto. Si trattava di problemi relativamente semplici e mi hanno aiutato a capire rapidamente il progetto. Sono grato al mio mentore Oliver (anche se non era il mio mentore allora). Ha risposto prontamente alle mie email ogni volta che avevo bisogno di chiarimenti e risolveva pazientemente i miei problemi. Quando riscontri problemi durante la stesura di una proposta, puoi anche inviarla al tuo mentore per vedere se ci sono aree da migliorare.

Essere accettati

Scrivi una proposta è l'ultima cosa da fare prima di applicarla. La proposta deve includere idee, obiettivi e un programma oltre al modulo di richiesta. A seconda del progetto su cui speri di lavorare, ti potrebbe essere fornito un modello aggiuntivo per la proposta. Molti esempi di proposte pronte all'uso sono disponibili online come riferimento.

Dopo aver completato la bozza, l'ho inviata al mio mentore per ricevere un feedback. Una volta inviata la domanda, c'è molto attesa. All'inizio di maggio, ho ricevuto una notifica di accettazione.

Attività di programmazione

Durante il periodo iniziale, ho affrontato i restanti bug iniziali e ho verificato se c'erano nuove competenze che dovevo imparare. Trascorro il resto del tempo a leggere la documentazione.

Dopo una discussione con il mio mentore, abbiamo modificato alcuni obiettivi per rendere più ragionevole il tempo destinato alle attività. Abbiamo anche parlato dell'idea per la creazione di una nuova pagina developer.chrome.com che elenca tutti gli esempi di API e di fornire filtri di base per aiutare gli sviluppatori a individuare rapidamente gli esempi necessari. È stato un compito piuttosto complesso per me e io e il mio mentore abbiamo impiegato un po' di tempo per definire il progetto e scrivere un documento sui requisiti del prodotto (PRD).

Per questa attività più ampia, abbiamo deciso di aver bisogno di uno script automatico nel repository di esempi per attraversare il repository e generare un file JSON contenente un elenco di esempi di estensioni e le API che utilizzano. Il repository della documentazione developer.chrome.com ora utilizza questo file per creare una pagina.

Inizialmente ho considerato l'utilizzo di Babel per analizzare l'albero della sintassi astratta del codice campione e identificare le API utilizzate. Dopo aver condiviso questa idea con il mio mentore, ho scoperto che in precedenza avevano lavorato a qualcosa di simile, confermando la fattibilità di questo approccio. Dopo aver completato il codice, il mio mentore e altri membri del suo team hanno fornito preziosi suggerimenti, tra cui prestare attenzione alla segmentazione del codice, standardizzare lo stile del codice e documentare correttamente le funzioni.

Dopo diverse revisioni, sia piccole che grandi, il codice è stato unito correttamente. Puoi trovare l'intero thread su GitHub o visualizzare la pagina pubblicata.

Conclusione

Se mi chiedi cosa mi ha portato GSoC: prima di tutto, ovviamente, è comprendere le conoscenze relative alle API di estensione del browser. Leggendo la documentazione e scrivendo nuovi esempi, ho acquisito una conoscenza dettagliata di varie API di estensioni del browser.

Inoltre, ho acquisito molte competenze a cui avevo poca esposizione prima di essere accettata per GSoC, come seguire un completo processo di revisione del codice e creare un PRD. Ho anche iniziato a utilizzare le azioni GitHub per automatizzare i flussi di lavoro e ho imparato a usare Babel per attraversare tutti gli esempi di estensioni e monitorare le API usate. Inoltre, ho avuto la mia prima esperienza con il motore per modelli di Nunjucks. Queste abilità sono essenziali per la programmazione e sono felice di averle imparate. Partecipare a community open source mi dà gioia.

Quest'estate mi ha dato molti ricordi indelebili. La programmazione mi rende molto contenuti. Ho incontrato mentori pazienti che mi hanno guidato e insegnato conoscenze interessanti, arricchendo la mia esperienza.

Le conoscenze nel campo dell'informatica sono infinite. Quando mi sono confrontata con altri soggetti, ho capito che la mia comprensione dell'open source era solo la punta dell'iceberg. Tuttavia, ogni piccolo aiuto. Credo che GSoC sia un ottimo punto di partenza per partecipare all'open source.

Spero anche che la mia esperienza possa essere di riferimento per la futura partecipazione ad attività open source.

Ecco alcuni dei miei suggerimenti per chiunque voglia partecipare a Google Summer of Code:

  1. Scegli un'idea adatta a te: ritengo che quando cerchi idee, l'interesse dovrebbe essere la tua priorità, seguito dalle competenze. Questa strategia ti consentirà di mantenere l'entusiasmo per tutta la durata del processo di contribuzione.
  2. Qualità più che quantità: puoi inviare molte proposte per aumentare le probabilità di accettazione per GSoC. Tuttavia, credo che la qualità sia probabilmente più importante perché l'energia umana è limitata. Concentrarsi su due o tre idee può essere più utile alla fine.
  3. Non avere paura delle cose nuove: non esitare a provare tecnologie con cui non hai lavorato in un progetto. Hai quasi un mese di legami con la community per familiarizzare con tecnologie sconosciute e un'intera estate per implementarle. Coraggio!
  4. Acquisisci familiarità con il progetto in anticipo: ad esempio, leggi attentamente la documentazione di sviluppo, esamina la cronologia e i problemi dei commit precedenti e scorri le richieste pull passate. Una comprensione generale del progetto in anticipo ti aiuterà a scrivere una proposta più completa.
  5. Mantieni la comunicazione: comunica regolarmente con il tuo mentore e non esitare a porre domande quando affronta i problemi, prima della candidatura o dopo essere stati accettati. La maggior parte dei mentori è disposta ad aiutarti a risolvere i problemi; in questo modo, possono anche tenere traccia dei tuoi progressi.

Grazie per l'attenzione.