top | item 30790964

Ask HN: Why aren't devs making desktop apps any more?

264 points| sirjaz | 4 years ago

I was wonder why aren't devs making desktop apps any more, especially since everyone is buying laptops and desktops again? With all the tooling out there for cross platform, a native experience, and better privacy/security than a webapp.

For example, Here are just two frameworks/tool kits that are easy to use and to build desktop apps with.

React Native for Windows and MacOS: https://microsoft.github.io/react-native-windows/

Avalonia UI: http://avaloniaui.net/

Also, If they do use frameworks like the ones mentioned above they will still only release the app for mobile and then rebuild the code for a webapp which is slower and does not have the functionality.

John

330 comments

order
[+] mschuetz|4 years ago|reply
> better privacy/security than a webapp.

It's the complete opposite and one of the reasons I prefer to use a comparable web app over a native desktop app. Installing an app requires way more trust into it than using a web app that runs inside a heavily restricted sandbox.

As for why I also like to prefer developing web apps, that's because the available tools make web development more productive. Checking changes to the source is near-instant by simply pressing F5 in the browser, and the dev tools in browsers are some of the best you can get for debugging.

[+] 0xCMP|4 years ago|reply
Even in iOS which keeps apps in a fairly restrictive sandbox + goes through some kind of review process I wouldn't trust an app like Facebook's or Reddit's to not be gathering some kind of other information to use somehow.

There is a reason Reddit insists on you downloading their app.

[+] thewebcount|4 years ago|reply
> It's the complete opposite

No it's not. To use a web app I have to have an internet connection to even start the app. Anything I click on that loads a new resource sends data to the server about what I'm doing. I can unplug from the net, install desktop software and run it without it being able to send anything anywhere.

[+] EastSmith|4 years ago|reply
This is the reason I am using open.spotify.com, instead of their desktop app. Same experience, but browsers provide pretty good sandboxing.

They will track me anyways, with web atleast they don't get the chance to go over all my other stuff.

[+] jonny_eh|4 years ago|reply
It's easier to ensure your users are always using the latest version.
[+] nonameiguess|4 years ago|reply
I believe the rationale here is, sure, you need to trust that the vendor isn't giving you malware, but for most software makers that have existed for longer than a few months, you have a reasonable track record to grant that level of trust. On the other hand, trusting that your data won't be exfiltrated somehow is much harder because of how widespread the practice is. But at least desktop software can, in principle, run without network access. A web app cannot.

Beyond that, you can also, in principle, run a desktop app in a sandbox and/or audit it in some way to observe its behavior and assure yourself it isn't malicious, and only then use it on a sensitive host. A web app, in contrast, can't even be guaranteed to serve you the same version of itself from one second to the next, let alone guarantee that any change made to it between requests wasn't malicious. The sandboxing done by the browser is the only protection you have (short of only ever visiting the web at all from a sandboxed host).

Then get into applications like basic photo processing and document editing. Sure, it can be done server-side via the web, but the only way for that to be possible is for you to upload all of your photos across the network to the server, along with all the threat models that entails. If the software is running on your host, your data can stay on your host. I'm assuming here that pure Javascript is still not really used for compute-intensive applications and things like doc-to-pdf conversion and photo smoothing accomplished via web apps mostly still relies on server-side processing.

[+] philwelch|4 years ago|reply
If you’re using a web app, your data lives on someone else’s server. Not on a computer you can physically control or even—perish the thought—disconnect from the internet.

Oh cool, the app that handles all my private financial and/or health records runs on the internet and keeps my information in a datacenter in northern Virginia, but at least it can’t get access to the data on my local drive, which by the way there isn’t any because all of that data is in another web app and stored in quite possibly the exact same datacenter!

[+] rob_c|4 years ago|reply
Yes, please trust us with your account id, email and probably everything else...

Give me a fixed binary i can throw through a debugger/profiler any day

[+] kodah|4 years ago|reply
I think your statement on the security of desktop apps is a tad misinformed.

Desktop apps do have to adhere to the same system security permission that the browser provides. WebApps can be even more intrusive than a desktop app because you're constantly sending signals to a central set of servers with a unique browser fingerprint. You also lose control of updates, and would be completely unaware of new tracking dependencies being injected. The data you create with a web app is and always will be property of the company that manages it.

