This is pretty much a “beating the dead horse” scenario. Seing as it was opened 2018 though, it’s quite easy to say that there are other or even new arguments to be made for a mobile version.
First, let’s talk about iOS and Android:
Electron, as much as I personally have a bit of a disdain towards it as the Chromium engine isn’t exactly known to be resource friendly, has become the defacto standard for non-native app developers. As in, develop it in Electron and deploy it wherever it can run (as in, enough resources are available). All the way from a Raspberry Pi to laptops and desktops. But apps like Discord have proven that writing an app for all the platforms is very possible by utilizing the same UI but applying features such as media queries in CSS to make the design responsive. Once the responsiveness is handled, the rest is less of a problem.
So, for Mailspring to have an iOS client, it’s mainly the UI that needs rewriting. But, that introduces another question: Running Mailcore2, the C++ stuff. Well, there are two ways to do so: Either as a subprocess, or by using WebAssembly.
I did some experimenting with WebAssembly recently and it’s very possible to get applications running tht weren’t initially designed to do so. That, and by using a bit of trickery in terms of sockets and
wasm32-unknown-wasi and running via Wasmtime or Wasmer is very possible - although WASI does not have a good socket implementation yet, which is possibly a major no-no for a Mailcore2 in WASM implementation as it’s whole stick is to interact with mailservers…and, well, that is networking. Emscripten does have a bit of support for that, but it’s not particularily great, but works for the most part.
Now, one other topic: Linux phones
Currently, with Purism and Pine64 working on making linux based smartphones accessible to the market, there is something to be said about a possibility for the convergence of a Linux desktop: It might come to a point where a single linux phone can run full fledged desktop applications that either use
libhandy for responsiveness or just plain Electron, since this is already a feature due to how CSS - well, the “browser” - works. There might be a scenario where you have a Linux phone, connect it to something like a NexDock and then use a full desktop.
But convergence and responsibility go a little further and yet below: Phones and tablets
If you were to release an iOS and/or Android app, you’d probably end up getting questions from people regarding iPads and Android tablets. Going from a smartphone screen to the width and height of a tablet is also an aspect of responsiveness.
So, the TL;DR of all this:
- Mailspring’s UI needs to learn to become responsive.
- Mailcore2 might just need to become a WASM module to remove some of the pain of building it on mobile platforms but running it native on “traditional” OSes. Quotes here, because what I mean is your typical Windows and macOS - the classics of desktop OSes.
But this requires development time. It is not impossible - but someone has to actually do it.
I’d love to have the very same email client running on all the platforms that I use - and I am very platform-fluent. An iPhone for when I am traveling, a MacBook for when I visit friends and family to cover my basic computing needs, a Windows desktop at home that also has Linux on a separate partition for when I work with more specific tools that I could do via WSL or a VM but would love to use my native performance for instead. Just having the same set of apps - Discord, Mailspring, Element - on all of them would be neat. Let’s see if we can get there! =)
(Originally posted by IngwiePhoenix on GitHub.)