Google Summer of Code et extensions Chrome

En deuxième année, je viens de Chine et j'adore le développement Web. Au cours de ma première année, j'ai rejoint un club technique de notre université. Ce club a été mon introduction au codage et à l'Open Source. Dans le club, j'ai rencontré un groupe de partenaires partageant les mêmes idées et passionnés de codage. C'est grâce à eux que j'ai découvert Google Summer of Code au début de l'année 2023. Ce programme mondial organisé par Google met en relation les élèves avec des organisations Open Source et les aide à profiter au mieux de leur été en participant à des activités Open Source.

J'ai essayé et j'ai envoyé ma demande d'inscription. 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 également beaucoup appris: aptitudes de communication, de codage et de planification, entre autres.

Alors que le GSoC 2023 touche à sa fin, il peut être utile de partager certaines de mes expériences dans ce domaine. Grâce à ma propre participation, je vais vous présenter brièvement le processus général du GSoC, en espérant vous être utile.

Comment j'ai contribué au GSoC

J'ai postulé pour le projet Chromium GSoC 2023, dans lequel ma tâche principale consistait à mettre à niveau les exemples d'extensions Chrome existants pour qu'ils fonctionnent dans 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 préoccupations à l'époque:

  • Je suis introvertie et l'anglais n'est pas ma langue maternelle, donc communiquer avec les mentors peut être difficile.
  • Ces communautés viennent du monde entier, et il peut être difficile de gérer les différences de fuseau horaire.
  • Le GSoC est un programme si réputé qu'il peut être compétitif, ce qui réduit mes chances.

Cependant, je peux affirmer qu'aucun de ces problèmes n'a posé problème.

Avant de raconter mon histoire, j'aimerais parler d'un événement qui m'est arrivé au début de l'année 2022. Cet incident a aussi été l'occasion pour moi de participer au GSoC. Je souhaitais migrer une extension de navigateur basée sur Manifest V2 vers Manifest V3. Pour terminer la migration, j'ai dû me référer à la documentation et comprendre chaque modification de l'API. J'ai également dû chercher s'il existait des échantillons pertinents à titre de référence. Comprendre la nouvelle API et transférer le code est un défi pour moi.

C'est pourquoi j'ai été très enthousiaste à l'idée de parcourir la liste des projets GSoC et de saisir l'idée liée à MV3. J'étais impatiente de contribuer à améliorer les exemples d'extensions Manifest V3 et d'offrir un service aux futurs développeurs.

En mars, j'ai envoyé un bref e-mail à Oliver, l'un des mentors responsables, concernant mon intention:

La demande de participation au projet GSoC

Bonjour,

Je suis un étudiant chinois de premier cycle en informatique. J'ai découvert le projet lié aux exemples d'extensions Chrome au sein du GSoC et j'étais intéressé par l'amélioration des exemples Manifest V3. Je n'ai pas beaucoup d'expérience dans le travail d'exemples d'API, mais j'ai de l'expérience dans le développement Web et le développement d'extensions MV3 (https://github.com/daidr/paimon-WebEx), ce qui m'a fait prendre conscience de l'importance des exemples d'API MV3. J'aimerais 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 spécifiques et le calendrier du GSoC. Ils m'ont aussi partagé de nombreux documents de référence précieux.

C'était comme un coup dans le bras, ce qui a renforcé ma détermination à aller de l'avant. Si vous souhaitez participer aux événements Open Source à venir, qu'il s'agisse d'une conférence GSoC 2024 ou d'un autre événement, il est essentiel de franchir la première étape. N'hésitez pas et n'hésitez pas à l'essayer.

