OK, let's turn this into less of a rant: if you can do things in a native desktop app, you're almost always better off than with a browser based solution.
If you need networking, then you need to put up with latency and throughput. Thay is just unavoidable. What is avoidable is the overhead of unsuitable protcols. HTTP is perfect for one-off stateless requests for documents from a remote server. That is the whole point. But people crammed haphazard session tracking into it (cookies) and wonky authentication, then decided that having open sessions on the server is not something you do and layered an extra layer of statelessness on top of that while all the conplex browser based applications out there are actually incredibly stateful on the client and server. A native client that uses a custom tailor-made stateful protocol to talk to a server that also keeps session state would be much faster and more efficient than the shaky Jenga tower of compoments that are cobbled together to form the current generation of browser based software.
The reason fewer and fewer people are doing this are more to do with funding. So if I were to build software today, I'd instantly go with web-apps so that I can monetize them as much as I want.
Web app software has zero issues with piracy and in built regular cash flow model which everyone wants.
Find a way to fund desktop apps and make them as easy to build like web apps and they'll be vogue again.
And still, it's not applicable everywhere. E.g. if you're targeting business customers, the ones that can afford to pay you are also the ones that would be in deep trouble with the regulators if they pirated your software.
But that's just part of the problem. Unfortunately, with business customers, another big reason against desktop applications is that they can trivially work around the increasingly arcane and arguably bullshit approval and security policies corporations tend to have around installing new software. Though that seems to be changing; I've recently heard of companies using deep packet inspection to apply similar policies to SaaS webapps.
I disagree. I would say that web apps are popular because they provide more value. If/when users/companies demand native apps, developers build that instead.
Web apps are easier for users to manage (no installation, no upgrading versions) and instantly cross-platform. Installation is not trivial for a non-technical person, nor an IT manager monitoring and upgrading thousands of PCs and tablets. The natural revenue models fit because the value is recurring -- the subscription means you constantly have installation, upgrades, and data taken care of as a service.
> Web apps are easier for users to manage (no installation, no upgrading versions) and instantly cross-platform.
That's true, with a caveat that automated, forced updates are not an universal good - both for companies and individuals they're a source of risk and frequent frustrations.
> Installation is not trivial for a non-technical person, nor an IT manager monitoring and upgrading thousands of PCs and tablets.
This was mostly solved a good decade ago. Hello screen [Next>] accept the TOS without reading [Next>] leave default settings [Next>] uncheck the sneaky toolbar some morally deficient people put in [Next>] wait for install to finish [Done]. Sysadmins had a way to batch-install software in a non-interactive way. And these days, even Windows has a package manager that allows scripted installations.
> The natural revenue models fit because the value is recurring -- the subscription means you constantly have installation, upgrades, and data taken care of as a service.
Disagree. Installation is a one-time service, updates are as often undesired as they're not, and "data taken care of as a service" is bundling in something that should stay separate, in a sneaky attempt to lock the user in and ensure a recurring revenue stream. The case is simple: businesses like recurring revenue; everything else is either facilitating or attempting to justify it.
Turning products into services is one of the most annoying and anticonsumer trends of the current age. I get that business customers like it because of accounting reasons, but it's becoming a problem for everyone else. Next thing you know, you'll have to sign a TOS to use your hairdryer as a service.
There is a lot of laziness going on: not such an easy relationship between slow web and frontend as you describe. Most apps can work fine with stale data for most uses; they just do not because then the developer has to think about it and that costs money/time and takes talent.
Slack originally designed the app for one workspace. As users grew the expectations for multiple workspaces, they retrofitted by spawning a new thread for each workspace. eThey consciously traded off tech debt for growth. Now they've grown, they have invested resources to pay off the debt. And everything is one thread again.
On the PS3, I bought way less stuff in their store than I might have otherwise, because it was so damn slow, crashed so much (out of memory, felt like, but might have been something else), lost state all the time, and so on. It definitely felt like they were using a web view of some kind, probably with scripting enabled and in use, not just HTML+CSS for layouts & formatting or something. I'm sure that made publishing and adding rich content features ("just have a JS dev do it!") convenient. It also cut the amount of stuff I bought on there by at least half. There's no way I was alone in that—it was so, so bad.
Even on the much faster PS4 their store's unpleasant, though—barely, for now, until they bloat it with more JS as we approach the PS5—usable.
[EDIT] point being it wasn't the network requests ruining everything in that case, it was memory and processor hogging webtech on a machine that couldn't handle it yet should never have felt slow, going by specs, unless someone'd screwed up bigtime (say, by putting webtech on it).
The context here is that of the desktop software and the vast majority of desktop software is still not networked at its core. It is slow exactly because programmers used extra blubber layers to simplify their life, not because of the network API latency.
"simplify" lmao
Or rather to create an artificial market and justify their pay. More deeply, it is a symptom of our economic system that forces to do such things for having a living.
Once your memory usage climbs and your OS starts paging/swapping things to disk, seemingly trivial operations that page in new code will take forever.
Linux desktop toolkits and dev environment utterly sucks. You'll have to develop 3 different codebases for Win, Mac and Linux. Worse still, you'll have to reinvent app updates technology if you go with Qt or will be tied into a different updating technology and still have to deal with piracy problems.
Or you could go with web-apps:
-> Easy to develop code
-> Can't be pirated
-> In built model of regular payments
-> One codebase for all platforms
It's not even a close fight.
I wrote a simple web server in C and I was impressed by how tight my code had to be to reach the limits of the OS.
Even the internet is fast. Just look at fighting games. The simple fact they are playable over the internet is quite a feat. Fighting games require reaction times at the limit of what humans are capable of, and some moves require a 1/60s accuracy.
The problem is that there are so many layers of abstraction. You have the OS, JS engine, layout engine, frameworks, etc... Networking is just one of the layers.
You could build your software in assembly but if each action has to hit a rest endpoint, the network request will utterly dwarf anything else happening locally.
So as more and more software moves to browser as web-apps this slowness is unavoidable.
Consider how more quicker and responsive Thunderbird feels to using gmail, a web-app.