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

264 points by sirjaz ↗ HN
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

334 comments

[ 5.5 ms ] story [ 378 ms ] thread
better question may be: why aren't consumers buying desktop apps as much anymore?
Because software is being sold as a cloud-only subscription.
Exactly, and even when there is an app it is mobile only.
Where does one even buy software anymore? The only stuff you tend to see on the shelves at a brick and mortar store these days are shovelware games that I assume Grandma buys to give her grandchildren something to play on the family computer when they come to visit.

Everything else is pretty much a license key you purchase online to allow you to download/register something you grabbed from the company's website.

Steam, Epic Games, GOG galaxy. They offer non game apps and they need to promote that
Let me BUY damn software

Looking at you, Tower

https://www.git-tower.com

Agreed—I love Tower, but I'm sticking with version 2. I happily paid an upgrade fee from 1 -> 2, and would be happy to pay another upgrade fee, but I'm not signing up for a subscription.
I know Apple has pushed subscriptions so hard but I just cannot stand them.
I think it's a hugely overlooked market. Look at the sales numbers from Balsamiq for example: https://balsamiq.com/wireframes/#customers

Personally there are loads of desktop apps I want, maybe after getting Beekeeper Studio profitable I'll make some more :-).

My hunch is that it's for roughly the same reasons so many people bought disposable cameras in the 80s/90s/00s.

1. Low initial investment: Disposable cameras were cheap to buy and so are most SaaS subscriptions, at least in the beginning.

2. Nearly-frictionless termination: Disposable cameras go away when you're done with them and most SaaS can be canceled— and navigated away from quickly.

3. Ease of use: Disposable cameras were simple point-and-shoot devices and most web apps are constrained by the expressibility of WWW UI/UX, so they often cannot easily be made as complex as their desktop counterparts.

4. No maintenance: Disposable cameras were made to be thrown away (at least from the user POV), so users didn't have to worry about protecting and maintaining an e.g. fancy 35mm camera. Similarly, SaaS shifts the burden of maintenance to the company providing the service and is ongoing.

For desktop software…

For #1. You have to install it and, possibly, pay an up-front cost to do so. Furthermore, you have to trust that the software is not malicious.

For #2. You have to uninstall it if you no longer wish to use it and you have to trust that it will clean up its tracks and not leave e.g. broken file associations.

For #3. You have to navigate an UI built under far fewer constraints than UIs designed for the WWW, so you may have to invest time learning its ins and outs.

For #4. You (may) have to keep it up-to-date, usually if you upgrade your OS, but especially if there's a security vulnerability present in the version you're running.

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.)

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.
Apple has hamstrung Safari so it's not capable enough to replace webapps (chiefly for notifications)
The nakedly predatory user-hostile nature of many large actors on the web really gave them no choice.
Do you think it's that or they'd prefer to get their 30% cut of transactions?
I think it's that. Remember that Steve Jobs didn't want third party apps on the iPhone and had to be talked into it.
Right, the original story was write web apps. So Apple has changed tunes on this topic before.
Steve Jobs is dead, and Apple's primary responsibility is to its shareholders, not its users. Subtly and pervasively hamstringing PWAs doesn't protect users. What would it even be protecting them from? PWAs that work well offline? No, it just coerces developers into writing native apps and distributing them through Apple's App Store instead.
While being locked in to a single app store without jailbreak isn't ideal, I'd rather have a native app on my phone than some lowest-bidder web app that downloads 10MB every time and runs terribly.
> doesn't explain the mobile app boom then

If my laptop is connected to the Internet, it's fast. That isn't as universally true on mobile. (Desktops are also more reliably connected to the internet when on.)

But the performance is worse. I point out the example of a small spreadsheet. Open it in Google sheets, and you are using 1/2 gigs+ in ram plus heavy cpu. Open it in a desktop app maybe you will use 20 to 30 mb of ram, and low cpu usage.
But many of us are not very heavyweight docs/slides/sheets users. For 95%+ of what I do just having a web experience on a browser that’s just a login away is an infinitely better experience than the old desktop days.

In general there’s plenty of performance to go around. For many things I don’t see a big difference between an M1 Pro MacBook and 6 yo machines.

> the performance is worse. I point out the example of a small spreadsheet. Open it in Google sheets, and you are using 1/2 gigs+ in ram plus heavy cpu. Open it in a desktop app maybe you will use 20 to 30 mb of ram, and low cpu usage.

