10 ans d'Electron đ
Le premier commit dans le dépÎt electron/electron
date du 13 mars 20131.
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 :
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 initiale travaille toujours chez Microsoft aujourd'hui, elle ne reprĂ©sente qu'une partie d'un groupe plus large de collaborateurs qui forment la gouvernance d'Electron.2
Bien que ce modĂšle ne soit pas parfait, il nous a convenu mĂȘme pendant la traversĂ©e d'une pandĂ©mie mondiale et de vents macroĂ©conomiques contraires . Pour le futur, nous prĂ©voyons de rĂ©organiser la charte de gouvernance pour qu'elle nous guide tout au long de la deuxiĂšme dĂ©cennie d'Electron.
Et si vous voulez en savoir plus, consultez le dépÎt electron/governance!
CommunautĂ©â
La partie communautaire d'un projet open source est un peu compliquĂ©e Ă gĂ©rer, surtout lorsque votre Ă©quipe de sensibilisation est composĂ©e dâune douzaine dâingĂ©nieurs en trench indiquant « 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 did some awesome work to refactor Electron Fiddle's core version loading logic and migrate its bundler to webpack.
Automatisation maximale!â
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!
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.
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 ) !
Footnotesâ
-
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 ! â©
-
Contrairement Ă la croyance populaire, Electron n'est plus la propriĂ©tĂ© de GitHub ou de Microsoft, et fait maintenant partie de la OpenJS Foundation. â©