Aller au contenu principal

10 ans d'Electron 🎉

· 12 mins de lecture

Le premier commit dans le dépÎt electron/electron date du 13 mars 20131.

Commit initial sur electron/electron par @aroben

10 ans et 27 147 commits supplĂ©mentaires de 1192 contributeurs uniques plus tard, Electron est devenu l'un des frameworks les plus populaires pour la construction d'applications de bureau aujourd'hui. Ce Ă©tape importante est l'occasion parfaite de cĂ©lĂ©brer et de rĂ©flĂ©chir au parcours effectuĂ© jusqu’à maintenant, et de partager ce que nous avons appris au fil du temps.

Nous ne serions pas ici aujourd’hui sans tous ceux qui ont consacrĂ© leur temps et leurs efforts Ă  ce projet. Bien que les commits de code source soient toujours les contributions les plus visibles, nous devons Ă©galement saluer les efforts des personnes qui signalent les bogues, tiennent Ă  jour les modules d’utilisateur, fournissent de la documentation et des traductions, et participent Ă  la communautĂ© Electron Ă  travers le cyberespace. Chaque contribution est inestimable pour nous en tant que responsables.

Avant de continuer avec le reste du billet : un grand merci. ❀

Comment en sommes-nous arrivĂ©s lĂ ?​

Atom Shell a Ă©tĂ© construit pour ĂȘtre la colonne vertĂ©brale de l’éditeur Atom de GitHub, prĂ©sentĂ© au public en version bĂȘta en avril 2014. Construit en partant de zĂ©ro comme une alternative aux framework de bureau basĂ© sur le web disponibles Ă  l’époque (node-webkit et Chrome Embedded Framework). Son aspect le plus remarquable etait d' intĂ©grer Node.js et Chromium pour fournir un environnement d’exĂ©cution de bureau puissant aux technologies web.

En moins d’un an, Atom Shell a commencĂ© Ă  voir une croissance trĂšs importante en terme de capacitĂ©s et de popularitĂ©. Les grandes entreprises, les startups et les dĂ©veloppeurs individuels ont commencĂ© Ă  l'utiliser pour construire des applications (parmi les premiers utilisateurs figurent Slack, GitKraken et WebTorrent), et le projet a Ă©tĂ© renommĂ© judicieusement Electron.

A partir de ce moment, Electron a dĂ©marrĂ© sur les chapeaux de roue et ne s'est jamais arrĂȘtĂ©. Voici un aperçu de notre decompte hebdomadaire de tĂ©lĂ©chargements au fil du temps, c'est une gracieusetĂ© de npmtrends.com :

Graphique des téléchargements hebdomadaires d'Electron au fil du temps

Electron v1 a été publié en 2016, promettant une meilleure stabilité de l'API et de meilleurs outils et documentation. Electron v2 a été publié en 2018 et a introduit le versionnage sémantique, ce qui permet aux développeurs d'Electron de garder une trace du cycle de publication.

Avec Electron v6, nous sommes passés à une cadence réguliÚre de 12 semaines pour s'aligner sur celle de Chromium. Cette décision a été un changement de mentalité pour le projet, le fait d'avoir la version Chromium la plus à jour passant d'un souhait à une priorité. Cela a réduit la dette technologique entre les mises à niveau, ce qui nous a permis de garder Electron à jour et sécurisé.

Depuis lors, la machine tourne bien avec une nouvelle version Electron publiĂ©e le mĂȘme jour que Chromium pour chaque version stable. Lorsque Chromium a accĂ©lĂ©rĂ© sa cadence de libĂ©ration en passant Ă  4 semaines en 2021, nous avons modifiĂ© sans problĂšme la notre en consĂ©quence.