Performance, measured in human units--e.g. time to load, refresh, et cetera--is fine. That's what ultimately matters. The customers are the humans. Not the machines.

How many people are willing to pay on Windows Desktop for apps vs iOS consumers?
Surprisingly a lot. Look at steam or epic games. If those platforms also advertised non game software, people would buy it.
Steam supports non-game software, but they haven’t managed to attract all that many sellers to their marketplace.
Anecdotally, most teams I know building mobile apps are using some sort of cross platform toolkits, unless native is really required. So you're kinda killing many birds with one stone.
Totally, I'm using Flutter for that reason. But I built a simplified SDK that can also be used from the back-end with any supported language. I'm planning on releasing an Open Source edition (which is the whole thing right now) soon: https://nexusdev.tools/
>the mobile app boom

Are these genuinely useful apps or cynical efforts to clone popular games/apps and monetize via ads? If the latter, volume says more about the business model than demand for novel functionality.

> This doesn't explain the mobile app boom then.

I feel that it doesn't make sense to expect the exact same transition desktop went through to happen on mobile, mobile is just different and has a different set of constraints.

Mobile is about discoverability and money. iOS users are more willing to pay for apps than any other platform, and every established business wants an app so they can be on more devices.
MacOS. "Cross-platform" really just means Mac and Windows, and Mac is too hard to develop for, even if you use a cross-platform toolkit (you have to own a Mac, and you have to install the latest XCode, and you need to figure out how to navigate XCode's bewildering and buggy GUI, and you have to digitally sign your app every time you release a new version).

Meanwhile, making a webapp that will work on all platforms (including Linux, Android, and iOS, as an added bonus) is the default. Just create it somehow, and it'll work on all of them.

Again, this doesn't answer why these webapps come out as mobile apps, but not desktop apps? Same support out there
For some reason, people love mobile apps and hate using the browser on mobile, but the reverse is true on the desktop: Web wins, installing a native program is cumbersome.
iOS has ~50% market share and an inbuilt payment mechanism that users have a higher rate of using than on desktops apps, and is a platform where people have been conditioned that "there's an app for that" compared to one where people have been conditioned "Don't run that exe, it might be a virus!".
Oh that's simple. It's impossible to make a webapp that works well on mobile. On mobile, you must be able to tap on buttons that are located along an edge of the screen. Those are the easiest to access points. However, in a web browser, doing so will invoke the search box, the menu bar, the back button, any number of unlucky events. So companies are forced to make a mobile app.
Pretty sure you'll need to own a PC if you wan't to develop for windows.
Common misconception. You can cross-compile from Linux or MacOS. For testing, yes, you'll need a copy of Windows, which you can easily run in a VM.

Technically, you can run a MacOS VM on Windows, also, but it isn't an easy process, and many would give up.

Sure. But what are you running linux on? Pencil and paper?

Seems like, if we follow your argument, the Mac is the best purchase because we can develop for all platforms on it.

Your argument, fundamentally is "I bought the wrong computer." Or as you put it, "I already bought a PC and I don't want to also buy a Mac". That's very different from "Mac is too hard to develop for because you need a Mac".

High end games are still desktop only for the most part. But even that may change as cloud gaming becomes a thing.
For paid software piracy is still a problem. With SaaS you don't have to think about it, especially if your service uses SSO.
Trouble is, you're conflating the distribution mechanism with the payment model. There's no reason a desktop app couldn't/can't implement a pay-as-you-go model; a one-off lifetime/per version payment model isn't the only option out there.
But people HATE pay as you go installed apps. Take Word, (MS office), for example. The way I see it, I downloaded this software, it is fully available on my computer taking up space, but I have to pay you for the key to just use it? Somehow that feels different than going to a website where I don't even have access to the application without paying.
Intellectually, we know that they have to pay to develop it somehow - M$ is still a business. That doesn't help the rage that is instilled by the "free trial has ended" message.
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.

There's money to be made with desktop software and the subscription model.

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

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.

Keep up the good fight! Also, have you looked at react native for Windows and Mac?
Hey! Well I use Linux full time, so supporting Linux is a non-negotiable for me. Make the future you want to live in right? :-)
What about Flutter? I heard so many complaints before I now hesitate to look at it. But maybe these were just teething problems and things are running more smoothly now?
It wasn't available when I started Beekeeper Studio, so I never tried it.

