Google Summer of Code ed estensioni di Chrome

Sono una studentessa del secondo anno di università in Cina e mi appassiona lo sviluppo web. Nel mio primo anno, ho aderito a un club tecnico del nostro college. Questo club è stato il mio primo approccio al codice e all'open source. Nel club ho incontrato un gruppo di partner che la pensano come me e amano la programmazione. Ed è stato da loro che ho saputo di 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 aiuta a sfruttare al meglio l'estate partecipando ad attività open source.

Ho provato a inviare la mia domanda. Fortunatamente, la mia domanda è stata accettata. L'estate che ho trascorso contribuendo al repository Samples per le estensioni di Chrome è stata indimenticabile e preziosa. Ovviamente ho anche imparato molto: comunicazione efficace, competenze di programmazione e capacità di pianificazione, tra le altre cose.

Con la fine del GSoC 2023 alle porte, vale la pena condividere alcune delle mie esperienze con il programma. Questo post introdurrà brevemente la procedura generale del GSoC attraverso la mia partecipazione, sperando di esserti utile.

La storia di come ho contribuito al GSoC

Ho presentato domanda per il progetto GSoC 2023 di Chromium, in cui la mia attività principale consisterà nell'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 sentito parlare per la prima volta del GSoC a febbraio 2023, ma non ero ancora sicuro di voler presentare domanda. Allora avevo alcuni dubbi:

  • Sono una persona introversa e l'inglese non è la mia lingua madre, quindi la comunicazione con i mentor potrebbe essere difficile.
  • Le community del GSoC provengono da tutto il mondo e gestire le differenze di fuso orario potrebbe essere difficile.
  • Il GSoC è un programma così rinomato che può essere competitivo, il che rende le mie possibilità scarse.

Tuttavia, posso affermare con certezza che nessuno di questi problemi si è verificato.

Prima di raccontarti la mia storia, vorrei parlarti di un episodio che mi è capitato all'inizio del 2022. Questo incidente è stato anche un'opportunità per me di partecipare al 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 dell'API. Ho anche dovuto verificare se erano disponibili esempi pertinenti da utilizzare come riferimento. Capire la nuova API e trasferire il codice è piuttosto complicato per me.

Ecco perché ero molto entusiasta quando ho sfogliato l'elenco dei progetti GSoC e ho colto l'idea relativa a MV3. Volevo contribuire a migliorare i Sample di estensioni Manifest V3 e offrire un'utilità per i futuri sviluppatori.

A marzo ho inviato una breve email a Oliver, uno dei mentori responsabili, per comunicargli la mia intenzione:

La domanda di partecipazione al progetto GSoC

Un saluto da Google,

