GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wir mit Electron eine Linux-Desktop-App erstellt haben

Tutanota ist ein sicherer Open-Source-E-Mail-Dienst, der als App für Browser, iOS und Android verfügbar ist. Der Client-Code wird unter GPLv3 veröffentlicht und die Android-App ist auf F-Droid verfügbar, damit jeder eine vollständig Google-freie Version verwenden kann.

Da sich Tutanota auf Open Source konzentriert und auf Linux-Clients entwickelt, wollten wir eine Desktop-App für Linux und andere Plattformen veröffentlichen. Da wir ein kleines Team sind, haben wir die Erstellung nativer Apps für Linux, Windows und MacOS schnell ausgeschlossen und beschlossen, unsere App mit Electron anzupassen.

Das Linux-Terminal

  • Die 7 besten Terminalemulatoren für Linux
  • 10 Befehlszeilentools für die Datenanalyse unter Linux
  • Jetzt herunterladen:SSH-Spickzettel
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Linux-Befehlszeilen-Tutorials

Electron ist die erste Wahl für alle, die schnell visuell konsistente, plattformübergreifende Anwendungen liefern möchten – insbesondere, wenn es bereits eine Webanwendung gibt, die von den Fesseln der Browser-API befreit werden muss. Tutanota ist genau so ein Fall.

Tutanota basiert auf SystemJS und Mithril und zielt darauf ab, einfache und sichere E-Mail-Kommunikation für alle anzubieten. Daher muss es viele der Standardfunktionen bieten, die Benutzer von jedem E-Mail-Client erwarten.

Einige dieser Funktionen, wie einfache Push-Benachrichtigungen, die Suche nach Text und Kontakten sowie die Unterstützung der Zwei-Faktor-Authentifizierung, lassen sich dank moderner APIs und Standards einfach im Browser anbieten. Andere Funktionen (wie automatische Backups oder IMAP-Unterstützung ohne Beteiligung unserer Server) erfordern weniger eingeschränkten Zugriff auf Systemressourcen, und genau das bietet das Electron-Framework.

Während einige Electron als "nur einen einfachen Wrapper" kritisieren, hat es offensichtliche Vorteile:

  • Mit Electron können Sie eine Webanwendung schnell für Linux-, Windows- und MacOS-Desktops anpassen. Tatsächlich werden die meisten Linux-Desktop-Apps mit Electron erstellt.
  • Electron ermöglicht es Ihnen, den Desktop-Client ganz einfach auf Funktionsparität mit der Web-App zu bringen.
  • Sobald Sie die Desktop-App veröffentlicht haben, können Sie die kostenlose Entwicklungskapazität nutzen, um Desktop-spezifische Funktionen hinzuzufügen, die die Benutzerfreundlichkeit und Sicherheit verbessern.
  • Und last but not least ist es eine großartige Möglichkeit, der App das Gefühl zu geben, nativ und in das System des Benutzers integriert zu sein, während ihre Identität beibehalten wird.

Erfüllung der Bedürfnisse der Nutzer

Bei Tutanota verlassen wir uns nicht auf das Geld großer Investoren, sondern sind ein von der Gemeinschaft angetriebenes Projekt. Wir erweitern unser Team organisch, basierend auf der steigenden Anzahl von Benutzern, die auf die kostenpflichtigen Pläne unseres Freemium-Dienstes upgraden. Es ist uns nicht nur wichtig, den Wünschen der Benutzer zuzuhören, sondern auch für unseren Erfolg.

Das Angebot eines Desktop-Clients war die meistgesuchte Funktion der Benutzer in Tutanota, und wir sind stolz darauf, dass wir jetzt allen unseren Benutzern kostenlose Beta-Desktop-Clients anbieten können. (Wir haben auch eine weitere häufig nachgefragte Funktion implementiert – die Suche nach verschlüsselten Daten – aber das ist ein anderes Thema.)

Uns gefiel die Idee, Benutzern signierte Versionen von Tutanota bereitzustellen und Funktionen zu ermöglichen, die im Browser nicht möglich sind, wie z. B. Push-Benachrichtigungen über einen Hintergrundprozess. Jetzt planen wir, weitere Desktop-spezifische Funktionen hinzuzufügen, wie z. B. IMAP-Unterstützung, ohne dass unsere Server als Proxy fungieren, automatische Backups und Offline-Verfügbarkeit.

Wir haben uns für Electron entschieden, weil seine Kombination aus Chromium und Node.js versprach, am besten zu unserem kleinen Entwicklungsteam zu passen, da es nur minimale Änderungen an unserer Web-App erforderte. Es war besonders hilfreich, die Browser-APIs für alles zu verwenden, als wir anfingen, und diese Komponenten im Laufe der Zeit langsam durch nativere Versionen zu ersetzen. Dieser Ansatz war besonders praktisch beim Herunterladen von Anhängen und Benachrichtigungen.

