Tutanota je bezpečná e-mailová služba s otevřeným zdrojovým kódem, která je dostupná jako aplikace pro prohlížeč, iOS a Android. Klientský kód je publikován pod licencí GPLv3 a aplikace pro Android je k dispozici na F-Droid, aby každému umožnila používat verzi zcela bez Google.
Protože se Tutanota zaměřuje na open source a vyvíjí na linuxových klientech, chtěli jsme vydat desktopovou aplikaci pro Linux a další platformy. Jako malý tým jsme rychle vyloučili vytváření nativních aplikací pro Linux, Windows a MacOS a rozhodli jsme se přizpůsobit naši aplikaci pomocí Electronu.
Linuxový terminál
- 7 nejlepších emulátorů terminálu pro Linux
- 10 nástrojů příkazového řádku pro analýzu dat v systému Linux
- Stáhnout nyní:SSH cheat sheet
- Cheat sheet pro pokročilé příkazy systému Linux
- Výukové programy příkazového řádku systému Linux
Electron je správnou volbou pro každého, kdo chce rychle dodávat vizuálně konzistentní aplikace pro různé platformy – zvláště pokud již existuje webová aplikace, kterou je třeba zbavit okovů rozhraní API prohlížeče. Tutanota je přesně takový případ.
Tutanota je založena na SystemJS a Mithril a jejím cílem je nabízet jednoduchou a bezpečnou e-mailovou komunikaci pro každého. Jako takový musí poskytovat mnoho standardních funkcí, které uživatelé očekávají od jakéhokoli e-mailového klienta.
Některé z těchto funkcí, jako jsou základní oznámení push, vyhledávání textu a kontaktů a podpora dvoufaktorové autentizace, lze v prohlížeči snadno nabídnout díky moderním rozhraním API a standardům. Ostatní funkce (jako je automatické zálohování nebo podpora IMAP bez zapojení našich serverů) vyžadují méně omezený přístup k systémovým zdrojům, což je přesně to, co poskytuje framework Electron.
Zatímco někteří kritizují Electron jako „pouze základní obal“, má zjevné výhody:
- Electron vám umožňuje rychle přizpůsobit webovou aplikaci pro stolní počítače se systémy Linux, Windows a MacOS. Ve skutečnosti je většina linuxových desktopových aplikací postavena na Electron.
- Electron vám umožňuje snadno uvést desktopového klienta do funkce parity s webovou aplikací.
- Jakmile aplikaci pro počítače publikujete, můžete využít bezplatnou vývojovou kapacitu k přidání funkcí specifických pro počítače, které zlepšují použitelnost a zabezpečení.
- A v neposlední řadě je to skvělý způsob, jak zajistit, aby aplikace působila jako nativní a integrovaná do systému uživatele a zároveň si zachovala svou identitu.
Splnění potřeb uživatelů
V Tutanotě se nespoléháme na peníze velkých investorů, spíše jsme komunitně řízený projekt. Náš tým organicky rosteme na základě rostoucího počtu uživatelů, kteří upgradují na placené plány naší freemium služby. Naslouchat tomu, co uživatelé chtějí, není důležité jen pro nás, je to zásadní pro náš úspěch.
Nabídka desktopového klienta byla uživatelsky nejžádanější funkcí v Tutanotě a jsme hrdí, že nyní můžeme všem našim uživatelům nabídnout bezplatné beta desktopové klienty. (Implementovali jsme také další velmi žádanou funkci – vyhledávání v šifrovaných datech – ale to je téma na jindy.)
Líbil se nám nápad poskytovat uživatelům podepsané verze Tutanoty a povolit funkce, které v prohlížeči nejsou možné, jako jsou push notifikace prostřednictvím procesu na pozadí. Nyní plánujeme přidat další funkce specifické pro stolní počítače, jako je podpora protokolu IMAP bez závislosti na našich serverech, aby fungovaly jako proxy, automatické zálohování a dostupnost offline.
Vybrali jsme Electron, protože jeho kombinace Chromium a Node.js slibovala, že bude nejvhodnější pro náš malý vývojový tým, protože vyžadovala jen minimální změny v naší webové aplikaci. Když jsme začínali, bylo obzvláště užitečné používat rozhraní API prohlížeče pro vše, co jsme postupně začali, postupně nahrazovat tyto komponenty nativními verzemi. Tento přístup byl zvláště užitečný u stahování příloh a upozornění.
Ladění zabezpečení
Věděli jsme, že někteří lidé uvádějí bezpečnostní problémy s Electronem, ale zjistili jsme, že možnosti Electronu pro jemné doladění přístupu ve webové aplikaci jsou docela uspokojivé. Můžete použít zdroje, jako je bezpečnostní dokumentace společnosti Electron a kontrolní seznam zabezpečení elektronů Luca Carettoni, abyste zabránili katastrofickým nehodám s nedůvěryhodným obsahem ve vaší webové aplikaci.
Dosažení parity funkcí
Webový klient Tutanota byl od začátku postaven s pevným protokolem pro meziprocesovou komunikaci. Využíváme webové pracovníky, aby udrželi vykreslování uživatelského rozhraní (UI) pohotové při šifrování a vyžádání dat. To se nám hodilo, když jsme začali implementovat naše mobilní aplikace, které používají stejný protokol ke komunikaci mezi nativní částí a webovým zobrazením.
To je důvod, proč když jsme začali budovat desktopové klienty, spousta vazeb pro věci jako nativní push notifikace, otevírání poštovních schránek a práce se souborovým systémem již existovala, takže musela být implementována pouze nativní (node) strana.
Další výhodou byl náš proces sestavování pomocí transpileru Babel, který nám umožňuje psát celou kódovou základnu v moderním JavaScriptu ES6 a kombinovat obslužné moduly mezi různými prostředími. To nám umožnilo rychle přizpůsobit kód pro desktopové aplikace založené na Electronu. Narazili jsme však na několik problémů.
Překonávání výzev
I když nám Electron umožňuje velmi snadno integrovat se s desktopovými prostředími různých platforem, nemůžete podceňovat časovou investici, abyste věci uvedli do pořádku! Nakonec to byly tyto maličkosti, které zabraly mnohem více času, než jsme očekávali, ale byly také klíčové pro dokončení projektu desktopového klienta.
Místa, kde byl nutný kód specifický pro platformu, způsobila většinu třenic:
- Například správa oken a zásobník jsou na těchto třech platformách stále řešeny mírně odlišnými způsoby.
- Registrace Tutanoty jako výchozího poštovního programu a nastavení automatického spouštění vyžadovalo ponoření se do registru Windows a zároveň bylo nutné uživatele požádat o přístup správce způsobem kompatibilním s UAC.
- Potřebovali jsme použít Electron API pro zkratky a nabídky, abychom mohli nabízet i standardní funkce, jako je kopírování, vkládání, zpět a opakování.
Tento proces byl trochu komplikován očekáváním uživatelů ohledně určitého, někdy přímo nekompatibilního chování aplikací na různých platformách. Aby byly tři verze nativní, vyžadovalo to určité opakování a dokonce i několik skromných doplňků webové aplikace, aby nabízely textové vyhledávání podobné tomu v prohlížeči.
Zabalení
Naše zkušenost s Electronem byla převážně pozitivní a projekt jsme dokončili za necelé čtyři měsíce. Navzdory některým poměrně časově náročným funkcím jsme byli překvapeni, jak snadno jsme mohli dodat beta verzi desktopového klienta Tutanota pro Linux. Pokud máte zájem, můžete se ponořit do zdrojového kódu na GitHubu.