Google Summer of Code en Chrome-extensies

Ik ben een tweedejaarsstudent uit China, gepassioneerd door webontwikkeling. In mijn eerste jaar werd ik lid van een technische club op onze universiteit. Deze club was mijn kennismaking met coderen en open source. In de club ontmoette ik een groep gelijkgestemde partners die van coderen houden. En van hen hoorde ik begin 2023 over Google Summer of Code. Dit door Google georganiseerde mondiale programma brengt studenten in contact met open-sourceorganisaties en begeleidt hen bij het goed benutten van hun zomer door deel te nemen aan open-sourceactiviteiten.

Ik probeerde het eens en diende mijn aanvraag in. Gelukkig werd ik aangenomen. De zomer waarin ik heb bijgedragen aan de Chrome Extension Samples-opslagplaats was gedenkwaardig en waardevol. Natuurlijk heb ik ook veel geleerd: onder meer effectieve communicatie, codeervaardigheden en planningsvaardigheden.

Nu GSoC 2023 ten einde loopt, is het de moeite waard om enkele van mijn ervaringen met GSoC te delen. Dit bericht zal kort het algemene proces van GSoC introduceren via mijn eigen deelname, in de hoop nuttig voor je te zijn!

Het verhaal van hoe ik heb bijgedragen aan GSoC

Ik heb me aangemeld voor het Chromium GSoC 2023-project, waar mijn hoofdtaak het upgraden van bestaande voorbeelden van Chrome-extensies zou zijn om te werken in Manifest V3, inclusief enkele gerelateerde scripts en documenten.

Helemaal aan het begin

Ik hoorde voor het eerst over GSoC in februari 2023, maar wist nog niet zeker of ik wilde solliciteren. Ik had toen een paar zorgen:

  • Ik ben introvert en Engels is niet mijn moedertaal, dus communicatie met mentoren kan een uitdaging zijn.
  • GSoC-gemeenschappen komen van over de hele wereld en het omgaan met tijdzoneverschillen kan moeilijk zijn.
  • GSoC is zo'n gerenommeerd programma dat het competitief kan zijn, waardoor mijn kansen klein lijken.

Ik kan echter met zekerheid zeggen dat geen van deze problemen een probleem was.

Voordat ik mijn verhaal vertel, wil ik het graag hebben over iets dat mij begin 2022 is overkomen. Dit incident was voor mij ook een kans om deel te nemen aan GSoC. Ik wilde een browserextensie gebaseerd op Manifest V2 naar Manifest V3 migreren. Om de migratie te voltooien, moest ik de documentatie raadplegen en elke API-wijziging begrijpen. Ook moest ik zoeken of er relevante referentiemonsters waren. Het begrijpen van de nieuwe API en het overbrengen van de code is voor mij een behoorlijke uitdaging.

Daarom was ik erg opgewonden toen ik door de GSoC-projectlijst bladerde en het idee met betrekking tot MV3 opmerkte. Ik wilde graag bijdragen aan het verbeteren van de Manifest V3-extensievoorbeelden en een voorziening bieden voor toekomstige ontwikkelaars.

In maart mailde ik Oliver, een van de verantwoordelijke mentoren, een korte e-mail over mijn voornemen:

De aanvraag om deel te nemen aan het GSoC-project

Hoi,

