Aller au contenu principal

Pourquoi Electron

Electron est un framework permettant aux développeurs de construire des applications de bureau multi-plateformes pour macOS, Windows et Linux en combinant les technologies web (HTML, JavaScript, CSS) avec Node.js et code natif. Il est open-source, sous licence MIT, et gratuit pour un usage tant commercial que personnel. Dans ce document, nous expliquerons pourquoi les entreprises et les développeurs choisissent Electron.

Nous pouvons diviser les avantages d'Electron en deux questions : tout d'abord, pourquoi devriez-vous utiliser les technologies web pour construire votre application ? Alors, pourquoi choisir Electron comme framework pour le faire ?

Si vous utilisez déjà des technologies web pour votre application, vous pouvez passer directement à la section Pourquoi Electron ? ci-dessous.

Pourquoi choisir des technologies web

Les technologies Web incluent HTML, CSS, JavaScript et WebAssembly. Il s'agit de la vitrine de l'Internet moderne. Ces technologies sont apparues comme le meilleur choix pour construire des interfaces utilisateur, aussi bien pour les applications grand public que pour les applications métier critiques. C'est vrai aussi bien pour les applications qui ont besoin de s'exécuter dans un navigateur que pour les applications de bureau qui ne sont pas accessibles depuis un navigateur. Notre affirmation audacieuse est que ce n'est pas seulement vrai pour les applications multi-plateformes qui ont besoin de s'exécuter sur plusieurs systèmes d'exploitation, mais c'est vrai dans l'ensemble.

À titre d’exemple, la NASA Mission Control est écrite avec des technologies web. Le Terminal Bloomberg, le système informatique de chaque institution financière, est écrit avec des technologies web et tourne à l'intérieur de Chromium. Elle coûte 25 000 $ par utilisateur et par année. Le kiosque de commande de McDonald's, propulsé par le plus grand détaillant alimentaire du monde, est entièrement construit avec Chromium. La capsule spatiale Dragon 2 de SpaceX utilise Chromium pour afficher son interface. Vous obtenez le point : les technologies web sont une excellente pile technologique pour construire des interfaces utilisateur.

Voici les raisons pour lesquelles nous, les responsables d'Electron, misons sur le web.

Versatilité

Les versions modernes de HTML et CSS permettent à vos développeurs et concepteurs de s'exprimer pleinement. La vitrine du Web comprend Google Earth, Netflix, Spotify, Gmail, Facebook, Airbnb, ou GitHub. Quelle que soit l’interface dont votre application a besoin, vous serez en mesure de l’exprimer avec HTML, CSS et JavaScript.

Si vous voulez vous concentrer sur la construction d'un produit génial sans comprendre comment réaliser la vision de votre designer dans un cadre spécifique d'interface utilisateur le web est un pari sûr.

Fiabilité

Les technologies Web sont la base la plus utilisée pour les interfaces utilisateur de la planète. Elles ont été durcies en conséquence. Les ordinateurs modernes ont été optimisés du CPU au système d'exploitation pour être bons pour exécuter des technologies Web. Les fabricants des appareils de votre utilisateur — que ce soit un téléphone Android ou le dernier MacBook — s'assureront qu'ils peuvent visiter des sites Web, lire des vidéos sur YouTube, ou afficher des e-mails. En retour, ils s'assureront également que votre application a une base stable, même si vous n'avez qu'un seul utilisateur.

Si vous voulez vous concentrer sur la construction d'un produit génial sans déboguer une bizarrerie bizarre que personne n'a trouvée auparavant, le web est un pari sûr.

Interopérabilité

Quel que soit le fournisseur ou les données clients avec lesquels vous avez besoin d'interagir, ils auront probablement pensé à un chemin d'intégration avec le Web. Selon votre choix technologique, Intégrer une vidéo YouTube prend soit 30 secondes, soit vous oblige à embaucher une équipe dédiée au streaming et au décodage vidéo accéléré du matériel. Dans le cas de YouTube, utiliser autre chose que les joueurs fournis est en fait contraire à leurs conditions ainsi vous intégrerez probablement un cadre de navigateur avant d'implémenter votre propre décodeur de streaming vidéo.

Il n'y aura pratiquement aucune plate-forme où votre application ne pourra pas fonctionner si vous la construisez avec des technologies web. Pratiquement tous les appareils avec un écran, que ce soit un guichet automatique, un système d'information de voiture, Un téléviseur intelligent, un réfrigérateur ou une Nintendo Switch—sont fournis avec des moyens pour afficher les technologies Web. Le Web est un pari sûr si vous voulez être multi-plateforme.

Omniprésence