Nous sommes maintenant Ă  Electron v23 et nous sommes toujours dĂ©diĂ©s Ă  construire le meilleur runtime pour crĂ©er des applications de bureau multiplateformes. MĂȘme avec l'explosion du nombre d'outils de dĂ©veloppement JavaScript ces derniĂšres annĂ©es, Electron est restĂ© un pilier stable et Ă©prouvĂ© de la conception d'application pour bureau. Les applications Electron sont omniprĂ©sentes de nos jours : vous pouvez programmer avec Visual Studio Code, concevoir avec Figma, communiquez avec Slack, et prendre des notes avec Notion (entre autres choses). Nous sommes incroyablement fiers de ce rĂ©sultat et nous sommes reconnaissants envers tous ceux qui ont rendus ce projet possible.

Qu’avons-nous appris en cours de route?​

Le chemin pour atteindre cette décennie a été long et sinueux. Voici quelques éléments clés qui nous ont aidés à gérer ce grand projet open source de façon durable.

Redimensionnement de la prise de dĂ©cision rĂ©partie avec un modĂšle de gouvernance​

Un des dĂ©fis que nous avons dĂ» surmonter Ă©tait de gĂ©rer la direction Ă  long terme du projet lorsque la popularitĂ© d'Electron a explosĂ©. Comment gĂ©rer le projet avec une Ă©quipe de quelques dizaines d’ingĂ©nieurs rĂ©partis dans diffĂ©rentes entreprises, dans diffĂ©rents pays et sous diffĂ©rents fuseaux horaires?

Dans les premiers temps, le groupe de mainteneurs d’Electron s'est fiĂ© Ă  une coordination informelle, qui Ă©tait rapide et lĂ©gere pour les petits projets, mais ne pouvait pas s'adapter Ă  une collaboration plus large. En 2019, nous sommes passĂ©s Ă  un modĂšle de gouvernance avec diffĂ©rents groupes de travail ayant des domaines de responsabilitĂ© officiels. Cela a Ă©tĂ© dĂ©terminant pour la rationalisation des processus et l’attribution de de certaines parties du projet Ă  des responsables spĂ©cifiques. Voici, de nos jours, la rĂ©partition des responsabilitĂ©s des groupes de travail (GT):

  • Assurer la publication des versions d'Electron (Releases WG)
  • Mettre Ă  jour Chromium et Node.js (Upgrades WG)
  • Surveiller la conception de l'API publique (API WG)
  • Garder Electron sĂ©curisĂ© (Security WG)
  • GĂ©rer le site Web, la documentation et l'outillage (Ecosystem WG)
  • Sensibiliser les communautĂ©s et les entreprises (Outreach WG)
  • Effectuer la modĂ©ration de la communautĂ© (Community & Safety WG)
  • Maintenir notre infrastructure de compilation, nos outils pour les mainteneurs et nos services de cloud (Infrastructure WG)

À peu prĂšs en mĂȘme temps que nous adoptions le modĂšle de gouvernance, nous avons Ă©galement transfĂ©rĂ© la propriĂ©tĂ© d’Electron de GitHub Ă  la Fondation OpenJS. Bien que l’équipe de base d'origine travailles encore chez Microsoft aujourd’hui, elle fait partie maintenant d'un groupe plus important de collaborateurs qui forment la gouvernance Electron.

Bien que ce modÚle ne soit pas parfait, il nous a convenus à travers une pandémie mondiale et des vents contraires macroéconomiques. En avançant, nous prévoyons de réorganiser la charte de gouvernance afin de nous guider tout au long de la deuxiÚme décennie d'Electron.

info

Et si vous voulez en savoir plus, consultez le dépÎt electron/governance!

Communauté​

La partie communautaire de l’open source est compliquĂ©e, surtout lorsque votre Ă©quipe de sensibilisation est composĂ©e d’une douzaine d’ingĂ©nieurs en trench qui dit « community manager ». Cela dit, Ă©tant un grand projet open source signifie d'avoir un gran nombre d'utilisateurs, et l'exploitation de leur Ă©nergie disponible pour Electron pour construise un Ă©cosystĂšme utilisateur est un Ă©lĂ©ment crucial pour le maintien de la santĂ© du projet.

Qu’avons-nous fait pour renforcer notre prĂ©sence communautaire?