I used to hate native-apps-that-are-actually-web-apps, but I'm a full convert after using VSCode, that's what encouraged me to take the leap with BKS.

Electron is the market leader, so maybe Flutter will end up better, but at this point I'm skeptical.

Flutter is great. Web support is still not all there, but if you're looking at making apps for iOS/Android/Linux/Windows/Mac and you're not worried about it looking 100% native, it's a huge timesaver.
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.

I can't speak for all Electron apps, but Beekeeper Studio is a true desktop app yes.

All the assets (css, html, js) are bundled in the app, nothing loads from the web, it is truly 'local', and works 100% offline. It's possible to change styles based on what OS you're running on, and there's the full suite of native APIs you can call.

To weigh in on who pays for software -- I'll let you know once I've sold more copies of my paid version, my guess is that more MacOS using individuals pay for apps, but more businesses running Windows pay for bulk licenses.

Maybe Peldi from Balsamiq will weigh in here.

I think OP means native app. JS based Electron apps are noticeably less responsive and suck a lot more battery+RAM than native apps, easily a 10x difference.
Eh, there have been quite a lot of good Electron apps lately.

Where do you draw the line exactly?

edit: spelling

Even very well written Electron apps consume a lot more battery and memory and are less responsive than very well written native apps. It's the nature of the technology.
> Where do you draw the line exactly?

UI guidelines from Apple.

That even Apple regularly does not follow. Yeah. Great example... :>
Please, name a _single_ good Electron app besides VSCode. I'll wait.
In most cases the choice is not between an Electron app and an (imaginary) "good" app. The choice is between an Electron app and no app at all.
Sure, I understand that. But that's not what the parent was saying. The parent was saying there have been a number of good Electron apps recently. The only Electron app I ever see anyone hold up as good is VSCode, an app that makes a herculean effort to mitigate the latency and performance problems that Electron apps usually have.

If the choice is between an Electron app and no app at all? I would rather the Electron app not lie to my face that it's a real application. No one expects a website in your browser to follow system conventions perfectly or behave like any other app on your system would. That expectation instantly and reasonably changes the moment it has its own application icon and windows, and Electron apps don't give a shit. I would rather not need to have Teams and Slack both installed and chewing up my CPU and GPU at work just because they both decided they're special enough to try and claim all of my resources.

> VSCode, an app that makes a herculean effort to mitigate the latency and performance problems that Electron apps usually have.

Can you point to the parts of the program (source) that implement such optimizations? I'm curious, in particular, about how other editors solve the performance problems.

Large parts of VSCode is implemented in C++ and running webassembly to avoid the problems with electron. An electron app that doesn't have parts in webassembly can't be as good as VSCode.
Can you point to such files in the VSC repository? The `src` directory doesn't contain any.
Notion, Obsidian, and the like are getting pretty popular and are all Electron based. Postman was good after the Chrome App -> Electron port, though now they've bloated it to do more upsells.
Not only Electron apps, also any desktop program made with web technologies.

At an example, let's look at Dropbox desktop programs. In Windows is made mixing Qt, Python scripts, and native solutions (just have a look at the installation folder), resulting in both a worse performance an a use of RAM.

I'd consider Qt (including PyQt) to be a native app. Qt is not something I'd call a "web technology".
That's totally true. I forgot to write that Dropbox uses Qt WebEngine in combination with HTML + CSS + JS to achieve what could be done with just plain Qt with nothing more.
I would argue that a desktop app is an app that does not require a remote server to render the UI. Ideally it would be also useful without access to the internet. In this instance, it should be able to load up, connect to a local db instance running on my machine and allow me to get work done.

As a user the underlying technology does not matter to me. I just need to be able to get stuff done without a WiFi or wired connection.

Is an iOS to macOS Catalyst convered app a Desktop app?

I've litterally done this I'm puzzled myself as to whether I consider it hybrid or native.

> Is an electron app really a desktop app?

I don't have a hate on for Electron apps as such, and use quite a few, but they really are the worst of all worlds, particularly from the security point of view: you have all the ability of an Internet-connected web app to execute arbitrary code, but without any of the work that a full browser puts in to try and sandbox the ability to fuck up your machine.

Thanks for your work on beekeeper. I've been using it for about 12 months and in that time it's really improved.
Thanks so much! Lots more updates coming soon :-). Got a pretty meaty one coming in the next week or two
> makes cross-platform desktop app development achievable

