Gepubliceerd: 28 oktober 2025
Ik ben Harsh Singh, een laatstejaars B.Tech-student Chemische Technologie aan het IIT (ISM) Dhanbad en in 2025 nam ik deel aan Google Summer of Code (GSOC). In dit bericht deel ik mijn reis naar de toelating tot GSoC en een aantal dingen die ik heb geleerd tijdens mijn deelname.
Voorafgaand aan GSoC: Ontdekking van extensieontwikkeling
In mijn eerste jaar wilde ik, net als vele anderen, graag lid worden van CyberLabs, de officiële techclub van onze universiteit. Om me voor te bereiden, ging ik naar een ouderejaarsstudent die me een Chrome-extensie liet zien die hij had gemaakt om lid te worden. Het was totaal anders dan de standaard webontwikkeling die ik kende. Het leek me een supercoole manier om scripts te injecteren en websites in je eigen browser aan te passen.
Ik heb veel geëxperimenteerd met extensie-API's en heb zelfs de overgang van Manifest V2 naar V3 meegemaakt. Het is me gelukt om er een klein project mee te bouwen, ik ben bij CyberLabs terechtgekomen en daarna was ik druk met mijn studie, waardoor ik de ontwikkeling van extensies een tijdje heb laten liggen.
Toen ik onlangs overwoog om me aan te melden voor Google Summer of Code (GSoC), stuitte ik op een project over Chrome Extensions API's. De nostalgie sloeg meteen toe: "Zou het niet gaaf zijn om deze keer een API te maken die een tweedejaarsstudent in de toekomst zou kunnen gebruiken om toegelaten te worden tot CyberLabs? Dat zou echt opscheppen zijn." Omdat ik de meeste terminologie rondom extensies al ken van mijn eerdere werk, voelt het project als een perfecte match voor mij.
Voorbereiding op de aanvraag
Impulsief 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 in aanmerking te komen voor het GSoC-programma van Chromium. Hij antwoordde binnen een paar dagen! Zijn e-mail was erg bemoedigend; hij zei dat ze alleen wilden zien dat ik de codebase kon verkennen en wat C++ kon schrijven.
Ik begon met het installeren van Chromium op mijn computer. Dat was een hele klus; het kostte me vier volle dagen en talloze pogingen om de enorme codebase eindelijk te installeren en een succesvolle build te krijgen. Ik vond online een simpel probleem – iets met sidePanel.open() zonder een gebruikersactie – en diende een patch in om het op te lossen. (Achteraf gezien was het maar een kleine aanpassing 🙂). Ik mailde Oliver over mijn voortgang. Hij vertelde me dat ze het niet van plan waren te ondersteunen, maar zei ook dat het werk dat ik had verricht voldoende was om aan te tonen dat ik het serieus meende. Vervolgens stelde hij voor dat ik aan de getPosition methode voor het zijpaneel zou werken. Ik loste het op, mailde hem opnieuw en hij was erg blij, zeggend dat mijn aanpak overeenkwam met wat hun team had besproken. Dit gaf me het vertrouwen om verder te gaan met het project, wetende dat ik de code kan begrijpen en wijzigingen kan aanbrengen.
Mijn GSoC-voorstel
Vervolgens was het GSoC-voorstel aan de beurt. De oorspronkelijke projectbeschrijving, "SidePanel API's & DNR API's", was erg breed, waardoor ik niet zeker wist welke specifieke taken ik moest vermelden of hoe ik een tijdlijn in mijn voorstel moest opstellen. Ik mailde Oliver hierover en hij antwoordde dat hij de projectbeschrijving had bijgewerkt. Tot mijn grote vreugde had hij verschillende API's toegevoegd, waaronder de sidePanel.getPosition API waar ik al aan werkte.
De belangrijkste onderdelen van mijn voorstel waren inzicht in het project, ontwerpideeën, voorbereidend werk en een planning van de te leveren resultaten. Ik heb de omvang van mijn taken nauwkeurig afgebakend, wat aantoont dat ik de werkzaamheden grondig begrijp. Ik heb mijn voorstel opgesteld en twee keer laten nakijken.
Een van de dingen waar ik spijt van heb, en wat een belangrijke tip is voor toekomstige sollicitanten, is dat ik geen goede ontwerpspecificatie heb ingediend voor de functionaliteiten die ik wilde ontwikkelen. Toen ik bijvoorbeeld een API voorstelde om het zijpaneel te sluiten, had ik de parameters moeten beschrijven, mijn keuzes moeten onderbouwen, moeten uitleggen hoe ik met uitzonderingen zou omgaan en moeten beschrijven hoe de API gestandaardiseerd kon worden voor alle browsers. Dit zou een veel dieper inzicht hebben getoond.
Binnen het Chromium-extensieproject is de WECG (WebExtensions Community Group, uitgesproken als "wee-CG") een belangrijk orgaan waar nieuwe API-ontwerpen formeel worden besproken. Tijdens de GSoC-periode moeten bijdragers mogelijk hun API-voorstellen aan deze groep presenteren. Het is daarom een groot voordeel om al een ontwerpidee klaar te hebben in je GSoC-voorstel, omdat dit mentoren laat zien dat je voorbereid bent op deze cruciale stap en goed presteert 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 bijeenkomsten die me op het juiste spoor hielden. Ik leerde ook een medebijdrager kennen, Amit P, die me enorm hielp als ik gefrustreerd raakte. Het bijwonen van de WECG-bijeenkomsten was een eyeopener; ik zag hoe de zaken daar in elkaar zaten en begreep waarom ervaring zo belangrijk is. Ik besprak daar mijn API-voorstellen en kreeg groen licht van een andere browserleverancier.
Ik heb in het begin verschillende wijzigingslijsten (CL's) geopend. Mijn voortgang vertraagde later door het heen en weer sturen van codebeoordelingen, maar ik was blij dat ik ermee door kon gaan. Mijn belangrijkste bijdragen aan de code waren aan de Side Panel API:
-
sidePanel.getLayout()API -
sidePanel.close()API - De gebeurtenissen
sidePanel.onOpened()ensidePanel.onClosed()(deze waren gebaseerd op een lifecycle-voorstel van Microsoft).
Mijn andere codeaanvragen voor de Commands API zijn nog in ontwikkeling (afhankelijk van hoe actief ik blijf na GSoC 🙂). Je kunt een gedetailleerd overzicht vinden 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 codevoorstellen hebben beoordeeld. Het is fantastisch om te zien dat mijn code onderdeel is geworden van Chrome. Mijn mentoren omschreven me als iemand met een sterk gevoel van "eigenaarschap", wat een enorm compliment voor me was.
Tot slot
Als je me vraagt wat GSoC me heeft gebracht, dan is het meer dan alleen technische kennis. Het gaf me een plek aan de tafel – waar belangrijke discussies plaatsvonden, discussies die van invloed zullen zijn op talloze ontwikkelaars van extensies. Het was mijn eerste werk dat daadwerkelijk in een applicatie is gebruikt. Ik ontmoette geduldige mentoren die me begeleidden en me enorm veel leerden, waardoor de hele ervaring ontzettend waardevol was.
Ik hoop dat mijn verhaal een nuttig naslagwerk kan zijn voor anderen die willen bijdragen aan Chromium of deel willen uitmaken van Google Summer of Code.
Tips voor mensen die zich aanmelden voor GSoC
- Kies een idee dat je echt leuk vindt. Interesse moet je belangrijkste prioriteit zijn. Je vaardigheden kun je altijd verbeteren, maar passie is wat je gemotiveerd houdt als het moeilijk wordt. Ik heb beide kanten meegemaakt, 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 solliciteerde 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 dan een voordeel, omdat je jouw unieke ervaring kunt inbrengen.
- Erken dat geluk een rol speelt en focus op communicatie. Laten we eerlijk zijn, bij GSoC speelt geluk een rol. Sommige populaire projecten ontvangen meer dan 300 voorstellen voor slechts 1 of 2 plekken. Ik betwijfel of mentoren ze allemaal tot in detail kunnen lezen. Daarom is vroege communicatie cruciaal. Betrek jezelf van tevoren bij het project en zorg ervoor dat je voorstel sterk en to the point is.
- Mocht je niet geselecteerd worden, dan is dat nog niet het einde. Je hebt nu waardevolle open-source bijdragen op je cv staan. Gebruik dat om te solliciteren naar andere zomerprojecten. Je hebt het harde werk al gedaan!
En tot slot:
"Ieder is geschapen voor een bepaald werk, en het verlangen naar dat werk is in ieders hart gelegd." — Rumi
Bedankt voor het lezen.