Gepubliceerd: 28 oktober 2025
Ik ben Harsh Singh, een laatstejaars B.Tech-student Chemische Technologie aan het IIT (ISM) Dhanbad. In 2025 nam ik deel aan Google Summer of Code (GSOC). In dit bericht deel ik mijn reis naar toelating tot GSoC en een aantal dingen die ik heb geleerd tijdens mijn deelname.
Vóór GSoC: het ontdekken van extensieontwikkeling
In mijn eerste jaar wilde ik, net als vele anderen, dolgraag lid worden van CyberLabs, de officiële technologieclub van onze universiteit. Ter voorbereiding ging ik naar een eindexamenkandidaat die me een Chrome-extensie liet zien die hij had gemaakt om lid te worden van de club. Het was totaal anders dan de standaard webontwikkeling die ik kende. Het leek me een geweldige manier om scripts te injecteren en websites in je eigen browser aan te passen.
Ik heb met veel extensie-API's geëxperimenteerd en zelfs de overgang van Manifest V2 naar V3 meegemaakt. Ik heb er een klein project mee gebouwd, ben bij CyberLabs terechtgekomen en ben daarna druk bezig geweest met mijn studentenleven, waardoor ik de ontwikkeling van extensies een tijdje heb laten liggen.
Onlangs, terwijl ik nadacht over een sollicitatie voor Google Summer of Code (GSoC), stuitte ik op een project over Chrome Extensions API's. De nostalgie sloeg me om het hart: "Zou het niet gaaf zijn om deze keer een API te maken die in de toekomst door een tweedejaarsstudent gebruikt zou worden om deel te nemen aan CyberLabs? Dat zou de beste optie zijn." Omdat ik de meeste extensieterminologie al begrijp van mijn eerdere werk, voelt het project perfect voor mij.
Voorbereiding op de aanvraag
In een opwelling besloot ik contact op te nemen met Oliver, een Developer Relations Engineer bij het Chrome Extensions-team. Ik vroeg hem wat er nodig was om succesvol te solliciteren naar Chromium's GSoC-programma. Hij antwoordde binnen een paar dagen! Zijn e-mail was erg bemoedigend; hij zei dat ze gewoon wilden zien of ik de codebase kon verkennen en wat C++ kon schrijven.
Ik begon met het installeren van Chromium op mijn machine. Het was een ware worsteling; het kostte me vier volle dagen en talloze pogingen om eindelijk de enorme codebase op te zetten en een succesvolle build te krijgen. Ik vond online een eenvoudig probleem – iets met sidePanel.open() zonder gebruikersgebaar – en diende een patch in om het te verhelpen. (Achteraf gezien was het een kleine verandering 🙂). Ik mailde Oliver over mijn voortgang. Hij vertelde me dat ze het niet van plan waren te ondersteunen, maar hij zei ook dat het werk dat ik had gedaan voldoende aantoonde dat ik het serieus meende. Hij stelde toen voor dat ik aan de getPosition methode voor het zijpaneel zou werken. Ik kwam erachter, mailde hem opnieuw en hij was erg blij. Hij zei dat mijn aanpak in lijn was met wat hun team had besproken. Dit gaf me het vertrouwen om verder te gaan met het project, wetende dat ik de code kon begrijpen en wijzigingen kon aanbrengen.
Mijn GSoC-voorstel
Vervolgens was het GSoC-voorstel aan de beurt. De oorspronkelijke projectbeschrijving, "SidePanel API's & DNR API's", was erg breed, dus ik wist niet zeker welke specifieke taken ik moest vermelden of hoe ik een tijdlijn in mijn voorstel moest maken. Ik mailde Oliver hierover en hij antwoordde dat hij de projectbeschrijving had bijgewerkt. Tot mijn vreugde had hij verschillende API's toegevoegd, waaronder de sidePanel.getPosition API waar ik al aan werkte.
De belangrijkste onderdelen van mijn voorstel waren een goed begrip van het project, ontwerpideeën, voorbereidend werk en een planning van de te leveren producten. Ik heb de omvang van mijn taken nauwkeurig ingeschat, omdat dit een grondig begrip van de werkzaamheden aantoonde. Ik heb mijn voorstel opgesteld en twee keer laten beoordelen.
Iets waar ik spijt van heb, en wat een belangrijke tip is voor toekomstige kandidaten, is dat ik geen goede ontwerpspecificatie heb toegevoegd voor de functies die ik wilde bouwen. Toen ik bijvoorbeeld een API voorstelde om het zijpaneel te sluiten, had ik de parameters moeten schetsen, mijn keuzes moeten rechtvaardigen, moeten uitleggen hoe ik met edge cases zou omgaan en moeten beschrijven hoe de API voor alle browsers gestandaardiseerd kon worden. Dit zou een veel dieper begrip hebben getoond.
Een belangrijk onderdeel van het Chromium-extensieproject is de WECG (WebExtensions Community Group, uitgesproken als "wee-CG"), waar nieuwe API-ontwerpen formeel worden besproken. Tijdens de GSoC-periode kunnen bijdragers hun API-voorstellen aan deze groep pitchen. Het is daarom een groot voordeel om een ontwerpidee in je GSoC-voorstel te hebben, omdat het mentoren laat zien dat je voorbereid bent op deze cruciale stap en dat je het goed doet tijdens de GSoC-periode.
Begin mei kreeg ik de e-mail: ik was aangenomen! 🙂
Mijn bijdragen tijdens GSoC
De GSoC-periode was fantastisch. Mijn mentor, Solomon, was ontzettend aardig en we hadden productieve wekelijkse vergaderingen die me op het goede spoor hielden. Ik leerde ook een collega kennen, Amit P, die me enorm hielp wanneer ik gefrustreerd raakte. Het bijwonen van de WECG-vergaderingen was een eyeopener; ik zag hoe de dingen daar werkten en begreep waarom ervaring zo belangrijk is. Ik besprak daar mijn API-voorstellen en kreeg groen licht van een andere browserleverancier.
In het begin opende ik verschillende CL's (changelists). Mijn voortgang vertraagde later door het heen-en-weer gemail van codereviews, maar ik was blij dat ik door kon gaan. Mijn belangrijkste samengevoegde bijdragen waren aan de Side Panel API:
-
sidePanel.getLayout()API -
sidePanel.close()API -
sidePanel.onOpened()ensidePanel.onClosed()gebeurtenissen (Deze waren gebaseerd op een levenscyclusvoorstel van Microsoft)
Mijn andere CL's voor de Commands API zijn nog in ontwikkeling (afhankelijk van hoe actief ik blijf na GSoC 🙂). Een gedetailleerde analyse vind je in mijn eindrapport, dat beschikbaar is via de link "code bekijken" op mijn GSoC-projectpagina.
Speciale dank aan Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz en Andrea Orru, die bijna al mijn CL's hebben beoordeeld. Het voelt fantastisch om te zien hoe mijn code onderdeel wordt van Chrome. Mijn mentoren beschreven me als iemand met een sterk gevoel van "eigenaarschap", wat een enorm compliment voor me was.
Afronden
Als je me vraagt wat GSoC me heeft gebracht, dan is het meer dan alleen technische kennis. Het gaf me een plek aan tafel – waar belangrijke discussies plaatsvonden, discussies die van invloed zullen zijn op verschillende extensieontwikkelaars. Het was mijn eerste werk dat in een echte toepassing terechtkwam. Ik ontmoette geduldige mentoren die me begeleidden en me zoveel leerden, wat de hele ervaring ongelooflijk verrijkend maakte.
Ik hoop dat mijn verhaal een nuttige referentie kan zijn voor anderen die een bijdrage willen leveren aan Chromium of deel willen nemen aan Google Summer of Code.
Tips voor mensen die zich aanmelden bij GSoC
- Kies een idee dat je echt leuk vindt. Interesse moet je topprioriteit zijn. Je vaardigheden kunnen altijd verbeterd worden, maar passie is wat je op de been houdt als het moeilijk wordt. Ik heb aan beide kanten gestaan en geloof me: als je aan iets werkt waar je geen interesse in hebt, geef je anderen de schuld als het misgaat. Maar als je van het werk houdt, zie je het als een uitdaging die je moet overwinnen.
- Wees niet bang voor concurrentie. Ik heb zoveel mensen gedemotiveerd zien raken nadat ze zagen wie er nog meer solliciteerden via de communitykanalen. Elk goed project kent concurrentie. Focus op je sterke punten. Als je al eerder met een bibliotheek hebt gewerkt, zoek dan een project dat daar gebruik van maakt. Je hebt een voorsprong omdat je je unieke ervaring kunt inbrengen.
- Erken geluk en focus op communicatie. Laten we eerlijk zijn, GSoC vereist een beetje geluk. Sommige populaire projecten ontvangen meer dan 300 voorstellen voor 1-2 slots. Ik betwijfel of mentoren elk voorstel tot in detail kunnen lezen. Daarom is vroege communicatie cruciaal. Betrek het project van tevoren en zorg ervoor dat je voorstel solide is en ter zake komt.
- Als je niet wordt geselecteerd, is dat nog niet het einde. Je hebt nu waardevolle open-sourcebijdragen op je cv staan. Gebruik die om te solliciteren naar andere zomerbanen. Je hebt het harde werk al gedaan!
En als laatste:
"Iedereen is gemaakt voor een bepaald werk, en het verlangen naar dat werk is in ieders hart gelegd." — Rumi
Bedankt voor het lezen.