Desktop apps being packed into Flatpak is a good start to addressing sandboxing desktop apps, imo, and touches on your concerns as well.

[+] goodpoint|4 years ago|reply
> It's the complete opposite and one of the reasons I prefer to use a comparable web app over a native desktop app

Citation needed.

[+] phtrivier|4 years ago|reply
Because "time to ship", "availability" and "discoverability" are much more important concerns to many business than "consistency with the UI conventions of a given desktop operating system".

* "Time to ship"

Going the "native" way for desktops means doing specific work for Windows X, Windows Y, Windows Z, MacOs Whatever, than MacOs Whatever-Beta-Plus.

Even using the "write one, use everywhere" framework entices such work, because of the dirty secret no one talks about : they don't really work besides simple apps.

The choice of leaving those problems to the Chrome team is _really_ tempting.

* Availability

Popular Desktop OS have not historically integrated "app stores" or "canonical way to install an app".

Asking them to "Install" stuff is great if they're nostalgic geeks like us ; but real people learned long ago that anything asking the right to "install" on their computer is malware from a shaddy gambling website.

* Discoverability

People don't care about your app. Really, they don't.

But they have chrome on their computer (it came preinstalled, and they need it for Facebook), so at least you get a chance to grow your user base if you manage to put a link to your website in your facebook feed, or, if they're high-tech users, as an ad on the top of their google search result (also knows as "the internet".)

The only exception, as usual, is games, because: * they need to run native code and can't afford the dozen layers of inderection of a browser * their users are dedicated nerds who will happily glue toxic chemical products to the CPU of their opened motherboards in order to get 1 more frame per seconds * the install process of game exists, it's called Steam

[+] MattGaiser|4 years ago|reply
> Asking them to "Install" stuff is great if they're nostalgic geeks like us ; but real people learned long ago that anything asking the right to "install" on their computer is malware from a shaddy gambling website.

Or just the limitations of permissions. A business team can adopt a SaaS unilaterally. Anything installed involves IT.

[+] throw10920|4 years ago|reply
If "time to ship" is actually important, than why do most companies go to the work of making three separate codebases for their applications - Android, iOS, and web?

As to "availability", desktop app stores have become more prevalent over time, not less - which means that if this actually were a contributing factor, you would see more developers and people using desktop software, not less.

And as to "discoverability", there's no mutual exclusion between a webapp and a native application - in fact, the two values add. Making both makes your application strictly more discoverable.

All of these reasons seem somewhat disconnected from reality. I'm pretty sure the reason is simpler: companies want to get the highest ratio of revenue/users to development costs that they can (regardless of the negative externalities toward users e.g. performance and UX), and the trifecta of Android+iOS+webapp (combined with the fact that consumers now accept web applications in lieu of desktop ones) allows them to do that.

[+] MonaroVXR|4 years ago|reply
>Even using the "write one, use everywhere" framework entices such work, because of the dirty secret no one talks about : they don't really work besides simple apps.

Do you have examples? I'm not using many apps I guess.

[+] CRConrad|4 years ago|reply
> Going the "native" way for desktops means doing specific work for Windows X, Windows Y, Windows Z ...

Windows XP apps run fine on Windows 11, AFAIK, so that's a totally bogus argument.

[+] orcasushi|4 years ago|reply
Because desktop apps are harder to make money with. They are easy to crack / pirate. Also making a monthly subscription is harder for a desktop app (you would need still also a webapp to check for the monthly subscription).

It is on the other hand very hard to pirate software that only runs on some server. Also quite easy to force a monthly subscription if you simply hide app behind a login screen. Additionally your webapp also has the data of the user hostage so the user can not switch to a competitor.

So basicly I think webapps are a dark pattern. The user of course prefers desktopapps but due to above reasons there is hardly incentive to build them.

Will this change? I think so yes. Eventually this whole Saas bubble will burst, because - Chrome filesystem API will make building a desktop app as easy as a webapp - Open source and crowd funded software will pay the bill for those making desktop apps and users will be more then willing to switch.