Ik ben een CS-student uit China. Ik hoorde over het Chrome Extensions Samples-gerelateerde project bij GSoC en ik was geïnteresseerd in het verbeteren van de Manifest V3-voorbeelden. Ik heb niet veel eerdere ervaring met het werken aan API-voorbeelden, maar ik heb wel ervaring met webontwikkeling en de ontwikkeling van MV3-extensies (https://github.com/daidr/paimon-webext), waardoor ik ben gaan beseffen hoe belangrijk het is MV3 API-voorbeelden, dus ik zou er graag van willen leren en eraan willen bijdragen. Kan ik mij nog aanmelden voor dit project?

Bedankt.

Niet lang daarna kreeg ik antwoord van Oliver en Ali (de baas van Oliver). Ze beantwoordden mijn vragen en gaven gedetailleerde informatie over de specifieke regels en tijdlijn van GSoC. Ze deelden ook veel waardevol referentiemateriaal met mij.

Het was als een schot in de arm, wat mijn vastberadenheid om verder te gaan versterkte. Het zetten van de eerste stap is van het grootste belang als u geïnteresseerd bent in deelname aan komende open-source-evenementen, of het nu gaat om GSoC 2024 of iets anders; aarzel nooit en probeer het moedig.

Voordat ik me aanmeldde, controleerde ik de projectcode en bladerde ik door de documentatie. Hoewel GSoC deelnemers een gemeenschapsbindingsperiode van bijna een maand biedt om vertrouwd te raken met de gemeenschap, verlichtte de voorkennis de druk en kon ik een gerichter voorstel schrijven.

Ik heb geprobeerd de starterbugs uit het project op te lossen. Deze problemen waren relatief eenvoudig en hielpen me het project snel te begrijpen. Ik ben dankbaar voor mijn mentor Oliver (hoewel hij toen niet mijn mentor was). Hij antwoordde onmiddellijk op mijn e-mails wanneer ik opheldering nodig had en loste geduldig mijn problemen op. Wanneer je problemen ondervindt tijdens het schrijven van een voorstel, kun je dit ook naar je mentor sturen om te zien of er punten zijn die verbetering behoeven.

Geaccepteerd worden

Een voorstel schrijven is het laatste wat u moet doen voordat u solliciteert. Het voorstel moet naast het aanvraagformulier ook ideeën, doelstellingen en een schema bevatten. Afhankelijk van het project waaraan u hoopt te werken, ontvangt u mogelijk een extra sjabloon voor het voorstel. Veel kant-en-klare voorstelvoorbeelden zijn online beschikbaar ter referentie.

Nadat ik het concept had voltooid, heb ik het voor feedback naar mijn mentor gestuurd. Als de aanvraag eenmaal is ingediend, is het lang wachten. En begin mei kreeg ik bericht dat ik was aangenomen.

Codewerk

Tijdens de eerste bindingsperiode heb ik eerst de resterende starterbugs aangepakt en gecontroleerd of ik nog nieuwe vaardigheden moest leren. En de rest van de tijd besteed ik aan het lezen van documentatie.

Na een gesprek met mijn mentor hebben we enkele doelen aangepast om de tijd die aan taken wordt besteed redelijker te maken. We hebben ook een idee besproken voor het maken van een nieuwe developer.chrome.com-pagina met alle API-voorbeelden en basisfilters waarmee ontwikkelaars de benodigde voorbeelden snel kunnen vinden. Het was een nogal complexe taak voor mij en het kostte mijn mentor en mij behoorlijk wat tijd om het project te definiëren en een productvereistendocument (PRD) te schrijven.

Voor deze grotere taak hebben we besloten dat we een geautomatiseerd script in de voorbeeldrepository nodig hadden om de repository te doorkruisen en een JSON-bestand te genereren met een lijst met extensievoorbeelden en de API's die ze gebruiken. De documentatieopslagplaats developer.chrome.com gebruikt dit bestand nu om een ​​pagina te bouwen.

Ik overwoog eerst om Babel te gebruiken om de abstracte syntaxisboom van de voorbeeldcode te analyseren en de gebruikte API's te identificeren. Nadat ik dit idee met mijn mentor had gedeeld, ontdekte ik dat ze eerder aan iets soortgelijks hadden gewerkt, wat de haalbaarheid van deze aanpak bevestigde. Nadat ik de code had voltooid, gaven mijn mentor en andere leden van zijn team waardevolle suggesties, waaronder aandacht besteden aan codesegmentatie, het standaardiseren van de codestijl en het correct documenteren van functies.

Na verschillende grote en kleine recensies werd de code succesvol samengevoegd. Je kunt de hele thread op GitHub vinden, of de livepagina bekijken .

Inpakken

Als je mij vraagt ​​wat GSoC mij heeft gebracht: in de eerste plaats is het natuurlijk het begrijpen van de kennis met betrekking tot browserextensie-API's. Door de documentatie te lezen en nieuwe voorbeelden te schrijven, kreeg ik een gedetailleerd inzicht in de verschillende API's van browserextensies.

Bovendien heb ik veel vaardigheden verworven waar ik weinig ervaring mee had voordat ik werd aangenomen voor GSoC, zoals het volgen van een uitgebreid codebeoordelingsproces en het maken van een PRD. Ik ben ook begonnen met het gebruik van GitHub-acties om workflows te automatiseren en heb geleerd hoe ik Babel kan gebruiken om alle extensievoorbeelden te doorlopen en de gebruikte API's bij te houden. Bovendien had ik mijn eerste ervaring met de Nunjucks-sjabloonengine. Deze vaardigheden zijn essentieel voor programmeren, en ik ben blij dat ik ze heb geleerd. Deelnemen aan open-sourcegemeenschappen geeft mij vreugde.

Deze zomer heeft mij veel onuitwisbare herinneringen gegeven. Codering maakt mij zeer tevreden. Ik ben geduldige mentoren tegengekomen die mij begeleidden en mij interessante kennis bijbrachten, waardoor mijn ervaring werd verrijkt.

De kennis op het gebied van informatica is eindeloos. Toen ik mezelf met anderen vergeleek, besefte ik dat mijn begrip van open source slechts het topje van de ijsberg was. Alle kleine beetjes helpen echter. Ik geloof dat GSoC een goed startpunt is voor deelname aan open source.

Ik hoop ook dat mijn ervaring enige referentie kan bieden voor toekomstige deelname aan open-sourceactiviteiten.

Hier zijn enkele van mijn suggesties voor iedereen die wil deelnemen aan Google Summer of Code:

  1. Kies een idee dat bij u past: Naar mijn mening moet bij het zoeken naar ideeën interesse uw prioriteit zijn, gevolgd door vaardigheden. Met deze strategie kunt u tijdens het hele contributieproces enthousiasme behouden.
  2. Kwaliteit boven kwantiteit: U kunt veel voorstellen indienen om de kans te vergroten dat u wordt geaccepteerd voor GSoC. Ik geloof echter dat kwaliteit waarschijnlijk belangrijker is omdat de menselijke energie beperkt is. Het kan uiteindelijk nuttiger zijn om je op twee of drie ideeën te concentreren.
  3. Wees niet bang voor nieuwe dingen: aarzel niet om technologieën uit te proberen waarmee u nog niet in een project hebt gewerkt. Je hebt bijna een maand gemeenschapsbinding om jezelf vertrouwd te maken met onbekende technologieën en een hele zomer om ze te implementeren. Ga er gewoon voor!
  4. Maak van tevoren kennis met het project: lees bijvoorbeeld de ontwikkelingsdocumentatie, bekijk de eerdere commitgeschiedenis en problemen, en blader door eerdere pull-aanvragen. Als u vooraf een algemeen inzicht in het project krijgt, kunt u een uitgebreider voorstel schrijven.
  5. Onderhoud communicatie: Communiceer regelmatig met je mentor en aarzel niet om vragen te stellen wanneer je met problemen wordt geconfronteerd, zowel vóór je sollicitatie als nadat je bent aangenomen. De meeste mentoren zijn bereid je te helpen bij het oplossen van problemen; Zo kunnen zij ook jouw voortgang volgen.

Bedankt voor het lezen.