Tuning-Sicherheit

Wir waren uns bewusst, dass einige Leute Sicherheitsprobleme mit Electron anführen, aber wir fanden die Optionen von Electron zur Feinabstimmung des Zugriffs in der Web-App recht zufriedenstellend. Sie können Ressourcen wie die Sicherheitsdokumentation von Electron und die Electron Security Checklist von Luca Carettoni verwenden, um katastrophale Pannen mit nicht vertrauenswürdigen Inhalten in Ihrer Web-App zu verhindern.

Erreichen der Feature-Parität

Der Tutanota-Webclient wurde von Anfang an mit einem soliden Protokoll für die Kommunikation zwischen Prozessen entwickelt. Wir setzen Webworker ein, um das Rendering der Benutzeroberfläche (UI) reaktionsfähig zu halten, während wir Daten verschlüsseln und anfordern. Dies war praktisch, als wir mit der Implementierung unserer mobilen Apps begannen, die dasselbe Protokoll für die Kommunikation zwischen dem nativen Teil und der Webansicht verwenden.

Als wir mit der Erstellung der Desktop-Clients begannen, waren daher bereits viele Bindungen für Dinge wie native Push-Benachrichtigungen, das Öffnen von Postfächern und die Arbeit mit dem Dateisystem vorhanden, sodass nur die native (Knoten-) Seite implementiert werden musste.

Ein weiterer Vorteil war unser Build-Prozess mit dem Babel-Transpiler, der es uns ermöglicht, die gesamte Codebasis in modernem ES6-JavaScript zu schreiben und Utility-Module zwischen den verschiedenen Umgebungen zu kombinieren. Dadurch konnten wir den Code für die Electron-basierten Desktop-Apps schnell anpassen. Wir sind jedoch auf einige Herausforderungen gestoßen.

Herausforderungen meistern

Während Electron es uns ermöglicht, uns ziemlich einfach in die Desktop-Umgebungen der verschiedenen Plattformen zu integrieren, können Sie den Zeitaufwand nicht unterschätzen, um die Dinge genau richtig zu machen! Am Ende waren es diese kleinen Dinge, die viel mehr Zeit in Anspruch nahmen als wir erwartet hatten, aber auch entscheidend waren, um das Desktop-Client-Projekt abzuschließen.

Die Stellen, an denen plattformspezifischer Code erforderlich war, verursachten die meisten Reibungen:

  • Die Fensterverwaltung und das Tablett zum Beispiel werden auf den drei Plattformen immer noch auf subtile Weise unterschiedlich gehandhabt.
  • Die Registrierung von Tutanota als Standard-E-Mail-Programm und die Einrichtung des Autostarts erforderten das Eintauchen in die Windows-Registrierung, wobei darauf zu achten war, dass der Benutzer auf UAC-kompatible Weise zum Administratorzugriff aufgefordert wurde.
  • Wir mussten die Electron-API für Verknüpfungen und Menüs verwenden, um sogar Standardfunktionen wie Kopieren, Einfügen, Rückgängigmachen und Wiederherstellen anzubieten.

Dieser Prozess wurde durch die Erwartungen der Benutzer an ein bestimmtes, manchmal nicht direkt kompatibles Verhalten der Apps auf verschiedenen Plattformen etwas erschwert. Damit sich die drei Versionen nativ anfühlen, waren einige Iterationen und sogar einige bescheidene Ergänzungen der Web-App erforderlich, um eine Textsuche ähnlich der im Browser anzubieten.

Abschluss

Unsere Erfahrungen mit Electron waren überwiegend positiv, und wir haben das Projekt in weniger als vier Monaten abgeschlossen. Trotz einiger ziemlich zeitaufwändiger Funktionen waren wir überrascht, wie einfach wir eine Beta-Version des Tutanota-Desktop-Clients für Linux ausliefern konnten. Bei Interesse können Sie auf GitHub in den Quellcode eintauchen.


Linux
  1. So erweitern Sie die Funktionalität Ihres Linux-Desktops mit PlexyDesk

  2. So öffnen Sie Appimage unter Linux

  3. So installieren Sie Anbox auf einem Linux-Desktop

  4. Linux – Wie integriere ich Sound in Desktop-Events?

  5. So starten Sie Startanwendungen mit Verzögerung unter Linux

So installieren Sie Arch Linux mit XFCE Desktop

So erstellen Sie Verknüpfungen auf dem Linux-Desktop

G Desktop Suite – Eine Google Drive-Desktop-App, die mit Electron erstellt wurde

So richten Sie eine Firewall mit Gufw auf einem Linux-Desktop ein

So sichern Sie Linux-Server mit SE Linux

So installieren Sie die Telegram Desktop App unter Ubuntu 20.04 LTS