Les applications web deviennent de plus en plus puissantes avec les nouvelles APIs mises à disposition par les navigateurs : Géolocalisation, notifications, bluetooth, etc...

Le problème étant que tous les navigateurs n'implémentent pas ces APIs à la même vitesse, et certains refusent même de les implémenter tout court pour tenter de faire barrage au tracking des utilisateurs.

Si le browser-fingerprinting ne vous parle pas, je vous conseille mon article à son sujet.

Toujours est-il qu'il y a certaines fonctionnalités que les navigateurs n'implémenteront jamais comme l'accès aux fichiers de la machine, bien trop dangereux.

Mais alors comme créer des applications riches lorsque l'on est développeur web ? Pour les applications mobiles il est possible d'utiliser des framework comme Ionic ou plus récemment React-Native, mais qu'existe-t'il pour le bon vieux desktop ?

Aujourd'hui nous allons parler d'Electron !

Qu'est-ce que c'est ?

Electron est un framework de développement d'application multi-plateformes basé sur NodeJS et Chromium (la base libre de plusieurs navigateurs web, dont Google Chrome).

Le principe est de pouvoir créer des fenêtres (comme en développement logiciel classique) et de pouvoir gérer leur contenu en utilisant les technologies web classiques : html, css et javascript.

Electron donne accès au système de fichier, à toutes les API web de Chromium ainsi que celles du système d'exploitation (attention si votre application se base sur les API d'un système en particulier, elle ne fonctionnera pas sur les autres).

Pour vous donner une idée, voici quelques logiciels desktops créés avec Electron :

  • Slack
  • Visual Studio Code
  • Atom
  • InVision

Les avantages

Electron offre de nombreux avantages, dont certains déjà cités précédemment :

  • Simple à prendre en main
  • Déploiement multi-plateformes (Windows, Mac et Linux) avec installateurs
  • Compatible avec Windows App Store et Mac App Store
  • Gestion des mises à jour automatiques
  • APIs web Chromium
  • APIs natives de l'OS (Menus, Notifications, etc...)
  • Accès au système de fichiers

Les inconvénients

Des inconvénients il y en a, comme avec toute technologies, le tout reste à savoir si le jeu en vaut la chandelle et si dans votre projet, les avantages dépassent les inconvénients.

Je ne vais pas tous les citer ici, d'autres gens ayant plus d'expérience que moi avec l'outil l'ont déjà très bien fait comme sur le blog Hackernoon, mais je vais vous expliquer les deux plus gros inconvénients de l'outil selon moi :

Une app, un navigateur

Comme je vous l'ai expliqué au début, le principe d'Electron est de faire tourner une application web dans un navigateur web embarqué (Chromium).

Ce qui signifie que pour l'application la plus légère possible (disons un simple Hello World), le poids de l'application et sa consommation en RAM et en CPU sera au moins égale à celle du navigateur sous-jacent.

Avoir une application de ce type qui tourne sur sa machine ne fait pas une grosse différence, mais si l'on commence à multiplier les applications de ce genre on pose un énorme problème d'optimisation des ressources de la machine.

Le code source visible

Le code source d'une application Electron n'est pas compilé, ni crypté, ni obscurci (obfuscated), il est simplement packagé dans un container "asar". Extraire le code source complet d'une telle archive ne demande pas plus de travail que d'executer la commande: asar extract app.asar secret_source_code

Il y a des chances que le code source de votre application fasse partie de la valeur de votre entreprise (ou de votre client) et que le rendre facilement accessible à des développeurs qui pourraient cloner application ne soit pas la meilleure idée.

Il existe néanmoins quelques manières de rendre soi-même son code "illisible" ou plus difficile à extraire mais cela ne dépend que de vous, et du temps que voudra bien y passer quelqu'un intéressé par votre code !

Mon avis sur Electron

Personnellement j'ai eu l'occasion de l'utiliser, combiné à VueJS pour créer mon jeu "Candy Candy Candy" en 48h pendant ma dernière Game Jam.

Electron m'a permis de pouvoir proposer un environnement commun à tous mes joueurs, une taille de fenêtre fixe pour me faciliter le développement et permettre l'exportation d'un installeur sur Windows, MacOS et Linux rapidement!

Si vous voulez le tester, le jeu est disponible au téléchargement gratuit sur itch.io et le code source sur Github.
Candy Candy Candy by Nicolas Brondin-Bernard, Stephane Lebrasseur
La vie c’est comme une boite de bonbons, on ne sait jamais sur quoi on va tomber...

Je pense sincèrement qu'Electron est un outil très pratique, qu'il permet de gagner du temps et de sortir une première version d'application très rapidement.

Néanmoins je le vois comme une solution temporaire, le temps par exemple d'arriver à développer une application native (ou que React Native puisse exporter des applications Windows et Linux).

À mon avis il ne faudrait pas que les éditeurs d'applications web portent systématiquement leurs applications sur Electron, ça ne ferait du bien ni au monde du web, ni au monde du logiciel.

Mais si vous ne l'avez pas testé, foncez vous faire votre propre idée !

J'espère que cet article vous aura plus, n'hésitez pas à me raconter vos expériences avec Electron dans les commentaires tout en bas de la page et je vous dis à bientôt sur le blog !


À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage de d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo par Bailey Zindel sur Unsplash