HACKER Q&A
📣 mike_hearn

Biggest pain points for shipping desktop apps?


If you have experience of shipping desktop apps to end users (e.g. Electron or otherwise), what are your biggest pain points? And what sort of solution would you prefer for them? I'd love to hear about anything from very specific annoyances to wide-open utopian thinking.

I work on a tool to make deploying apps outside the browser as easy as in-browser [1]. So far we have attacked some common pain points, and are now looking at what might come next. Already done:

• Multi-platform CI is a pain and expensive, fixed (you can release from your dev laptop or a cheap Linux CI worker).

• Lots of work on code signing usability like making it CI compatible (cloud signing services), self signing, notarization from non-Macs, high quality error messages etc.

• Lots of work on usability in general.

• Web-style updates that apply synchronously on start, or silent background updates.

• Delta updates automatically without any additional workflow steps.

• Automation of misc tasks for small apps like generating a download HTML page, uploading the results, etc.

Some ideas we're kicking around for future improvements:

1. Ability to update apps whilst they're running.

2. Handle interaction with certificate authorities for you, so there's no need to do that yourself beyond responding to ID verification requests.

3. Signing for you if your app fits inside a sandbox.

4. Stream app content instead of it being downloaded all at once.

5. Be able to re-use pre-existing files from other apps to reduce download sizes (for macOS; this already works on Windows).

6. More formats for Linux (but which? flatpak? snap?)

What other things might be useful?

The wider vision here is to steadily chip away at the sources of friction that push people towards running only in the browser, allowing devs to build apps that fully utilize the hardware, programming languages, frameworks and operating systems that are out there. Today the incentive to innovate in regular computing form factors is significantly hampered by the fact that nobody will actually use anything you add, because browser makers won't be willing to export it to JS. Mobile has avoided this issue but there's no equivalent for the platforms where work gets done. Whilst the tool supports Electron well, it also supports any other kind of app, so those of you who want to experiment with making UIs in pure Rust or any other approach can go wild and easily ship whatever you produce.

[1] See https://hydraulic.dev/ and for the docs, https://conveyor.hydraulic.dev/


  👤 ggeorgovassilis Accepted Answer ✓
You cover more points than I had in mind.

> If you have experience of shipping desktop apps to end users

I used to work on desktop applications in the early 2000s built with VB, VC++ and Java, recently (for fun) with PWAs.

> what are your biggest pain points?

Inconsistencies between platforms and irreconcilable user expectations. I think the web experience ironed out both.

> And what sort of solution would you prefer for them?

I've programmed progressive web apps which can be installed by a browser as an offline app in both Android and Linux - I don't know how well they are supported on other platforms. They aren't great but they mostly work since browsers expose many local client resources (camera, filesystem, drag & drop etc).

I never, ever, want to work on desktop applications again. The only reasons I can think of that justify a desktop application are regulatory, performance or technology integration. These justify a degraded user experience imho.