Personal opinion - this has never been not achievable. It just requires making it a priority.

And it's not as if creating and maintaining an Electron app is somehow free. This "not free" aspect is compounded if you care about making it fit in with the rest of the desktop environment. Which, being fair, most developers (PMs, Managers, Execs) don't, even when their customers do.

You're right that it's possible, and electron development isn't free, but it's significantly easier for a team of two than it is to maintain native Windows, MacOS, and Linux.

One way I think of Electron is that it's fine if it's a primary app I'm using, but when it's a side thing that I have to leave open (Spotify, Slack), it can annoying. I agree that I'd rather native apps for better performance and resource usage, but I understand the developer's plight.

There's no developer's plight for Spotify and Slack. They both have tens of millions of clients running. They can afford to make something better and if they had any respect for their users or the planet, they would.
I think one of the biggest problems with modern app development (web and desktop) is how much developers assume that their app is your primary app (and thus can hog resources/screen space/etc). The only apps that can ever reasonably make that assumptions imo are ones with real-time interaction, e.g. games. Anything else can and will be a side app in some scenarios.
You omitted half of that quote. OP is talking about small companies and indie developers.
There was a great cross-platform environment called Visix Galaxy in the 1990's. You could compile your C++ source into native apps that ran on Windows NT as well as Solaris and HP-UX. It had a fantastic GUI builder which is similar to what is available today.
>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.

So does Qt

Qt is not nearly as easy to use as Electron, especially if you're a small company and need to hire front end devs for cheap.

Also Qt GUIs look like garbage, but it's hard to quantify why.

>Qt is not nearly as easy to use as Electron, especially if you're a small company and need to hire front end devs for cheap.

Sure it is.

>Also Qt GUIs look like garbage, but it's hard to quantify why.

No more garbage-like than you're getting with Electron and just as style-able (with arguable superior layout engines). Qt has a number of style palettes; perhaps you're used to using applications which chose to use non-native/standard palettes.

What are some examples of great-looking QT applications?
Kdenlive, Okular, KeePassXC, Dolphin.
J has an IDE written in Qt. It's nice.
I've written apps with GTK, Qt and Electron in the past. Of the three frameworks, Qt is easily the hardest (albeit "the best" for cross-platform native development). I'm not sure what your experience is with it, but I never once felt like it was easier than writing an Electron app.
Qt has provided us with a solid multi-platform solution. If you want power and control, you always have to pay in complexity and learning curve.
You do have to pay for Qt if your app isn't open source.
No you don't. You can use LGPL just fine in commercial, non-open desktop apps.
As a dev with a lot of experience in JS/HTML/CSS Electron makes things super easy, especially when it can be part of the regular build pipeline.

Learning Qt means figuring out a whole new stack and build chain. Maybe the result would be better, but with only a few hours a week I didn't feel like it would have been worth the time investment.

See for example:

https://nklayman.github.io/vue-cli-plugin-electron-builder/g...

> regular

I think the reason you consider the web app publishing pipeline the “regular” pipeline is the reason we’re having this discussion =p

Just wanted to thank you. I used Beekeeper for some time instead of PGAdmin and it was a very nice experience.
Thanks for the kind words! Lots of nice quality of life improvements for Postgres coming in the next couple of weeks :-)
Does anyone have any thoughts about DBeaver?
I use it occasionally, it tends to be my app of choice when I need to modify a MySQL database directly.
It's super powerful, but with that power comes complexity. I found it too overwhelming to use when building Rails apps. I really missed SequelPro, so I built Beekeeper Studio to scratch my own itch. Others had the same itch I guess!
I use DBeaver a lot for Postgres and Mysql. I find it to be a great tool. Not as slow as other db clients, yet is full-featured.
I prefer pgadmin, especially now that they dropped the hard dependency on chrome (that was added semi-recently for version 4)
I use DBeaver a lot, it's a great tool, their sales approach is mind boggling however. It took me several days to buy a license.. what the hell!
I've been following for a while, really love the Beekeeper Studio! But I always was interested, how do you evaluate the market and your income? Would you advice to join and develop tools for the desktop? Is it your fulltime job? Does it take a lot of time?

Thanks!

Because GitHub doesn't have a GitStore.
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.

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).

> 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?

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.

