GNU/Linux >> Tutoriels Linux >  >> Linux

Comment nous avons créé une application de bureau Linux avec Electron

Tutanota est un service de messagerie sécurisé et open source disponible sous forme d'application pour le navigateur, iOS et Android. Le code client est publié sous GPLv3 et l'application Android est disponible sur F-Droid pour permettre à chacun d'utiliser une version entièrement Google-free.

Parce que Tutanota se concentre sur l'open source et se développe sur des clients Linux, nous voulions publier une application de bureau pour Linux et d'autres plates-formes. Étant une petite équipe, nous avons rapidement exclu la création d'applications natives pour Linux, Windows et MacOS et avons décidé d'adapter notre application à l'aide d'Electron.

Le Terminal Linux

  • Les 7 meilleurs émulateurs de terminaux pour Linux
  • 10 outils de ligne de commande pour l'analyse de données sous Linux
  • Télécharger maintenant :Aide-mémoire SSH
  • Aide-mémoire des commandes Linux avancées
  • Tutoriels de ligne de commande Linux

Electron est le choix incontournable pour tous ceux qui souhaitent livrer rapidement des applications multiplateformes visuellement cohérentes, surtout s'il existe déjà une application Web qui doit être libérée des chaînes de l'API du navigateur. Tutanota est exactement un tel cas.

Tutanota est basé sur SystemJS et Mithril et vise à offrir des communications par e-mail simples et sécurisées pour tout le monde. En tant que tel, il doit fournir un grand nombre des fonctionnalités standard que les utilisateurs attendent de n'importe quel client de messagerie.

Certaines de ces fonctionnalités, telles que les notifications push de base, la recherche de texte et de contacts et la prise en charge de l'authentification à deux facteurs, sont faciles à proposer dans le navigateur grâce aux API et aux normes modernes. D'autres fonctionnalités (telles que les sauvegardes automatiques ou la prise en charge IMAP sans impliquer nos serveurs) nécessitent un accès moins restreint aux ressources système, ce qui est exactement ce que fournit le framework Electron.

Alors que certains critiquent Electron comme "juste un emballage de base", il présente des avantages évidents :

  • Electron vous permet d'adapter rapidement une application Web pour les postes de travail Linux, Windows et MacOS. En fait, la plupart des applications de bureau Linux sont conçues avec Electron.
  • Electron vous permet de mettre facilement le client de bureau à parité avec l'application Web.
  • Une fois que vous avez publié l'application de bureau, vous pouvez utiliser la capacité de développement gratuite pour ajouter des fonctionnalités spécifiques aux ordinateurs de bureau qui améliorent la convivialité et la sécurité.
  • Et enfin, mais non des moindres, c'est un excellent moyen de donner l'impression que l'application est native et intégrée au système de l'utilisateur tout en conservant son identité.

Répondre aux besoins des utilisateurs

Chez Tutanota, nous ne comptons pas sur l'argent des gros investisseurs, nous sommes plutôt un projet axé sur la communauté. Nous développons notre équipe de manière organique en fonction du nombre croissant d'utilisateurs passant aux plans payants de notre service freemium. Être à l'écoute des attentes des utilisateurs n'est pas seulement important pour nous, c'est essentiel à notre succès.

Offrir un client de bureau était la fonctionnalité la plus recherchée par les utilisateurs de Tutanota, et nous sommes fiers de pouvoir désormais offrir des clients de bureau bêta gratuits à tous nos utilisateurs. (Nous avons également implémenté une autre fonctionnalité très demandée :la recherche de données chiffrées, mais ce sujet sera abordé ultérieurement.)

Nous avons aimé l'idée de fournir aux utilisateurs des versions signées de Tutanota et d'activer des fonctions impossibles dans le navigateur, telles que les notifications push via un processus en arrière-plan. Nous prévoyons maintenant d'ajouter davantage de fonctionnalités spécifiques aux ordinateurs de bureau, telles que la prise en charge IMAP sans dépendre de nos serveurs pour agir en tant que proxy, les sauvegardes automatiques et la disponibilité hors ligne.

Nous avons choisi Electron car sa combinaison de Chromium et Node.js promettait d'être la meilleure solution pour notre petite équipe de développement, car elle ne nécessitait que des modifications minimes de notre application Web. Il a été particulièrement utile d'utiliser les API du navigateur pour tout au début, en remplaçant lentement ces composants par des versions plus natives au fur et à mesure de notre progression. Cette approche était particulièrement pratique avec les téléchargements de pièces jointes et les notifications.