Avant de postuler, j'ai vérifié le code du projet et parcouru la documentation. Bien que le GSoC offre aux participants une période de cohésion de près d'un mois pour se familiariser avec celle-ci, les connaissances préalables ont réduit 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 (même s'il ne l'était pas encore à l'époque). Il a répondu rapidement à mes e-mails chaque fois que j'avais besoin de précisions et a résolu patiemment mes problèmes. Si vous rencontrez des problèmes lors de la rédaction d'une proposition, vous pouvez également l'envoyer à votre mentor pour voir si des domaines doivent être améliorés.

Préparation

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

Après avoir rempli le brouillon, je l'ai envoyé à mon mentor pour obtenir des commentaires. Une fois votre candidature envoyée, le temps d'attente est long. Début mai, j'ai reçu une notification m'informant que j'avais été accepté.

Travail de codage

Pendant la période d'association initiale, j'ai d'abord traité les bugs de démarrage restants et vérifié s'il y avait de nouvelles compétences que je devais apprendre. Et je passe le reste du temps à lire la documentation.

Après une discussion avec mon mentor, nous avons ajusté certains objectifs pour rendre le temps alloué aux tâches plus raisonnable. Nous avons également évoqué l'idée de créer une page developer.chrome.com répertoriant tous les exemples d'API et fournissant des filtres de base pour aider les développeurs à trouver rapidement les exemples dont ils ont besoin. Cette tâche était plutôt complexe, et mon mentor et moi-même avons pris beaucoup de temps pour définir le projet et rédiger un document sur les exigences produit.

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

J'ai d'abord envisagé d'utiliser Babel pour analyser l'arborescence de syntaxe abstraite 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'ils avaient déjà travaillé sur quelque chose de similaire, confirmant la faisabilité de cette approche. Après avoir terminé le code, mon mentor et d'autres membres de son équipe m'ont fait de précieuses suggestions, notamment en prêtant attention à la segmentation du code, en standardisant le style du code et en documentant correctement les fonctions.

Après plusieurs examens de grande et de petite envergure, le code a été fusionné avec succès. Vous pouvez retrouver l'intégralité du fil de discussion sur GitHub ou afficher la page en ligne.

Conclusion

Demandez-moi ce que le GSoC m'a apporté: tout d'abord, il s'agit de comprendre ce que sont les API d'extension de navigateur. En lisant la documentation et en rédigeant de nouveaux exemples, j'ai acquis des connaissances détaillées sur les différentes API d'extension de navigateur.

De plus, j'ai acquis de nombreuses compétences que je connaissais très peu avant d'être accepté pour un GSoC, comme suivre un processus d'examen complet du code et créer un document de demande d'autorisation. J'ai également commencé à utiliser les actions GitHub pour automatiser les workflows, et j'ai appris à utiliser Babel pour parcourir tous les exemples d'extensions et suivre les API utilisées. En outre, j'ai eu ma première expérience avec le moteur de création de modèles Nunjucks. Ces compétences sont essentielles en programmation et je suis ravie de les avoir apprises. Je suis ravie de participer à des communautés Open Source.

Cet été m'a laissé de nombreux souvenirs inoubliables. Le codage me donne beaucoup de contenu. J'ai rencontré des mentors patient qui m'ont guidé et m'ont appris des connaissances intéressantes, enrichissant mon expérience.

Les connaissances en informatique sont infinies. En me comparant à d'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 est utile. Je pense que le GSoC est un excellent point de départ pour participer au projet Open Source.

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

Voici quelques suggestions si vous souhaitez participer à Google Summer of Code:

  1. Choisissez l'idée qui vous convient: à mon avis, lorsque vous recherchez des idées, l'intérêt doit être votre priorité, suivi des compétences. Cette stratégie vous permettra de maintenir l'enthousiasme tout au long du processus de contribution.
  2. La qualité prime sur la quantité: vous pouvez soumettre de nombreuses propositions pour augmenter vos chances d'être acceptées pour le GSoC. Cependant, je crois que la qualité est probablement plus importante parce que l'énergie humaine est limitée. Se concentrer sur deux ou trois idées peut être plus utile au final.
  3. N'ayez pas peur des nouvelles choses: n'hésitez pas à essayer les technologies avec lesquelles vous n'avez pas travaillé dans un projet. Il vous reste près d'un mois de lien avec votre communauté pour vous familiariser avec des technologies que vous ne connaissez pas, et tout un été pour les implémenter. Lancez-vous !
  4. Familiarisez-vous avec le projet à l'avance: par exemple, lisez la documentation de développement, consultez l'historique et les problèmes des commits précédents, et parcourez les anciennes demandes d'extraction. Obtenir à l'avance une compréhension globale du projet 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 à poser des questions lorsque vous êtes confronté à 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 les problèmes ; de cette façon, ils peuvent également suivre vos progrès.

Merci de votre attention.