>I was wonder why aren't devs making desktop apps any more, especially since everyone is buying laptops and desktops again?

Who said they aren't?

But you wont find people talking about them on HN. Unless it's some UNIX app or development desktop tool.

Most consumers no longer purchase desktop apps, so there's no way to support desktop development.

However, for some reason, many consumers will happily subscribe to SaaS apps. So developers go where the customers are.

It's the chicken and the egg issue. People would purchase desktop apps if they were offered. But since they are not there is no support for them. As developers, it enthusiasts, etc ... we need to bring them to the forefront again.
> However, for some reason, many consumers will happily subscribe to SaaS apps.

Because consumers value not having to install, not having to backup, and not having to sync devices. They want immediate access to the thing they want, when they want it, on the device they want to access it on, with zero friction.

Apparently, broadband internet is sufficiently reliable (at least download bandwidth), that consumers do not value local redundancy, and they have not experienced sufficient losses by not having their data restricted to local devices, or are not cognizant of any losses.

They are. But it just so happens that now we finally have a truly universal write-once-run-everywhere VM (the browser) that makes development a million times quicker and easier, so people build for that.
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.

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.

I don’t know if I’ve seen a cross platform UI development toolkit that produces truly accessible UIs. At least with HTML you can make a solid attempt to support various AT like screen readers.
Pixelmator, Transmit, Nova

There definitely exists a market for desktop apps. But they need to be superior (especially in the "sparks joy" department) to the opensource/multi platform alternatives.

I’m making one as an internal tool to help our manual testers use playwright… and I’m using avalonia just because I want to make this thing multi platform… so far I’m impressed
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.

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.

I've passed the request to our developers. In the meantime, if you want to keep your email hidden, you can sign up using Apple and use anonymous email option.
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

> 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.

This is why the runtime libraries __have__ to be shipped by the OS vendor. It isn't good enough that Windows (or OSX for that matter) includes only stuff for it's OS. It should include a standard that is compatible with every other major platform too.

We don't even really get that with Electron either; all of those apps are 'fat' in that they ship the entire standard library for doing anything with 'Hello World'.

> A business team can adopt a SaaS unilaterally. Anything installed involves IT.

That's changing with SSO. Security and compliance teams are cracking down on rogue BUs buying SaaS products willy-nilly.