Réglage de la sécurité

Nous savions que certaines personnes citent des problèmes de sécurité avec Electron, mais nous avons trouvé les options d'Electron pour affiner l'accès dans l'application Web assez satisfaisantes. Vous pouvez utiliser des ressources telles que la documentation de sécurité d'Electron et la liste de contrôle de sécurité d'Electron de Luca Carettoni pour aider à prévenir les accidents catastrophiques avec du contenu non fiable dans votre application Web.

Atteindre la parité des fonctionnalités

Le client Web Tutanota a été construit dès le départ avec un protocole solide pour la communication interprocessus. Nous utilisons des travailleurs Web pour que l'interface utilisateur (UI) reste réactive lors du cryptage et de la demande de données. Cela s'est avéré utile lorsque nous avons commencé à mettre en œuvre nos applications mobiles, qui utilisent le même protocole pour communiquer entre la partie native et la vue Web.

C'est pourquoi lorsque nous avons commencé à créer les clients de bureau, de nombreuses liaisons pour des éléments tels que les notifications push natives, l'ouverture de boîtes aux lettres et l'utilisation du système de fichiers étaient déjà présentes, de sorte que seul le côté natif (nœud) devait être implémenté.

Une autre commodité était notre processus de construction utilisant le transpileur Babel, qui nous permet d'écrire l'intégralité de la base de code en JavaScript ES6 moderne et de combiner des modules utilitaires entre les différents environnements. Cela nous a permis d'adapter rapidement le code des applications de bureau basées sur Electron. Cependant, nous avons rencontré quelques difficultés.

Surmonter les défis

Bien qu'Electron nous permette de s'intégrer assez facilement aux environnements de bureau des différentes plates-formes, vous ne pouvez pas sous-estimer l'investissement en temps pour faire les choses correctement ! Au final, ce sont ces petites choses qui ont pris beaucoup plus de temps que prévu, mais qui ont également été cruciales pour terminer le projet du client de bureau.

Les endroits où le code spécifique à la plate-forme était nécessaire ont causé la plupart des frictions :

  • La gestion des fenêtres et le bac, par exemple, sont toujours gérés de manière subtilement différente sur les trois plates-formes.
  • L'enregistrement de Tutanota en tant que programme de messagerie par défaut et la configuration du démarrage automatique nécessitaient de plonger dans le registre Windows tout en s'assurant d'inviter l'utilisateur à obtenir un accès administrateur d'une manière compatible UAC.
  • Nous devions utiliser l'API d'Electron pour les raccourcis et les menus afin d'offrir même des fonctionnalités standard telles que copier, coller, annuler et rétablir.

Ce processus a été un peu compliqué par les attentes des utilisateurs concernant certains comportements, parfois non directement compatibles, des applications sur différentes plates-formes. Rendre les trois versions natives a nécessité quelques itérations et même quelques ajouts modestes à l'application Web pour offrir une recherche de texte similaire à celle du navigateur.

Conclusion

Notre expérience avec Electron a été largement positive et nous avons terminé le projet en moins de quatre mois. Malgré certaines fonctionnalités plutôt chronophages, nous avons été surpris de la facilité avec laquelle nous pouvions livrer une version bêta du client de bureau Tutanota pour Linux. Si vous êtes intéressé, vous pouvez vous plonger dans le code source sur GitHub.


Linux
  1. Comment étendre les fonctionnalités de votre bureau Linux avec PlexyDesk

  2. Comment installer GNS3 sur Linux Desktop

  3. Comment mettre à niveau le noyau sur Linux Desktop

  4. Linux - Comment se connecter automatiquement au bureau avec Systemd ?

  5. Linux - Comment intégrer le son aux événements de bureau ?

Comment installer Arch Linux avec XFCE Desktop

Comment créer des raccourcis sur le bureau Linux

G Desktop Suite - Une application de bureau Google Drive conçue avec Electron

Comment configurer le pare-feu avec Gufw sur le bureau Linux

Comment sécuriser les serveurs Linux avec SE Linux

Comment installer l'application de bureau Telegram sur Ubuntu 20.04 LTS