Date de publication : 28 octobre 2025
Je m'appelle Harsh Singh. Je suis étudiant en dernière année de B.Tech en génie chimique à l'IIT (ISM) Dhanbad et j'ai participé au Google Summer of Code (GSOC) en 2025. Cet article raconte mon parcours pour être accepté au GSoC et certaines des choses que j'ai apprises en y participant.
Avant le GSoC : découvrir le développement d'extensions
Lors de ma première année, comme beaucoup d'autres, j'avais hâte de rejoindre CyberLabs, le club technologique officiel de notre université. Pour me préparer, je suis allé voir un élève de terminale qui m'a montré une extension Chrome qu'il avait créée pour entrer dans le club. C'était complètement différent du développement Web standard que je connaissais. Cela semblait être un moyen très intéressant d'injecter des scripts et de modifier des sites Web dans votre propre navigateur.
J'ai testé de nombreuses API d'extension et j'ai même assisté à la transition de Manifest V2 vers V3. J'ai réussi à créer un petit projet en les utilisant, j'ai rejoint CyberLabs, puis j'ai été occupé par la vie universitaire, laissant de côté le développement d'extensions pendant un certain temps.
Récemment, alors que je pensais à postuler au Google Summer of Code (GSoC), je suis tombé sur un projet concernant les API Chrome Extensions. La nostalgie m'a frappé de plein fouet : "Ne serait-il pas cool de créer une API que les étudiants de deuxième année pourraient utiliser pour accéder à CyberLabs ? Ce serait la meilleure façon de montrer votre soutien." Comme je comprends déjà la plupart des termes liés aux extensions grâce à mon expérience professionnelle, ce projet me semble idéal.
Préparer l'application
Sur un coup de tête, j'ai décidé de contacter Oliver, un ingénieur DevRel de l'équipe Extensions Chrome. Je lui ai demandé ce qu'il fallait faire pour être un candidat retenu au programme GSoC de Chromium. Il m'a répondu sous quelques jours ! Son e-mail était très encourageant. Il m'a dit qu'ils voulaient juste voir si j'étais capable d'explorer le codebase et d'écrire du code C++.
J'ai commencé par configurer Chromium sur mon ordinateur. J'ai vraiment eu du mal. Il m'a fallu quatre jours entiers et d'innombrables tentatives pour enfin configurer l'énorme base de code et obtenir une compilation réussie. J'ai trouvé un problème simple en ligne (quelque chose concernant sidePanel.open() sans geste de l'utilisateur) et j'ai envoyé un correctif pour le résoudre. (Avec le recul, il s'agissait d'un petit changement 🙂). J'ai envoyé un e-mail à Oliver pour lui faire part de mes progrès. Il m'a dit qu'ils ne prévoyaient pas de prendre en charge cette fonctionnalité, mais que le travail que j'avais effectué suffisait à montrer que j'étais sérieux. Il m'a ensuite suggéré de travailler sur la méthode getPosition pour le panneau latéral. J'ai trouvé la solution, je lui ai renvoyé un e-mail et il était ravi. Il m'a dit que mon approche correspondait à ce que son équipe avait discuté. Cela m'a donné confiance pour poursuivre le projet, sachant que je pouvais comprendre le code et le modifier.
Ma proposition GSoC
L'étape suivante consistait à rédiger la proposition GSoC. La description initiale du projet, "API SidePanel et API DNR", était très large. Je ne savais donc pas quelles tâches spécifiques lister ni comment créer un calendrier dans ma proposition. J'ai envoyé un e-mail à Olivier à ce sujet, et il m'a répondu qu'il avait modifié la description du projet. À ma grande joie, il avait ajouté plusieurs API, y compris l'API sidePanel.getPosition sur laquelle je travaillais déjà.
Les éléments clés de ma proposition étaient une compréhension du projet, des idées de conception, un travail de pré-proposition et un calendrier des livrables. J'ai correctement évalué la taille de mes tâches, car cela démontrait une compréhension approfondie du travail à accomplir. J'ai rédigé ma proposition et l'ai fait examiner deux fois.
Une chose que je regrette, et qui est un conseil important pour les futurs candidats, c'est de ne pas avoir inclus de spécifications de conception appropriées pour les fonctionnalités que je prévoyais de créer. Par exemple, lorsque je propose une API pour fermer le panneau latéral, je dois décrire les paramètres, justifier mes choix, expliquer comment je gérerais les cas extrêmes et décrire comment l'API pourrait être standardisée pour tous les navigateurs. Cela aurait montré une compréhension beaucoup plus approfondie.
Dans le contexte du projet d'extensions Chromium, le WECG (WebExtensions Community Group, prononcé "wee-C-G") est un organisme clé où les nouvelles conceptions d'API sont discutées de manière formelle. Pendant la période GSoC, les contributeurs devront peut-être présenter leurs propositions d'API à ce groupe. Par conséquent, avoir une idée de conception prête dans votre proposition GSoC est un énorme avantage, car cela montre aux mentors que vous êtes prêt pour cette étape cruciale et que vous vous débrouillez bien pendant la période GSoC.
Début mai, j'ai reçu un e-mail m'annonçant que j'avais été accepté. 🙂
Mes contributions pendant le GSoC
La période GSoC a été fantastique. Mon mentor, Solomon, était incroyablement gentil. Nous avons eu des réunions hebdomadaires productives qui m'ont permis de rester sur la bonne voie. J'ai également fait la connaissance d'un autre contributeur, Amit P, qui m'a beaucoup aidé lorsque j'étais frustré. Participer aux réunions du WECG m'a ouvert les yeux. J'ai vu comment les choses fonctionnaient à ce niveau et compris pourquoi l'expérience était si importante. J'y ai discuté de mes propositions d'API et j'ai obtenu le feu vert d'un autre fournisseur de navigateur.
J'ai ouvert plusieurs CL (changelists) au début. Ma progression a ralenti par la suite en raison des allers-retours des revues de code, mais j'étais heureux de continuer. Mes principales contributions fusionnées concernaient l'API Side Panel :
- API
sidePanel.getLayout() - API
sidePanel.close() - Événements
sidePanel.onOpened()etsidePanel.onClosed()(basés sur une proposition de cycle de vie de Microsoft)
Mes autres CL pour l'API Commands sont encore en cours de développement (selon mon niveau d'activité après le GSoC 🙂). Vous trouverez une analyse détaillée dans mon rapport final, disponible en cliquant sur le lien "Afficher le code" sur la page de mon projet GSoC.
Un grand merci à Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz et Andrea Orru, qui ont examiné presque toutes mes CL. C'est incroyable de voir mon code intégré à Chrome. Mes mentors m'ont décrit comme ayant un fort sentiment d'appartenance, ce qui était un énorme compliment pour moi.
Conclusion
Si vous me demandez ce que GSoC m'a apporté, je vous dirai que c'est bien plus que des connaissances techniques. Cela m'a permis de participer à des discussions importantes qui auront un impact sur plusieurs développeurs d'extensions. C'était la première fois que mon travail était utilisé dans une application concrète. J'ai rencontré des mentors patients qui m'ont guidée et m'ont beaucoup appris, ce qui a rendu toute l'expérience incroyablement enrichissante.
J'espère que mon histoire pourra servir de référence à d'autres personnes qui souhaitent contribuer à Chromium ou participer au Google Summer of Code.
Conseils pour les personnes qui souhaitent participer au GSoC
- Choisissez une idée qui vous plaît vraiment. L'intérêt doit être votre priorité absolue. Vous pouvez toujours améliorer vos compétences, mais c'est votre passion qui vous permettra de tenir le coup lorsque les choses deviendront difficiles. J'ai été des deux côtés, et croyez-moi : lorsque vous travaillez sur quelque chose qui ne vous intéresse pas, vous blâmez les autres quand les choses tournent mal. Toutefois, si vous aimez votre travail, vous le verrez comme un défi à relever.
- N'ayez pas peur de la concurrence. J'ai vu beaucoup de personnes se décourager après avoir vu qui d'autre postulait sur les chaînes de la communauté. Tout bon projet aura de la concurrence. Concentrez-vous sur vos points forts. Si vous avez déjà travaillé avec une bibliothèque, recherchez un projet qui l'utilise. Vous aurez un avantage, car vous pourrez apporter votre expérience unique.
- Reconnaissez la chance et concentrez-vous sur la communication. Soyons honnêtes, le GSoC implique une part de chance. Certains projets populaires reçoivent plus de 300 propositions pour un ou deux postes. Je doute que les mentors puissent lire chacun d'eux en détail. C'est pourquoi il est essentiel de communiquer rapidement. Impliquez-vous dans le projet à l'avance et assurez-vous que votre proposition est solide et va droit au but.
- Si vous n'êtes pas sélectionné, ce n'est pas la fin du monde. Vous disposez désormais de précieuses contributions Open Source sur votre CV. Utilisez-le pour postuler à d'autres opportunités estivales. Vous avez déjà fait le plus dur !
Enfin,
"Chacun a été créé pour une tâche particulière, et le désir de cette tâche a été mis dans chaque cœur." — Rumi
Merci de votre attention.