Construction de communautĂ©s virtuelles​

  • En 2020, nous avons lancĂ© notre serveur communautaire Discord. Nous avions auparavant une section dans le forum d’Atom, mais avons dĂ©cidĂ© d’avoir une plateforme de messagerie plus informelle pour avoir un espace de discussion entre responsables et dĂ©veloppeurs Electron ainsi que pour l’aide gĂ©nĂ©rale au dĂ©bogage.
  • En 2021, nous avons crĂ©Ă© le groupe d'utilisateurs Electron China avec l'aide de @BlackHole1. Ce groupe a contribuĂ© Ă  la croissance du nombre d'utilsateurs d’Electron de la scĂšne technologique qui est en plein essor en Chine, leur offrant un espace pour collaborer sur des idĂ©es et discuter d’électron en dehors des espaces de langue anglaise. Nous aimerions Ă©galement remercier cnpm pour leur travail de support des publications nocturnes d'Electron dans leur miroir chinois de npm.

Participation Ă  des programmes open source Ă  haute visibilité​

  • Nous cĂ©lĂ©brons Hacktoberfest chaque annĂ©e depuis 2019. Hacktoberfest est une cĂ©lĂ©bration annuelle de l'open source organisĂ©e par DigitalOcean, et nous recevons chaque annĂ©e des dizaines de contributeurs enthousiastes cherchant Ă  se dĂ©marquer dans le domaine du logiciel libre.
  • En 2020, nous avons participĂ© Ă  la premiĂšre de Google Season of Docs, oĂč nous avons travaillĂ© avec @bandantonio pour retravailler le nouveau flux de tutoriels utilisateur d'Electron.
  • En 2022, pour la premiĂšre fois, nous avons encadrĂ© un Ă©tudiant pour son Google Summer of Code . @aryanshridhar a fait un travail gĂ©nial pour refactoriser la logique de chargement de la version principale de Fiddleet migrer son bundler vers webpack.

Automatisation d'un maximum de choses!​

Aujourd'hui, la gouvernance d'Electron compte environ 30 responsables actifs. Moins de la moitiĂ© d'entre nous sont des contributeurs Ă  temps plein , ce qui implique beaucoup de travail. Quelle est notre astuce pour que tout fonctionne sans heurts ? Notre devise est que les ordinateurs sont bon marchĂ©, et que le temps humain coĂ»te cher. En tant qu’ingĂ©nieurs typiques, nous avons dĂ©veloppĂ© une suite d’outils de soutien automatisĂ©s pour nous rendre la vie plus facile.

Not Goma​

Le cƓur de la base de code Electron est un mastodonte de code C++, et les temps de compilation ont toujours Ă©tĂ© un facteur limitant pour la rapiditĂ© avec laquelle nous pouvons livrer des corrections de bugs et de nouvelles fonctionnalitĂ©s. En 2020, nous avons dĂ©ployĂ© Not Goma, un backend personnalisĂ© spĂ©cifique Ă  Electron pour le service de compilation distribuĂ© Goma de Google. Ne pas Goma traite les demandes de compilation des machines de l'utilisateur autorisĂ© et distribue le processus sur des centaines de cƓurs dans le backend. Il met Ă©galement en cache le rĂ©sultat de la compilation de sorte que quelqu'un d'autre compilant les mĂȘmes fichiers n'aura besoin que de tĂ©lĂ©charger le rĂ©sultat prĂ©-compilĂ©.

Depuis le lancement de Not Goma, les temps de compilation pour les responsables sont passés de plusieurs heures à quelques minutes. Une connexion internet stable est devenue la condition minimale pour que les contributeurs compilent Electron!

info

Si vous ĂȘtes un contributeur open source, vous pouvez Ă©galement essayer le cache en lecture seule de Not Goma, qui est disponible par dĂ©faut avec les Electron Build Tools.

Authentification continue​

L'authentification continue à plusieurs facteurs(CFA) est une couche d'automatisation autour du systÚme d'authentification à deux facteurs (2FA) de npm que nous avons combinée combinons avec semantic release afin de gérer les publications sécurisées et automatisées de nos différents paquets @electron/ npm.