Il est facile de trouver des développeurs ayant de l'expérience dans le développement des technologies web. Si vous êtes un développeur, il sera facile de trouver des réponses à vos questions sur Google, Stack Overflow, GitHub, ou une IA de votre choix. Quel que soit le problème que vous devez résoudre, il est probable que quelqu’un l’ait résolu bien avant — et que vous puissiez trouver la réponse au puzzle en ligne.

Si vous voulez vous concentrer sur la construction d'un excellent produit avec un accès large aux ressources et aux matériaux, le Web est un pari sûr.

Pourquoi choisir Electron

Electron combine Chromium, Node.js et la capacité d'écrire du code natif personnalisé dans un seul framework pour la construction d'applications de bureau puissantes. Il y a trois raisons principales d'utiliser Electron :

Qualité d'entreprise

Electron est fiable, sécurisé, stable et mature. C'est le premier choix pour les entreprises construisant leur produit phare. Nous avons une liste de certaines de ces entreprises sur notre page d'accueil, mais déja parmi les applications de chat, Slack, Discord, et Signal sont construits avec Electron. Parmi les applications d’IA, tant le ChatGPT d’OpenAI que le Claude d’Anthropique utilisent Electron. Visual Studio Code, Loom, Canva, Notion, Docker et d'innombrables autres développeurs de premier plan sur Electron.

Nous avons fait d'Electron une priorité de faciliter son travail et de ravir les développeurs. C'est probablement la raison principale pour laquelle Electron est devenu aussi populaire qu'aujourd'hui, mais ce qui maintient Electron en vie et prospère est que le responsable se concentre sur la stabilité d'Electron, sa sécurité, performance et capacité à répondre à des utilisations critiques pour la mission des utilisateurs finaux autant que possible. Nous construisons un Electron qui est prêt à être utilisé dans des scénarios où des bogues non corrigeables les trous de sécurité non corrigés et les pannes de toute sorte sont les pires scénarios.

Agrandissement

Notre estimation actuelle est que la plupart des ordinateurs de bureau de la planète utilisent au moins une application Electron. Electron a grandi en priorisant les talents dans son groupe de mainteneurs, en encourageant d'excellentes pratiques d'ingénierie durables dans la gestion de la maintenance, et invitant proactivement les entreprises à parier sur Electron à contribuer directement au projet. Nous sommes un projet d'impact avec la fondation OpenJS, qui fait elle-même partie de la fondation Linux. Nous partageons nos ressources et notre expertise avec d'autres projets de fondation tels que Node.js, ESLint, Webpack - ou le noyau Linux ou Kubernetes.

Qu'est-ce que tout cela signifie pour vous, un développeur, dans la pratique ?

  • Reliable release schedule: Electron will release a new major version in lockstep with every second major Chromium release, usually on the same day as Chromium. A lot of work, both in the form of building processes and tools, but also in terms of raw invested hours every week, has to go into making that happen.
  • No dictators: Sometimes, betting on a technology also requires you to bet on a single person or company. In turn, it requires you to trust that the person or company never has a breakdown, starts fighting you directly, or does anything else drastic that’ll force you rethink your entire tech stack. Electron is maintained by a diverse set of companies (Microsoft, Slack/Salesforce, Notion, and more) and will continue to welcome more companies interested in ensuring their “seat at the decision-making table”.

Stability, security, performance

Electron delivers the best experience on all target platforms (macOS, Windows, Linux) by bundling the latest version of Chromium, V8, and Node.js directly with the application binary. When it comes to running and rendering web content with upmost stability, security, and performance, we currently believe that stack to be “best in class”.

Why bundle anything at all

You might wonder why we bundle Chromium’s web stack with our apps when most modern operating systems already ship a browser and some form of web view. Bundling doesn’t just increase the amount of work for Electron maintainers dramatically, it also increases the total disk size of Electron apps (most apps are >100MB). Many Electron maintainers once developed applications that did make use of embedded web views — and have since accepted the increased disk size and maintainer work as a worthy trade-off.