Ok, I guess "BU" here means "business unity" (I can't remember ever seeing that term), but I can't imagine what "SSO" could be that would crack-down on people signing on internet services.
Business Unit and Single Sign On most likely
Yeah, Single Sign On is an acronym I know, but can't do anything like the GP's claim.
I guess the claim is that, if you want your little team in MegaCorp to use a little Sass app, you're going to have to either :

- create user accounts at LittleApp, with your personal email, and have to remember a password.

Then, you're potentially giving sensitive corporate info to the SaaS app, with your personal email, and you risk getting fired for that.

Plus,new passwords are annoying !

- so you try integrating with the SSO solution from your MegaCorp, which means you have to talk to IT. Which means:

A/ you're going to have to wait because they're busy telling people to switch it off an on again ;

B/ they're now in a position to exert power over a decision you would like to make. Politics will ensue.

Oh, ok, that makes sense. But there are a couple of fixes. You create the account with your corporate email. You just need the password.

And that part: you're potentially giving sensitive corporate info to the SaaS app, with your personal email, and you risk getting fired for that

If that one part is real, than SSO isn't adding any power to you (or to the DSO anyway). If it isn't, then the only thing SSO changes is the password one.

Why can’t users just sign up with email instead?
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.

> 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?

In my experience at a FANG company, it turns out that building and supporting three separate code bases is (counterintuitively) faster and more productive than a unified code base.

We took a stab at this using Reactive Native and C++. It’s been a couple years at least since we did this, and so disclaimer: this might not be the case today. I am also no longer with that company.

The developers hated using RN. In 80% of the use cases, everything worked ok. The other 20% of the use cases consumed 90% of the teams time, and we effectively had to hire engineers who were experts in iOS, android, AND now react native. Meanwhile, the total amount of time to launch a new feature did not decrease.

Our C++ path had its own problems. Building dependencies across different architectures was a nightmare at times. My organization didn’t really have C++ developers. Surprisingly this didn’t really slow us down, and we quickly worked around the learning curve. This worked for us because we weren’t writing low level system code but just business logic.

When it came time to integrate into our iOS applications and several android applications, we again ran into build issues. We had many copy and pasted CMake scripts, which no one really understood and no one really wanted to maintain and own. This was frustrating enough that we experienced significant turnover, and we lost very valuable teammates.

In hindsight, we took both of these paths inorganically. These decisions were made by senior staff engineers and upper level management. It pissed off a lot of developers and lead to a lot of turnover. I have friends at that company, and they are again thinking about going back in the same direction.

> My organization didn’t really have C++ developers. Surprisingly this didn’t really slow us down

> When it came time to integrate into our iOS applications and several android applications, we again ran into build issues. We had many copy and pasted CMake scripts, which no one really understood and no one really wanted to maintain and own

Seems like the lack of C++ developers did slow you down. C++ developers knows how to make proper build scripts and wrap platform specific code to make their codebases portable.

Sure. What I was trying to convey was that we were able to quickly write business logic and test the logic for functional correctness. We had initially assumed that writing sleep plus pluswas going to be very difficult, big prone, and tedious. Surprisingly this didn’t slow us down. But building and integrating was extremely expensive.
Yeah, C++ isn't really that hard to write if you are experienced with unit testing in other languages. The big hurdle comes from managing the build system since it integrates with the language and there is no default way to just build and run things, this is very different from most modern programming languages. Which is why for team projects you shouldn't use C++ unless you have a person experienced with C++ who can set that up and manage it properly.
The conversation is about desktop apps.

Indeed, for mobile, there are different scenarios : if your mobile app is the core driver of your service, than your problem is having them on play store and app store.

The "cross platform mobile" APIs are less than stellar,but maybe you can get by with one codebase. Otherwise two is just a requirement.

On the other hand, if mobile is just an afterthought, than a WebApps with a few media query is the reasonable choice.

"Most companies" are not FANG.

Underrated factor IMO:

> consistency with the UI conventions of a given desktop operating system

Desktop conventions sort of exist for macOS but definitely do not exist for Windows or Linux.

I won’t go into Linux because I don’t want to deal with that energy right now, but Windows is an absolute mess:

- WPF - WinUI (2 and 3, totally different) - WinForms - MFC/Etc - WebView2 (basically electron but being promoted as first class for some reason)

Even within Microsoft’s own apps they can’t agree on UI conventions (e.g. are things round or square - Maps and other built ins use both).

On web you have to totally create UI from scratch, which usually means bootstrap or your company’s design system. Turns out windows desktop is basically the same, because apps have to create their own look from scratch - even Microsoft’s own native apps (Office, Visual Studio, etc) don’t use out-of-the-box UI.

Of course for new work Microsoft is mostly using Electron or WebView2, which should be telling (Teams, VS Code, etc). On the developers side, they’re pushing blazor, which is relying on electron or webview2 for the desktop story.

> WebView2 (basically electron but being promoted as first class for some reason)

Rendering a webview using the OS should have much lower disk & memory overhead than bundling chrome + node. In theory, there's no reason it should be higher than the cost of a tab in a browser. I'd love to see some benchmarks though.

> 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?

They often don't. Loads of companies ship on iOS first and Android later. There are also widely used frameworks for building your app in javascript so it is the same code on both iOS and Android just living in WebViews.

The backend is still common, which is usually a big deal
Touch is wildly different as an interaction paradigm compared to mouse + keyboard. So that's the reason for the mobile app.

You'll make your life much more difficult doing an Android app in a language that's not Java or Kotlin, or doing an iOS app in a language that's not Swift or Objective-C, so that's why most apps which are the same between Android and iOS are mainly web views.

> 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?

Because if you develop for the web and handle the REST/other APIs well, it can be trivial to work on the mobile frontends that connect the interfaces (whether on Android or iOS). It becomes more a matter of plugging the right pipes.

Whereas the backend for desktop apps across systems may be completely different; you may create more work to handle the idiosyncracies of different OSes.

(comment deleted)
>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.

> 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.

Because there are barely any dedicated desktop software developers and there are a million web developers.

Now if developer tooling wasn't trash, the transition from one to the other wouldn't be a giant hurdle. But, it is trash, so, we are where we are.

For example I work as an iOS developer but I've done desktop (macOS) software and prefer it. You know how many job postings there are for macOS devs? Zero.

Hasn't this been the case ever since Web 2.0 hit critical mass, around 2008 or so?