Alors que le versionnage sĂ©mantique automatise dĂ©jĂ  le processus de publication des paquets npm, il faut dĂ©sactiver authentification Ă  deux facteurs ou passage d’un jeton secret qui contourne cette restriction.

Nous avons conçu le CFA pour fournir un mot de passe Ă  usage unique (TOTP) pour les tĂąches de CI arbitraires, nous permettant ainsi d’exploiter l’automatisation du versionage sĂ©mantique tout en conservant la sĂ©curitĂ© supplĂ©mentaire de l'authentification Ă  deux facteurs.

Nous utilisons CFA avec une intĂ©gration frontale Slack, permettant aux responsables de valider la publication des paquets de n’importe quel appareil qu’ils ont Slack, tant qu’ils ont leur gĂ©nĂ©rateur TOTP Ă  portĂ©e de main.

info

Si vous voulez essayer la FCA dans vos propres projets, consultez le dépÎt GitHub ou ces autres documents! Si vous utilisez CircleCI comme fournisseur de CI, nous avons également orb , trÚs paratique, pour mettre rapidement sur pied un projet avec CFA.

Sheriff​

Sheriff est un outil open source que nous avons Ă©crit pour automatiser la gestion des permissions Ă  travers GitHub, Slack et Google Workspace.

L'apport de sheriff vient du fait que la gestion des autorisations devrait ĂȘtre un processus transparent. Il utilise un seul fichier de configuration YAML dĂ©signant les autorisations pour tous les services Ă©numĂ©rĂ©s ci-dessus. Avec Sheriff, obtenir le statut de collaborateur sur un dĂ©pĂŽt ou crĂ©er une nouvelle liste de diffusion est aussi simple que faire approuver et fusionner un Push request.

Sheriff a Ă©galement un journal d'audit publie vers Slack, avertissant les administrateurs lorsque des activitĂ©s suspectes se produisent n'importe oĂč dans l'organisation Electron.


 et tous nos robots de GitHub​

GitHub est une plate-forme avec une extensibilité API riche et un robot de framework d'application appelé Probot. Pour nous aider à nous concentrer sur les parties les plus créatives de notre travail, nous avons construit une suite de robots moins conséquents nous aidant à faire le sale boulot pour nous. Voici quelques exemples :

  • Sudowoodo automatise le processus de publication da A Ă  Z, du lancement des compilations au tĂ©lĂ©chargement des ressources de publication sur GitHub et npm.
  • Trop automatise le processus de rĂ©troportage d' Electron en essayantr de choisir des correctifs sur mesure pour les branches de diffusion prĂ©cĂ©dentes en fonction des Ă©tiquettes PR de GitHub.
  • Rouleau automatise les mises Ă  jour en cours des dĂ©pendances Chromium et Node.js d'Electron.
  • Cation est notre robot de vĂ©rification de l’état des Pull Request.

Dans l'ensemble, notre petite famille de bots nous a donné un énorme coup de pouce pour améliorer la productivité des développeurs!

Et ensuite ?​

Alors que nous entrons dans la deuxiĂšme dĂ©cennie de notre projet, vous vous demanderez peut-ĂȘtre : que va t-il se passer maintenant pour Electron?

Nous allons demeurer en phase avec la cadence de sortie de Chromium, libérant de nouvelles versions majeures d'Electron toutes les 8 semaines en conservant les mises à jour relatives aux nouvautés les plus importants du web et de Node.js tout en maintenant la stabilité et la sécurité pour les applications de niveau entreprise.

Nous présentons généralement les initiatives à venir quand elles deviennent concrÚtes. Si vous voulez rester au courant des versions, des fonctionnalités et des mises à jour générales du projet, vous pouvez lire notre blog et nous suivre sur les médias sociaux (Twitter et Mastodon ) !


  1. Il s'agit en fait du premier commit du projet electron-archive/brightray, qui a Ă©tĂ© absorbĂ© par Electron en 2017 et dont l'historique git Ă©tĂ© fusionnĂ©. Mais est ce que cela compte ? C’est notre anniversaire, donc nous devons Ă©tablir les rĂšgles !↩