Google Summer of Code et extensions Chrome

Je suis en deuxième année en Chine et je suis passionné par le développement Web. Au cours de ma première année, j'ai rejoint un club technique de notre université. Ce club m'a permis de découvrir le codage et l'Open Source. Dans ce club, j'ai rencontré un groupe de partenaires qui partagent les mêmes idées et qui aiment le codage. C'est grâce à eux que j'ai découvert Google Summer of Code début 2023. Ce programme mondial organisé par Google met en relation des étudiants avec des organisations Open Source et les aide à bien utiliser leur été en participant à des activités Open Source.

J'ai donc envoyé ma candidature. Heureusement, j'ai été accepté. L'été que j'ai passé à contribuer au dépôt d'exemples d'extensions Chrome a été mémorable et précieux. Bien sûr, j'ai aussi beaucoup appris: communication efficace, compétences en codage et capacités de planification, entre autres.

Alors que le GSoC 2023 touche à sa fin, je souhaite partager quelques-unes de mes expériences. Cet article présente brièvement le processus général du GSoC à travers ma propre participation. J'espère qu'il vous sera utile.

Comment j'ai contribué au GSoC

J'ai postulé au projet GSoC 2023 Chromium, dont ma tâche principale serait de mettre à niveau les exemples d'extensions Chrome existants pour qu'ils fonctionnent avec Manifest V3, y compris certains scripts et documents associés.

Au tout début

J'ai découvert le GSoC en février 2023, mais je n'étais pas encore sûr de vouloir postuler. J'avais quelques inquiétudes à l'époque:

  • Je suis introverti et l'anglais n'est pas ma langue maternelle. La communication avec les mentors pourrait donc être difficile.
  • Les communautés GSoC viennent du monde entier, et il peut être difficile de gérer les différences de fuseau horaire.
  • Le programme GSoC est tellement réputé qu'il peut être très concurrentiel, ce qui réduit mes chances de réussite.

Toutefois, je peux affirmer avec certitude qu'aucun de ces éléments n'a posé problème.

Avant de vous raconter mon histoire, je voudrais vous parler de ce qui m'est arrivé au début de l'année 2022. Cet incident m'a également permis de participer au GSoC. Je voulais migrer une extension de navigateur basée sur Manifest V2 vers Manifest V3. Pour effectuer la migration, j'ai dû consulter la documentation et comprendre chaque modification apportée à l'API. J'ai également dû rechercher s'il existait des exemples pertinents à titre de référence. Comprendre la nouvelle API et transférer le code est assez difficile pour moi.

C'est pourquoi j'ai été très enthousiaste lorsque j'ai parcouru la liste des projets GSoC et que j'ai eu l'idée de MV3. J'ai hâte de contribuer à améliorer les exemples d'extensions Manifest V3 et à offrir un service aux futurs développeurs.

En mars, j'ai envoyé un bref e-mail à Oliver, l'un des mentors en charge, pour lui expliquer mon intention:

La demande de participation au projet GSoC

Bonjour,

Je suis étudiant en informatique en Chine. J'ai découvert le projet lié aux exemples d'extensions Chrome lors du GSoC et je souhaitais améliorer les exemples de fichier manifeste V3. Je n'ai pas beaucoup d'expérience dans le travail sur des exemples d'API. Toutefois, j'ai de l'expérience dans le développement Web et le développement d'extensions MV3 (https://github.com/daidr/paimon-webext), ce qui m'a permis de réaliser l'importance des exemples d'API MV3. Je souhaite donc à la fois apprendre et y contribuer. Puis-je quand même postuler à ce projet ?

Merci.

Peu de temps après, j'ai reçu une réponse d'Oliver et d'Ali (le patron d'Oliver). Ils ont répondu à mes questions et m'ont fourni des informations détaillées sur les règles et le calendrier spécifiques du GSoC. Il m'a également fourni de nombreux documents de référence utiles.

Cela m'a donné un coup de fouet, renforçant ma détermination à aller de l'avant. Si vous souhaitez participer à des événements Open Source à venir, que ce soit le GSoC 2024 ou autre, il est essentiel de faire le premier pas. N'hésitez pas et essayez.

Avant de postuler, j'ai vérifié le code du projet et parcouru la documentation. Bien que le GSoC offre une période de consolidation de la communauté de près d'un mois pour que les participants se familiarisent avec la communauté, mes connaissances préalables ont atténué la pression et m'ont permis de rédiger une proposition plus ciblée.

