Data di pubblicazione: 28 ottobre 2025
Mi chiamo Harsh Singh, sono uno studente di ingegneria chimica all'ultimo anno del B.Tech presso l'IIT (ISM) Dhanbad e nel 2025 ho partecipato al Google Summer of Code (GSOC). Questo post racconta il mio percorso per essere accettato nel GSoC e alcune delle cose che ho imparato durante il mio coinvolgimento.
Prima di GSoC: scoprire lo sviluppo di estensioni
Nel mio primo anno, come molti altri, ero entusiasta di entrare a far parte di CyberLabs, il club tecnologico ufficiale del nostro college. Per prepararmi, ho chiesto a uno studente dell'ultimo anno che mi ha mostrato un'estensione di Chrome che aveva creato per entrare nel club. Era completamente diverso dallo sviluppo web standard che conoscevo. Sembrava un modo fantastico per inserire script e modificare i siti web sul proprio browser.
Ho provato molte API di estensione, assistendo anche alla transizione da Manifest V2 a V3. Sono riuscito a creare un piccolo progetto utilizzando le estensioni, sono entrato in CyberLabs e poi ho iniziato la vita universitaria, lasciando da parte lo sviluppo di estensioni per un po' di tempo.
Di recente, mentre pensavo di fare domanda per Google Summer of Code (GSoC), mi sono imbattuto in un progetto sulle API delle estensioni di Chrome. La nostalgia mi ha colpito duramente: "Non sarebbe bello creare un'API che in futuro uno studente del secondo anno potrebbe utilizzare per entrare in CyberLabs? Sarebbe la cosa migliore da fare." Poiché conosco già la maggior parte della terminologia delle estensioni grazie al mio lavoro precedente, il progetto mi sembra perfetto.
Preparazione all'applicazione
D'impulso, ho deciso di contattare Oliver, un engineering manager per le relazioni con gli sviluppatori del team delle estensioni di Chrome. Gli ho chiesto cosa servisse per essere un candidato di successo per il programma GSoC di Chromium. Mi ha risposto entro un paio di giorni. La sua email era molto incoraggiante: diceva che volevano solo vedere se ero in grado di esplorare il codebase e scrivere un po' di C++.
Ho iniziato configurando Chromium sul mio computer. È stata una vera lotta: ci ho messo quattro giorni interi e innumerevoli tentativi per configurare finalmente l'enorme codebase e ottenere una build riuscita. Ho trovato un problema semplice online, qualcosa che riguardava sidePanel.open() senza un gesto dell'utente, e ho inviato una patch per risolverlo. (Se ci penso, era una piccola modifica 🙂). Ho inviato un'email a Oliver per comunicare i miei progressi. Mi ha detto che non è qualcosa che hanno in programma di supportare, ma anche che il lavoro che avevo svolto era sufficiente a dimostrare che facevo sul serio. Poi mi ha suggerito di lavorare sul metodo getPosition per il pannello laterale. Ho capito, gli ho scritto di nuovo ed era molto felice, dicendo che il mio approccio era in linea con quello che il suo team aveva discusso. Questo mi ha dato la sicurezza di andare avanti con il progetto, sapendo che posso capire il codice e apportare modifiche.
La mia proposta GSoC
Il passo successivo è stato la proposta per il GSoC. La descrizione iniziale del progetto, "API SidePanel e API DNR", era molto generica, quindi non sapevo quali attività specifiche elencare o come creare una cronologia nella mia proposta. Ho inviato un'email a Oliver in merito e mi ha risposto che aveva aggiornato la descrizione del progetto. Con mia grande gioia, aveva aggiunto diverse API, tra cui l'API sidePanel.getPosition su cui stavo già lavorando.
I componenti chiave della mia proposta erano la comprensione del progetto, le idee di design, il lavoro preliminare alla proposta e un programma delle attività da svolgere. Ho definito con precisione le dimensioni delle mie attività, in quanto ciò dimostra una comprensione approfondita del lavoro da svolgere. Ho redatto la mia proposta e l'ho fatta esaminare due volte.
Una cosa che mi dispiace, e che consiglio vivamente ai futuri candidati, è di non aver incluso una specifica di progettazione adeguata per le funzionalità che avevo pianificato di creare. Ad esempio, quando ho proposto un'API per chiudere il riquadro laterale, avrei dovuto descrivere i parametri, giustificare le mie scelte, spiegare come avrei gestito i casi limite e descrivere come l'API avrebbe potuto essere standardizzata per tutti i browser. In questo modo avresti dimostrato un livello di comprensione molto più profondo.
Nel contesto del progetto delle estensioni di Chromium, un organo chiave è il WECG (WebExtensions Community Group, pronunciato "wee-C-G"), in cui vengono discussi formalmente i nuovi design delle API. Durante il periodo GSoC, i collaboratori potrebbero dover presentare le proprie proposte di API a questo gruppo. Pertanto, avere un'idea di progettazione pronta nella proposta GSoC è un enorme vantaggio, in quanto dimostra ai mentor che sei preparato per questo passaggio cruciale e che avrai successo durante il periodo GSoC.
All'inizio di maggio ho ricevuto l'email: ero stato accettato. 🙂
I miei contributi durante il GSoC
Il periodo del GSoC è stato fantastico. Il mio mentore, Solomon, è stato incredibilmente gentile e abbiamo avuto incontri settimanali produttivi che mi hanno aiutato a rimanere in linea con i miei obiettivi. Ho anche conosciuto un altro collaboratore, Amit P, che mi ha aiutato molto quando mi sentivo frustrato. Partecipare alle riunioni del WECG è stato illuminante: ho visto come funzionano le cose a quel livello e ho capito perché l'esperienza è così importante. Ho discusso le mie proposte di API e ho ricevuto il via libera da un altro fornitore di browser.
All'inizio ho aperto diverse CL (changelist). I miei progressi sono rallentati in seguito a causa dei continui scambi di revisioni del codice, ma ero felice di continuare. I miei principali contributi uniti riguardavano l'API Side Panel:
- API
sidePanel.getLayout() - API
sidePanel.close() sidePanel.onOpened()ed eventisidePanel.onClosed()(Questi si basavano su una proposta del ciclo di vita di Microsoft)
Le altre mie CL per l'API Commands sono ancora in fase di elaborazione (a seconda di quanto rimarrò attivo dopo GSoC 🙂). Puoi vedere una suddivisione dettagliata nel mio report finale, disponibile nel link "Visualizza codice" nella pagina del mio progetto GSoC.
Un ringraziamento speciale a Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz e Andrea Orru, che hanno esaminato quasi tutte le mie CL. È fantastico vedere il mio codice diventare parte di Chrome. I miei mentori mi hanno descritto come una persona con un forte senso di "responsabilità", il che per me è stato un grande complimento.
In sintesi
Se mi chiedi cosa mi ha dato il GSoC, ti rispondo che è molto più di una semplice conoscenza tecnica. Mi ha dato un posto al tavolo, dove si svolgevano discussioni importanti che avrebbero avuto un impatto su diversi sviluppatori di estensioni. È stato il mio primo lavoro a essere utilizzato in un'applicazione reale. Ho incontrato mentori pazienti che mi hanno guidato e insegnato molto, rendendo l'intera esperienza incredibilmente arricchente.
Spero che la mia storia possa essere un riferimento utile per altri che vogliono contribuire a Chromium o partecipare al Google Summer of Code.
Suggerimenti per le persone che fanno domanda per GSoC
- Scegli un'idea che ti piace davvero. Gli interessi devono essere la tua priorità assoluta. Le tue competenze possono sempre essere migliorate, ma la passione è ciò che ti farà andare avanti quando le cose si faranno difficili. Ho lavorato in entrambi i ruoli e fidati di me: quando lavori a qualcosa che non ti interessa, dai la colpa agli altri quando le cose vanno male. Tuttavia, se ami il tuo lavoro, lo vedrai come una sfida da superare.
- Non temere la concorrenza. Ho visto molte persone demotivate dopo aver visto chi altro fa domanda nei canali della community. Ogni buon progetto avrà concorrenza. Concentrati sui tuoi punti di forza. Se hai già lavorato con una libreria, trova un progetto che la utilizzi. Avrai un vantaggio perché potrai portare la tua esperienza unica.
- Riconosci la fortuna e concentrati sulla comunicazione. Ammettiamolo, GSoC richiede un po' di fortuna. Alcuni progetti popolari ricevono oltre 300 proposte per 1-2 slot. Dubito che i mentor possano leggere ogni singola richiesta nel dettaglio. Per questo motivo, la comunicazione tempestiva è fondamentale. Partecipa al progetto in anticipo e assicurati che la tua proposta sia solida e vada dritta al punto.
- Se non vieni selezionato, non è la fine. Ora hai preziosi contributi open source nel tuo curriculum. Utilizzalo per candidarti ad altre opportunità estive. Hai già fatto la parte più difficile.
Infine, ma non meno importante:
"Ognuno è stato creato per un lavoro particolare e il desiderio di quel lavoro è stato messo nel cuore di ognuno." — Rumi
Grazie per l'attenzione.