When will this happen? If we are lucky within 5 years, but more likely 20 or 30 years.

[+] mekoka|4 years ago|reply
So, you start with the idea that people prefer making web apps essentially because "money". Then conclude that making desktop apps will eventually go back to be the favorite, because they'll become as easy to make as web apps. Doesn't that imply that ease of development, distribution, and maintenance are (the?) current major factors?

The economics of web apps is a pretty straight line and may not point to a particular cupid trend. If you make a web app and want to serve it, someone has to foot the bill (bandwidth, storage, security, maintenance, etc). Also, people will keep asking for improvements and fixes. If you want to offer nicer things, you may want to hire a UI/UX dev. If the app becomes popular, at some point you'll have no choice than to generate some income. It means that you can finance the app through either donations (which you can pull off if you're super popular, like Lichess), ads (if you're reasonably popular, like Photopea), or subscriptions (if you're in a niche, like many of the one-person SaaS out there).

Also, your target audience may express its preference for one monetization model over others. If you build a web competitor to the Salesforce suit, you might be surprised to see many of your prospective users frown when they ask you how much it costs and you reply "donations".

[+] linkdd|4 years ago|reply
Desktop app are harder to distribute on all platforms. Also harder to distribute upgrades.

You may need to support older versions because somewhere, you will have a user who don't want to upgrade.

This means you have to maintain multiple versions of your documentation.

[+] yewenjie|4 years ago|reply
You seriously think we will use concepts such as Desktops, Browsers, or even Apps in 30 years?
[+] rathboma|4 years ago|reply
Some of us are. I make https://beekeeperstudio.io.

I think there's a huge market need for good desktop apps, many folks prefer them to online tools. Bonus: It's never been easier to build a cross-platform desktop app.

I know there's a lot of hate in here for Electron, but it truly makes cross-platform desktop app development achievable for small companies and indies.

[+] ghostpepper|4 years ago|reply
Is an electron app really a desktop app? I suppose from the users point of view it could be, but I read the OPs post as asking about native desktop apps, ie. providing a better experience than a webapp.

To answer (my interpretation of) the question, there are still plenty of good native desktop apps for MacOS. I don't have data to back this up but I wonder if Mac users are more willing to pay for native desktop apps than Windows or Linux, which makes it easier for indie devs to support themselves full time writing these niche apps.

[+] jvanderbot|4 years ago|reply
In engineering land, I want to point out that 90%+ of the applications I use are actually desktop applications. Perhaps the majority of developers work on web apps (questionable), but certainly the majority of tools I, my team, and colleagues use are desktop apps.

- editors for code and text

- presentation and writing tools

- CAD software

- Music software

- Schematic / EE software

- Voice/Video chat applications

- All IM clients

- Web browsers for casual reading

- All games

In B2B or management land, most the applications are, indeed, web-based.

- Google drive

- Internal business tools @ my place of employment.

Still, I "use" those much less than 10% of the time, and most of them are simply web forms.

[+] urbushey|4 years ago|reply
Many even prefer email or similar clients to be desktop apps. This seems like an important part of the conversation that is being left out: the more complex the task that the app is handling, and the more memory-intensive, the better fit it is for a desktop app.

That said, as web browsers get better at memory management and safe hardware access (e.g. WebGL / WebGPU) I expect this list of tools that "must" be thick to dwindle.

[+] CRConrad|4 years ago|reply
> Still, I "use" those much less than 10% of the time, and most of them are simply web forms.

90% of them are various clunky ticket systems, (at least) one of which will invariably be JIRA. Preferably at least three or four of them in the same <10k staff corporation to do slightly different but basically similar things, which could all be done in any one of them.

[+] lmc|4 years ago|reply
Yes. Think of desktop as many thin slices of the cake.
[+] drusepth|4 years ago|reply
I think good desktop apps are infinitely better than good web apps.

However, I pretty much only build web apps. Here's some reasons why:

* Getting pixel-perfect design is SO MUCH FASTER&EASIER on the web (and using web-first tech like React Native, in my experience, has largely just met a stigma of not-really-native and sometimes suffers on perf for the sake of design). [FWIW I've been doing "web" stacks for almost 20 years, but I've also done C# for ~10, Java for ~5, and C++ for ~5]

* Even if you're not doing anything particularly resource-intensive, it's way easier to target a single machine spec (your server) and know everything just works, rather than worrying about resource-related bugs on lower-end/oddball machines, antivirus, hardware issues (out of ram? out of HD space? etc)

* Similarly, shouldering heavy load/cost on a server lets my apps be usable by more people who might not have up-to-date or capable machines

* Barrier-of-entry is significantly lower on web apps: someone can click a link and immediately demo whatever I made, rather than worrying about marketing and landing pages trying to convince someone that it's safe and OK to download/execute a random binary

* Web apps are a single codebase that's also usable on mobile, tablets, and other devices without having to worry about even more build targets as long as your design is reasonably responsive. I know these "native" libs also technically support that, but it seems there's always custom build configuration per device and/or lower-level per-platform code for e.g. IO/native functionality

That said, I wish desktop apps were easier to design for. I could probably get over all the other "downsides" if I could make native apps that looked and felt as smooth & nice as web ones.

[+] choeger|4 years ago|reply
Because they unlearned how to do it. Their managers unlearned how to even think about a product being shipped and installed on many different clients that are (gasp) not under our control.

Seriously, it's a loss of skills. Everyone is doing the "single installation target" SaaS nowadays, so naturally most developers lost (or never acquired) the skill to think in terms of installable software. I even met managers that had visible problems to contemplate a world in which different customers would run different versions of our product at the same time.

As a side effect of this loss of skill, software that actually has to be installed nowadays tends to come with ever worse installation methods. It's not unusual to see the installation method for software A make it impossible to install or run B.

[+] dinkblam|4 years ago|reply
We are working on MacUpdater: https://www.corecode.io/

Its 100% native Objective-C code on the client, plus a mixed Objective-C and Python pipeline for maintenance and backend - around 60 kloc in total. The other major components are a 50 kloc config-file and a 800k row database.

In addition to being fully desktop native, we also don't sell subscriptions.

> why aren't devs making desktop apps any more

we have a unique insight into the market, having seen every Mac app published in the past 20 years. i don't think your assertion is correct, there are a lot of desktop apps around. there are a few thousand apps under active development, and the majority of them are actually native, not electron (we count 25.000 native sparkle-feeds URLs versus 4.400 electron-feeds). i'd phrase the question the other way: why are there still so many native apps when most end users would never spend a dollar on software? i believe there are quite a few hobbyists out there, developing for fun or out of hopes of being able to make a profit later on. that further contributes to the expectance that software needs to be free, further destroying an already very weak market.

[+] kitsunesoba|4 years ago|reply
A lot of people will give a list of technical reasons (e.g. native platforms are "bad"), but in my opinion those tend to be exaggerated to a considerable degree – Cocoa/AppKit, Win32, etc aren't sexy or buzzwordy but they are deeply capable and in the hands of a knowledgable developer, can save a lot of time by virtue of no need to write a bunch of widgets from scratch (or contend with all the caveats and gotchas of a bunch of half-baked widgets from third party libraries).

I think the biggest driver is actually a shift in software licensing models. Web apps are eminently more compatible with subscriptions and SaaS; access given by one-time purchases is easily revoked or diminished, they can't be pirated, and user data living in some datacenter somewhere makes it a cinch to keep customers locked in. In short, it strips control from the user while giving more to the developer. This by far has greater implications on developer profit margins than tech stack alone does.

[+] pimterry|4 years ago|reply
> better privacy/security than a webapp

Is this true? Desktop apps have far more power to create privacy or security concerns that web apps do. The web sandbox isn't perfect by any means, but it's very good and far stricter than anything else on desktop.

We all get annoyed by websites that set tracking cookies and send telemetry on the web for example, but there's a lot more of telemetry & tracking in most desktop apps that simply gets ignored - Firefox's DLTOKEN id for each download being just one recent example: https://www.ghacks.net/2022/03/17/each-firefox-download-has-....

[+] mike_hearn|4 years ago|reply
Desktop apps can be worse for privacy if they're unsandboxed. But if the app isn't actually malware then they are better, because they process data locally instead of uploading it to a server to process. Even with the best intentions in the world, those SaaS services are getting hacked left right and centre these days and that's before you take national borders/sovereignty issues and spying into account.

What's needed is to go beyond the browser - we should be able to execute many kinds of apps inside portable sandboxes, not just HTML.

[+] nicce|4 years ago|reply
For this same reason you see a mobile app for so many websites when there is no point. And so much pushing for using them. Because browsers don’t allow that much data collection.
[+] nobodyandproud|4 years ago|reply
> Is this true? Desktop apps have far more power to create privacy or security concerns that web apps do. The web sandbox isn't perfect by any means, but it's very good and far stricter than anything else on desktop

This isn’t inherent.

If every program could run in in its own container then this wouldn’t matter.

There’s zero interest by anyone in doing so in yhe desktop, since the money is in selling services.

But virtualization approximates this.

[+] PaulKeeble|4 years ago|reply
I suspect its mostly a change in the types of applications being written. Most of the trends today are about interconnected sharing of data or aggregating data from across sources, internet applications for want of a better term. There aren't many new commercial applications being developed because its inherently a single user experience creating or editing data locally. They are still being created in the open source community however, non linear video editors have come quite a way in the last few years as have some interesting learning tools like Anki and IDE stuff like VSCode, I have added 10 or 15 applications to my list in the past years for all sorts like cartoon drawing. But the desktop isn't perceived as profitable for a new application and a lot of the tools have ended up with obnoxious DRM and charging schemes like Adobe. It is just not a hot area of innovation and its not being pursued.

I have also found that as a consequence a lot of modern languages are very light on GUI support if at all. Rust, Go etc etc do not have robust GUIs of their own and you end up bridging across to other languages and working in odd ways or with very bare bones implementations like fyne. On Windows at least your best bet for a GUI remains either C/C++ with Visual Studio or .net and the other choices are a long way behind. We are seeing the rise of the web interface via Node and such as a result, its cross platform because its just embedding a web server as a control but its providing a local application but as people often point out they don't run well and they lack native feel and performance and its not a great experience. There are technical issues here too but I think its really more that few people are looking at these types of applications and a few big companies maintain most of the big commercial applications and buy up anything new to include in their suite.

[+] UnpossibleJim|4 years ago|reply
Just to piggy back off your list, the only ones I can think of are the open source, creative applications (Visual Studio Code, Godot, GIMP, the LIBRE suite of applications, Blender, etc.).

Also, PC games... though, a great majority of them are connected to the internet for multiplayer access or DRM purposes, so I'm not sure if that counts. This market seems to be falling off, though. Steam has launched a hardware specific platform (though, I doubt they'll abandon PC's).

[+] Jiejeing|4 years ago|reply
> Rust, Go etc etc do not have robust GUIs of their own

Rust supports GTK just fine, not sure what the point is here. Is each language supposed to create and maintain its own cross-platform UI framework?

[+] mooreds|4 years ago|reply
It's so much easier to deploy and update web apps: https://daringfireball.net/2004/06/location_field

The UI for webapps is worse than for desktop apps, but not degrades enough to compensate for the better deployment story. (For most apps.)

[+] sirjaz|4 years ago|reply
This doesn't explain the mobile app boom then. There are more Windows desktop devices than all of all the Apple ecosystem. Also, there is a higher cost for webapps, since you need to host it on your own instance. If you want an easy deployment method you can use one of the package managers out there that make deployment and upgrading easy. Hell windows has winget and chocolaty now which make deployment and update easy.
[+] Dotnaught|4 years ago|reply
Is there data that indicates devs aren't making desktop apps any more?

Maybe it's just the major applications (e.g. video editing, audio editing, image editing) are good enough that it's difficult to compete without substantial resources.

The user experience may be better for a well-made native app than an average web apps, but the developer experience for the web has some major advantages: 1) You don't need to ask permission; 2) web apps works cross-platform; 3) updates are easier; 4) less obligatory updates to accommodate changes in native OS APIs/SDKs. Etc.