J'ai essayé de résoudre les bugs de démarrage fournis par le projet. Ces problèmes étaient relativement simples et m'ont aidé à comprendre rapidement le projet. Je suis reconnaissant envers mon mentor Oliver (bien qu'il ne l'ait pas été à l'époque). Il a répondu rapidement à mes e-mails chaque fois que j'avais besoin d'éclaircissements et a patiemment résolu mes problèmes. Si vous rencontrez des difficultés lorsque vous rédigez une proposition, vous pouvez également l'envoyer à votre mentor pour voir si certains aspects doivent être améliorés.

Obtenir l'acceptation

La rédaction d'une proposition est la dernière chose à faire avant de postuler. La proposition doit inclure des idées, des objectifs et un calendrier en plus du formulaire de candidature. Selon le projet sur lequel vous souhaitez travailler, vous pouvez recevoir un modèle supplémentaire pour la proposition. De nombreux exemples de propositions prêts à l'emploi sont disponibles en ligne à titre de référence.

Une fois le brouillon terminé, je l'ai envoyé à mon mentor pour obtenir ses commentaires. Une fois la demande envoyée, vous devez patienter longtemps. Début mai, j'ai reçu une notification m'informant que j'avais été accepté.

Code Work

Pendant la période de rodage initiale, j'ai d'abord corrigé les bugs restants du démarrage et vérifié si je devais apprendre de nouvelles compétences. Et je passe le reste du temps à lire la documentation.

Après avoir discuté avec mon mentor, nous avons ajusté certains objectifs pour que le temps alloué aux tâches soit plus raisonnable. Nous avons également évoqué l'idée de créer une nouvelle page sur developer.chrome.com listant tous les exemples d'API et fournissant des filtres de base pour aider les développeurs à trouver rapidement les exemples dont ils ont besoin. C'était une tâche assez complexe pour moi. Mon mentor et moi-même avons mis un certain temps à définir le projet et à rédiger un document de spécifications produit (PRD).

Pour cette tâche plus importante, nous avons décidé d'avoir besoin d'un script automatisé dans le dépôt d'exemples pour parcourir le dépôt et générer un fichier JSON contenant une liste d'exemples d'extensions et des API qu'elles utilisent. Le dépôt de documentation developer.chrome.com utilise désormais ce fichier pour créer une page.

J'ai d'abord envisagé d'utiliser Babel pour analyser l'arbre syntaxique abstrait de l'exemple de code et identifier les API qu'il utilisait. Après avoir partagé cette idée avec mon mentor, j'ai découvert qu'il avait déjà travaillé sur quelque chose de similaire, ce qui a confirmé la faisabilité de cette approche. Une fois le code terminé, mon mentor et d'autres membres de son équipe m'ont fourni des suggestions précieuses, notamment en veillant à la segmentation du code, à la standardisation du style de code et à la documentation appropriée des fonctions.

Après plusieurs examens, le code a été fusionné. Vous pouvez consulter l'intégralité du fil de discussion sur GitHub ou accéder à la page en direct.

Conclusion

Si vous me demandez ce que le GSoC m'a apporté, je répondrai d'abord que j'ai acquis des connaissances sur les API des extensions de navigateur. En lisant la documentation et en écrivant de nouveaux exemples, j'ai acquis une compréhension détaillée des différentes API d'extension de navigateur.

De plus, j'ai acquis de nombreuses compétences que je connaissais peu avant d'être accepté pour le GSoC, comme suivre un processus de révision du code complet et créer un PRD. J'ai également commencé à utiliser les actions GitHub pour automatiser les workflows et appris à utiliser Babel pour parcourir tous les exemples d'extensions et suivre les API utilisées. De plus, j'ai eu ma première expérience avec le moteur de modèles Nunjucks. Ces compétences sont essentielles pour la programmation, et je suis ravi de les avoir apprises. Participer à des communautés Open Source me procure de la joie.

Cet été m'a laissé de nombreux souvenirs indélébiles. Le codage me rend très heureux. J'ai rencontré des mentors patients qui m'ont guidé et enseigné des connaissances intéressantes, ce qui a enrichi mon expérience.

Les connaissances dans le domaine de l'informatique sont infinies. En me comparant aux autres, j'ai réalisé que ma compréhension de l'open source n'était que la partie visible de l'iceberg. Cependant, chaque petit geste compte. Je pense que le GSoC est un excellent point de départ pour participer à l'Open Source.

J'espère également que mon expérience pourra servir de référence pour ma future participation à des activités Open Source.

Voici quelques suggestions pour toute personne souhaitant participer au Google Summer of Code:

  1. Choisissez une idée qui vous convient: à mon avis, lorsque vous cherchez des idées, l'intérêt doit être votre priorité, suivi des compétences. Cette stratégie vous permettra de maintenir votre enthousiasme tout au long du processus de contribution.
  2. Qualité avant quantité: vous pouvez envoyer de nombreuses propositions pour augmenter vos chances d'être accepté dans le programme GSoC. Toutefois, je pense que la qualité est probablement plus importante, car l'énergie humaine est limitée. Il peut être plus utile de se concentrer sur deux ou trois idées.
  3. N'ayez pas peur de l'innovation: n'hésitez pas à essayer des technologies que vous n'avez pas utilisées dans un projet. Vous disposez de près d'un mois de temps de communauté pour vous familiariser avec des technologies inconnues et d'un été entier pour les implémenter. Lancez-vous !
  4. Familiarisez-vous avec le projet à l'avance: par exemple, lisez la documentation de développement, examinez l'historique des commits et les problèmes précédents, et parcourez les demandes de tirage précédentes. Obtenir une compréhension globale du projet à l'avance vous aidera à rédiger une proposition plus complète.
  5. Maintenez la communication: communiquez régulièrement avec votre mentor et n'hésitez pas à lui poser des questions lorsque vous rencontrez des problèmes, que ce soit avant de postuler ou après avoir été accepté. La plupart des mentors sont prêts à vous aider à résoudre des problèmes. Ils peuvent ainsi suivre votre progression.

Merci de votre attention.