When using an operating system's built-in web view, you're limited by the browser version included in the oldest operating system version you need to support. We have found the following problems with this approach:

  • Stability: The modern web technology stack is complex, and as a result, you’ll sooner or later encounter bugs. If you use the operating system’s web view, your only recourse will be to ask your customers to upgrade their operating system. If no upgrade is available for that machine (because of no ability to upgrade to the latest macOS or Windows 11), you’ll have to ask them to buy a new computer. If you’re unlucky, you’re now losing a major customer because they will not upgrade their entire fleet of thousands of machines just because one team wanted to try your startup’s app. You have no recourse in this situation. Even the risk of that happening is unacceptable to the companies that employ the Electron maintainers.
  • Security: Similar to how you can fix stability bugs by releasing an app update, you can also release security fixes to your application without asking your customer to upgrade their operating system. Even if operating system providers prioritize updates to their built-in browser, we have not seen them reliably update the built-in web views with similar urgency. Bundling a web renderer gives you, the developer, control.
  • Performance: For simple HTML documents, a built-in web view will sometimes use fewer resources than an app with a bundled framework. For bigger apps, it is our experience that we can deliver better performance with the latest version of Chromium than we can with built-in web views. You might think that the built-in view can share a lot of resources with other apps and the operating system— but for security reasons, apps have to run in their own sandboxes, isolated from each other. At that point, the question is whether the OS’ web view is more performant than Chromium. Across many apps, our experience is that bundling Chromium and Node.js enables us to build better and more performant experiences.

Why bundle Chromium and Node.js

Electron aims to enable the apps it supports to deliver the best possible user experience, followed by the best possible developer experience. Chromium is currently the best cross-platform rendering stack available. Node.js uses Chromium’s JavaScript engine V8, allowing us to combine the powers of both.

  • Native code when you want it: Thanks to Node.js’ mature native addon system, you can always write native code. There is no system API out of reach for you. Whatever macOS, Windows, or Linux feature you’ll want to integrate with —as long as you can do it in C, C++, Objective-C, Rust, or another native language, you’ll be able to do it in Electron. Again, this gives you, the developer, maximum control. With Electron, you can use web technologies without choosing only web technologies.

Developer experience

To summarize, we aim to build an Electron that is mature, enterprise-grade, and ready for mission-critical applications. We prioritize reliability, stability, security, and performance. That said, you might also choose Electron for its developer experience:

  • Powerful ecosystem: Anything you find on npm will run inside Electron. Any resource available to you about how to work with Node.js also applies to Electron. In addition, Electron itself has a thriving ecosystem — including plenty of choices for installers, updaters, deeper operating system-integration, and more.
  • Plenty of built-in capabilities: Over the last ten years, Electron’s core has gained plenty of native capabilities that you might need to build your application. Written in C++ and Objective-C, Electron has dozens of easy-to-use APIs for deeper operating-system integration — like advanced window customization for transparent or oddly shaped widgets, receiving push notifications from the Apple Push Notification Network, or handling a custom URL protocol for your app.
  • Open source: The entire stack is open source and open to your inspection. This ensures your freedom to add any feature or fix any bug you might encounter in the future.
  • Native code when you need it: It bears repeating that Electron allows you to mix and match web technologies and C++, C, Objective-C, Rust, and other native languages. Whether it be SQLite, a whole LLM, or just the ability to call one specific native API, Electron will make it easy.

Why choose something else

As outlined above, the web is an amazing platform for building interfaces. That doesn’t mean that we, the maintainers, would build everything with HTML and CSS. Here are some notable exceptions:

Resource-Constrained Environments and IoT: In scenarios with very limited memory or processing power (say, one megabyte of memory and 100MHz of processing power on a low-powered ARM Cortex-M), you will likely need to use a low-level language to directly talk to the display to output basic text and images. Even on slightly higher-powered single-chip devices you might want to consider an embedded UI framework. A classic example is a smart watch.

Small Disk Footprint: Zipped Electron apps are usually around 80 to 100 Megabytes. If a smaller disk footprint is a hard requirement, you’ll have to use something else.

Operating System UI Frameworks and Libraries: By allowing you to write native code, Electron can do anything a native application can do, including the use of the operating system’s UI components, like WinUI, SwiftUI, or AppKit. In practice, most Electron apps make rare use of that ability. If you want the majority of your app to be built with operating system-provided interface components, you’ll likely be better off building fully native apps for each operating system you’d like to target. It’s not that it’s impossible with Electron, it’ll just likely be an overall easier development process.

Games and Real-Time Graphics: If you're building a high-performance game or application requiring complex real-time 3D graphics, native frameworks like Unity, Unreal Engine, or DirectX/OpenGL will provide better performance and more direct access to graphics hardware. Web fans might point out caveats, like the fact that even Unreal Engine ships with Chromium — or that WebGPU and WebGL are developing rapidly and many game engines, including the ones listed here, can now output their games in a format that runs in a browser. That said, if you asked us to build the next AAA game, we’d likely use something else than just web technologies.

Embedding Lightweight Websites: Electron apps typically are mostly web apps with native code sprinkled in where useful. Processing-heavy Electron applications tend to write the UI in HTML/CSS and build the backend in Rust, C++, or another native language. If you’re planning to build a primarily native application that also wants to display a little website in a specific view, you might be better off using the OS-provided web view or something like ultralight.