[+] brimble|4 years ago|reply
1) Private individuals do ~everything on phone and tablet operating systems. Tellingly, those have lots of native development going on. The main exceptions are PC gaming enthusiasts, and, as one might expect, there are tons of PC games released every year. That's what happened to B2C desktop software.

2) Businesses and other organizations have a bunch of reasons to at least be OK with using web-apps or tightly-integrated-to-online-services Electron shitware, and maybe even to prefer those things to native applications, and other businesses have a bunch of reasons to want to sell them web-apps (subscription vs. single sales, especially). That's what happened to B2B desktop software.

[+] rhl314|4 years ago|reply
The most important reason i think is that the web has progressively become good enough for majority of the usecases. However there are still a few areas where good desktop apps are needed.

Shameless plug

I am working on loadjitsu, a desktop app for load testing. https://loadjitsu.com

[+] joeld42|4 years ago|reply
For me:

- Cross platform UI is hard. (I'm learning to use Avalonia, and that's getting better but for now it feels pretty hard to get into, especially for someone coming from outside the XAML/dotnet ecosystem)

- Downloading an app presents significant friction to users. If you can solve it with a web app, you'll get a much wider reach (though converting that to paying customers might be a challenge)

- Platforms are making it HARD (signing, lots of "run this app from an unsafe source? open anyways?") It's doable if you already have a large, established app but just throwing together little utility apps is much harder than it used to be.