Sono uno studente universitario di informatica in Cina. Ho appreso del progetto relativo ai Samples di estensioni di Chrome al GSoC e mi interessava migliorare i Samples Manifest V3. Non ho molta esperienza precedente con gli esempi di API, ma ho esperienza nello sviluppo web e nello sviluppo di estensioni MV3 (https://github.com/daidr/paimon-webext), che mi ha fatto capire l'importanza degli esempi di API MV3, quindi vorrei sia imparare che dare il mio contributo. Posso ancora presentare domanda per questo progetto?

Grazie.

Poco dopo, ho ricevuto una risposta da Oliver e Ali (il capo di Oliver). Hanno risposto alle mie domande e fornito informazioni dettagliate sulle regole e sulle tempistiche specifiche del GSoC. Inoltre, mi hanno fornito molti materiali di riferimento utili.

È stato come un'iniezione di fiducia, che ha rafforzato la mia determinazione a continuare. Fare il primo passo è fondamentale se ti interessa partecipare ai prossimi eventi open source, che si tratti del GSoC 2024 o di qualsiasi altro evento. Non esitare e provaci coraggiosamente.

Prima di presentare domanda, ho controllato il codice del progetto e dato un'occhiata alla documentazione. Sebbene il GSoC preveda un periodo di integrazione nella community di quasi un mese per consentire ai partecipanti di familiarizzare con la community, le conoscenze pregresse hanno alleviato la pressione e mi hanno permesso di scrivere una proposta più mirata.

Ho provato a risolvere i bug iniziali forniti dal progetto. Questi problemi erano relativamente semplici e mi hanno aiutato a comprendere rapidamente il progetto. Sono grato al mio mentore Oliver (anche se all'epoca non lo era). Ha risposto prontamente alle mie email ogni volta che avevo bisogno di chiarimenti e ha risolto i miei problemi con pazienza. Se riscontri problemi durante la stesura di una proposta, puoi anche inviarla al tuo mentore per verificare se ci sono aree che richiedono miglioramenti.

Accettare

La stesura di una proposta è l'ultima cosa da fare prima di presentare domanda. La proposta deve includere idee, obiettivi e un programma, oltre al modulo di richiesta. A seconda del progetto su cui vuoi lavorare, potresti ricevere un modello aggiuntivo per la proposta. Online sono disponibili molti esempi di proposte già pronte da utilizzare come riferimento.

Dopo aver completato la bozza, l'ho inviata al mio mentore per ricevere un feedback. Una volta inviata la richiesta, i tempi di attesa sono lunghi. All'inizio di maggio ho ricevuto una notifica che mi comunicava che la mia domanda era stata accettata.

Lavoro con il codice

Durante il periodo di accoppiamento iniziale, ho prima risolto i bug iniziali rimanenti e controllato se c'erano nuove competenze che dovevo acquisire. Il resto del tempo lo passo a leggere la documentazione.

Dopo una discussione con il mio mentore, abbiamo modificato alcuni obiettivi per rendere più ragionevole il tempo assegnato alle attività. Abbiamo anche discusso un'idea per creare una nuova pagina developer.chrome.com che elenca tutti i sample dell'API e fornisce filtri di base per aiutare gli sviluppatori a individuare rapidamente i sample necessari. Si trattava di un'attività piuttosto complessa per me e ci è voluto un po' di tempo per definire il progetto e scrivere un documento relativo ai requisiti del prodotto (PRD).

Per questa attività più grande, abbiamo deciso di avere bisogno di uno script automatico nel repository di esempi per eseguire la scansione del repository e generare un file JSON contenente un elenco di esempi di estensioni e le API utilizzate. Il repository della documentazione di developer.chrome.com ora utilizza questo file per creare una pagina.

Inizialmente ho considerato di utilizzare Babel per analizzare l'Abstract Syntax Tree del codice di esempio e identificare le API utilizzate. Dopo aver condiviso questa idea con il mio mentore, ho scoperto che in precedenza aveva 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 mi hanno fornito suggerimenti preziosi, tra cui prestare attenzione alla segmentazione del codice, standardizzare lo stile del codice e documentare correttamente le funzioni.

Dopo diverse revisioni, grandi e piccole, il codice è stato unito correttamente. Puoi trovare l'intero thread su GitHub o visualizzare la pagina in tempo reale.

Conclusioni

Se mi chiedi cosa mi ha dato il GSoC, innanzitutto, ovviamente, è la conoscenza delle API di estensioni 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 familiarità prima di essere accettato per il GSoC, ad esempio seguire una procedura di revisione del codice completa e creare un PRD. Ho anche iniziato a utilizzare le azioni GitHub per automatizzare i flussi di lavoro e ho imparato a utilizzare Babel per esaminare tutti i sample di estensioni e monitorare le API utilizzate. Inoltre, ho fatto la mia prima esperienza con il motore di template Nunjucks. Queste capacità sono essenziali per la programmazione e sono felice di averle apprese. Partecipare alle community open source mi rende felice.

Questa estate mi ha regalato molti ricordi indelebili. Il codice mi rende molto felice. Ho incontrato mentori pazienti che mi hanno guidato e mi hanno insegnato conoscenze interessanti, arricchendo la mia esperienza.

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

Spero inoltre che la mia esperienza possa essere di riferimento per la partecipazione futura 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: secondo me, quando cerchi idee, l'interesse deve essere la tua priorità, seguito dalle competenze. Questa strategia ti consentirà di mantenere alto l'entusiasmo per tutta la procedura di invio dei contributi.
  2. Qualità anziché quantità: puoi inviare molte proposte per aumentare le probabilità di essere accettato per il GSoC. Tuttavia, credo che la qualità sia probabilmente più importante perché l'energia umana è limitata. Alla fine, concentrarsi su due o tre idee potrebbe essere più utile.
  3. Non aver paura delle novità: non esitare a provare tecnologie con cui non hai mai lavorato in un progetto. Hai quasi un mese di tempo per familiarizzare con le tecnologie non familiari e un'intera estate per implementarle. Coraggio!
  4. Acquisisci familiarità con il progetto in anticipo: ad esempio, leggi la documentazione di sviluppo, controlla la cronologia dei commit e i problemi precedenti e dai un'occhiata alle pull request passate. Avere una conoscenza 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 riscontri problemi, sia prima di presentare domanda sia dopo l'accettazione. La maggior parte dei mentor è disponibile ad aiutarti a risolvere i problemi; in questo modo, può anche monitorare i tuoi progressi.

Grazie per l'attenzione.