For a little while, it seemed inevitable that desktop apps—well, programs, as they were previously known—would all migrate to be web apps, destined to run as tabs in a browser window. In many ways the architecture of the browser makes sense:
- Multiple devices per user encouraged more data to be stored server-side, which in turn thinned out clients and make them easier to rebuild as web apps;
- Even though the web stack wasn’t initially intended to host full application interfaces, there’s been enough scaffolding built on top, frameworks and tooling and package managers, that there’s simply more engineers who can wrangle the web stack;
- PCs nowadays have plenty of memory and CPU power to incur the overhead costs of the web runtime environment, which itself has been optimized quite a lot in the past decade.
This evolution took a detour, though, into Electron, which is essentially a whole web app and its accompanying stack bundled into a native binary executive and thus inheriting some of the additional features from the OS. Of course, for as long as Electron has existed, folks have derided the technology as slow, resource-intensive, and a wholly inefficient and inelegant solution. A Twitter thread I came across recently resurfaced that line of thinking, drawing comparisons to classic Mac apps and bemoaning the waste of downloading and running a dedicated browser per app install1. The argument of machine resource utilization versus faster & easier software development has been hashed out, ad infinitum, since Electron’s existence as an enabling technology.
But it’s the other point from the above Twitter thread that I found interesting: the idea that Electron brings its own UI/UX paradigms and doesn’t really try to adhere to the host platform’s design patterns or components. It’s a philosophy that’s more prevalent on the Mac than with Windows or Linux; both of the latter have given up trying to enforce uniformity in their apps’ UI/UX long ago. As a result, most of the application developers and designers who do care about this kind of precision in their craft, and want apps within a single operating system to have the same look-and-feel, have largely migrated to the Mac.
The business model of providing outstanding UI/UX with OS-level consistency is itself dying a slow but steady death. I lamented 2 years ago that the Mac is really the only desktop operating system where such apps could exist, and since then, most of those apps have had to move to a subscription service business model, each time to fervent griping of their end users. Furthermore, operating system vendors are increasingly adding apps to enhance the base OS’s functionality, and those apps—e.g., Apple Notes—are the ones that adhere and define what the system’s UI/UX will be, so this category of well-crafted apps have no choice but to differentiate themselves, in some significant way, from OS norms.
The category of apps that have fared much better in this consumer computing evolution is the big software suite bundles: the Microsoft Offices and Adobe Creative Suites of the world have done just fine, even if they themselves had to transition into SaaS products. At a certain scale, it becomes possible and strategically valuable to define your own UI/UX patterns, distinct from the underlying OS, to create a platform on top as a disintermediatory layer. How Wechat operates in China is an aspirational end-goal, in terms of how powerful an app platform can be, commoditizing its operating systems underneath; Microsoft Office is probably its closest equivalent on the desktop2.
Web apps, unbeholden to the operating system or even the browser’s UI/UX3, naturally develop their own interface paradigms, and Electron apps bring that to the desktop runtime environment which naturally aligns with the aforementioned business model transition. It’s no coincidence that apps like Slack and VSCode have become platforms unto themselves, and do so easily across platforms by leveraging web tech, all the while ignoring any pretense of playing nicely with the operating system.
So on one level, it’s understandable to blame the lack of native app development on companies cutting costs, plus lazy developers who waste system resources building on an inefficient web stack. But on a deeper level, the forces which are driving OSs to be more fully featured have simultaneously deteriorated the market for high-quality, paid native apps, forcing them to take the unpopular subscription route.
Or, with enough users, expand their own footprint to become a mini-operating system themselves.
Of course, in the earlier days of computing, there was no choice but to be stingy with memory and CPU given the limitations computing resources.↩
Seriously, people run full virtual machines on Macs and Linux boxes just so they can use the Windows version of Excel, that is how strong the lock-in is.↩
Browser advanced feature support is something else altogether, mostly.↩