- Cloud Data. Users expect their projects and data to be available on the cloud. Platforms offer good ways to do this (like CloudKit) but there's no cross platform way to do this. Also this means that you're going to have to deal with auth/login at some level, which is a pain.

- No marketplace. If you build a standalone app, with no subscription nonsense, where are you going to sell it? Build your own store page and payment processor?

- The elves have left for the undying lands. The golden days where an app could exist as a standalone thing is just over. Our world is so interconnected that apps need to be connected to lots of other things -- even standalone apps end up talking to a bunch of apis. This interconnectedness is significantly easier in a browser or server-based app, even though it's quite possible in a desktop app.

[+] Robotbeat|4 years ago|reply
Way more money to be made ensnaring consumers into web-based subscription software.

Also, consumers are forgetting how to buy regular software. The Windows App Store is a thing, but it still feels weird to do that on a desktop/laptop as opposed to a phone or tablet.

Steam, however, is doing very well.

[+] rvieira|4 years ago|reply
There's money to be made with desktop software and the subscription model.

Just looking at my own apps: IntelliJ, Bitwig, Bear, Renoise, ...

[+] nakodari|4 years ago|reply
We're building native desktop apps at https://jumpshare.com.

However, it's hard. Very hard. Everyone in our industry has moved towards Electron but we've resisted it for a long time. I have always believed that native experience is the best in the long run. The downside is that it takes more time to build the same feature across two different platforms but this is a risk we're willing to take to provide a superior user experience for our customers.

[+] emptysongglass|4 years ago|reply
Hi, can you please not block Firefox Relay for sign-ups, which I use to protect my email address? I don't trust your company with my real email address (I don't trust any company) and I think that's fair.

EDIT: for why you should reconsider blacklisting Relay, one of Relay's developers gives a good answer at https://github.com/wesbos/burner-email-providers/pull/339#is...

Another request: if you used a blocklist found on GitHub I'd really appreciate a link to it so I can make my argument for why Relay deserves to be spared.

[+] kube-system|4 years ago|reply
Because supporting 4 platforms is harder than supporting 1.

Even a boring business application will have users across 4 platforms: Windows, MacOS, iOS, and Android. It’s easier to point them all to a URL in a browser than to debug issues on an end user PC.

[+] throw10920|4 years ago|reply
> Because supporting 4 platforms is harder than supporting 1.

True, and yet completely irrelevant, because every moderate-size app (and even many small ones) have at least three clients already: iOS, Android, and web (which may then be bundled into a desktop psuedo-app using Electron), and so they already have three different platforms to support and end-user devices to debug, in the exact scenario you said that they're trying to avoid.

[+] snarfy|4 years ago|reply
As a user I absolutely do not want your cross platform 'native' app.

I want a purpose built native app that is close to the metal on that specific platform. Not cross platform. Platform specific, using all the latest apis and features of that platform.