Ce que les gens comprennent mal à propos d’Electron
(felixrieseberg.com)- L’auteur, Felix Rieseberg, participe au développement d’Electron depuis plus de 10 ans en tant que co-mainteneur
- Electron permet d’implémenter l’interface utilisateur avec des technologies web et, si nécessaire, d’y mêler librement du code natif
- De nombreuses applications (Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop, etc.) ont adopté Electron
- Ce document passe en revue les principales idées reçues sur Electron et explique pourquoi ces choix ont été faits
Electron oppose JavaScript et code natif
- On entend souvent dire que « Electron n’utilise que JavaScript, donc il est en retrait par rapport au natif »
- En réalité, Electron permet d’utiliser du code natif en plus de JavaScript, notamment en C++, Objective-C ou Rust
- Par exemple, 1Password écrit l’essentiel de son code en Rust et utilise Electron pour l’interface utilisateur
- La force d’Electron est sa souplesse : mélanger autant de code natif que nécessaire tout en exploitant les technologies web pour l’UI
- Il existe aussi des exemples de démonstration offrant partiellement une UI native avec SwiftUI, GTK, Win32, etc.
Les apps web sont mauvaises
- Certains estiment que « toutes les apps natives sont toujours supérieures », mais la réalité du marché est loin d’être aussi simple
- Le Mission Control de la NASA, Bloomberg Terminal, les bornes McDonald’s ou encore Dragon 2 de SpaceX utilisent eux aussi des technologies web basées sur Chromium
- Les technologies web sont aujourd’hui les plus largement utilisées dans le monde, et une app web bien conçue peut offrir une excellente expérience utilisateur
- Affirmer que « les apps web sont faites par des gens moins compétents » est une simplification qui ignore les exigences de l’environnement d’usage et le contexte des choix des développeurs
Le WebView du système d’exploitation est plus performant
- Certains soutiennent que le WebView intégré à macOS, Windows ou Linux est souvent meilleur
- En pratique, Slack utilisait au départ MacGap (basé sur WebView), mais a finalement adopté Electron (Chromium) à cause de problèmes de performance
- Le moteur Chromium le plus récent consomme certes davantage de ressources, mais c’est aussi celui qui bénéficie des optimisations les plus actives
- Le WebView intégré au système peut parfois sembler plus léger en mémoire grâce aux ressources partagées, mais il est souvent isolé en pratique pour des raisons de sécurité et de stabilité
- Electron permet de gérer directement la version la plus récente du moteur, et donc de maintenir indépendamment la stabilité et la sécurité
La taille du bundle est importante
- En général, les applications Electron pèsent entre 100 et 300 Mo, ce qui alimente certaines critiques
- Mais les utilisateurs tendent à privilégier d’autres critères avant la taille de l’application : fonctionnalités, praticité, stabilité, etc.
- Par exemple, un streaming Netflix en 4K consomme plusieurs Go par heure, et une mise à jour de Call of Duty peut atteindre des centaines de Go
- Au final, la taille d’une app est souvent un facteur relativement moins important que la satisfaction réelle des utilisateurs
Vaincre Electron
- Electron est né d’un effort open source mené par des personnes qui avaient pour objectif de « créer une bonne application desktop »
- Electron a émergé dans un contexte avec peu de concurrents, et continue aujourd’hui à offrir des fonctionnalités suffisantes et de la stabilité
- Pour « battre » Electron, il faut créer une plateforme capable de faire mieux ce qu’Electron fait déjà
- Les mainteneurs d’Electron accueilleront volontiers une meilleure alternative si elle apparaît
15 commentaires
La comparaison avec Call of Duty semble un peu hors sujet.
Il faut regarder Teams, qui a abandonné Electron au profit de WebView,
https://techcommunity.microsoft.com/discussions/microsoftteams/…
J’espère que Tauri gagnera vite en maturité. Cela dit, je l’utilise déjà très bien.
À l’époque d’Atom Shell, j’ai l’impression que c’était hier… il a beaucoup évolué.
Il y a plusieurs points de critique, mais au vu du niveau de finition de l’application VS Code que nous utilisons tous les jours, il me semble certain qu’Electron y est pour beaucoup.
J’ai près d’une dizaine d’apps Electron installées sur mon PC, donc à ce stade on pourrait presque se dire que ça devrait être un framework installé séparément.
La taille du bundle aussi, et quand je vois les processus « ~~ Helper » bouffer la mémoire, ça me fait juste soupirer.
J’envisage Tauri comme alternative, mais je crains qu’il y ait des cas particuliers où cela ne fonctionne pas correctement au moment du déploiement. (Autrefois, j’ai vraiment galéré en déployant un programme qui, dans un environnement win32, référençait des DLL enregistrées par défaut comme
msxml.dll; j’ai fini par l’intégrer en interne pour le déployer… donc je me demande s’il ne pourrait pas y avoir des problèmes similaires.)Comme le dit le camp Electron, il faut sans doute simplement oublier la taille, mais la taille du bundle est vraiment trop grosse.
On dirait que c’est là que se situe le problème de Tauri..
Comme la WebView propre à chaque plateforme et les programmes intégrés sont tous différents, c’est effectivement le plus gros problème. On ne sait pas ce qui peut arriver après le déploiement.
Mais si on embarque la WebView elle-même dans Tauri, la taille du bundle devient alors plus grande que celle d’Electron..
C’est pourquoi je pense que, pour le développement d’applications cross-platform en production, Tauri n’est pas encore assez mature.
Les bornes de commande de McDonald’s sont… euh… un bon exemple, peut-être.
La même pensée m’a traversé l’esprit. Je me suis demandé un instant si les bornes de McDo à l’étranger étaient quand même un peu différentes ? haha
mdr, j’ai pensé exactement la même chose aussi
J’ai l’impression que la réduction de l’utilisation mémoire serait le plus grand défi, et c’est dommage qu’aucune des parties prenantes ne semble avoir de réelle motivation pour s’y atteler.
Dans le texte, il y avait un lien vers le code de démonstration réel, donc je suis allé vérifier, et ça ne donne pas vraiment l’impression que ce soit assez simple pour être utilisé ensemble de façon très basique. Il faut sans doute surtout y voir la preuve que c’est possible, dans un premier temps...
Apparemment, c’est bien vrai que les applis sont généralement volumineuses…
Oui, là-dessus, ils reconnaissent volontiers la taille du bundle.