I agree with points about openness and gate keeping. But from my point of view, the web is the worst platform to run apps.
I worked on microcontrollers, system software, desktop software, mobile apps, games and now I am a full stack web developer who mostly does backend and defers most of the front-end tasks to colleagues.
I don't like JS frameworks and it was far more enjoyable for me to use QT, Borland C++Builder, Windows Forms XCode and Android Studio than to use Angular and React and even Vue.
Aside from Web front-end to being a less enjoyable experience for me, the Web was designed for websites, not for apps. Web as an app platform means subpar experience for the users, too.
We tried with Flash and Java applets running in the browser. Those died and now we have the Javascript mess.
When, if ever, Wasm will have full access to browser DOM, maybe we can get rid of the Javascript mess. But then, again, why bother running a binary app in the browser when you can run it on the desktop or phone?
And even if web as an app platform is said to promote openness and impede gatekeeping it still has a terrible downside for the end user: it makes the user rent the software instead of owning it.
The issue with renting software, is that it will happen even in native apps, because it is the only way most companies can get some money out of their products.
Piracy doesn't bring any money, and forever licenses don't scale to keep a steady income per month after the user base is settled, and everyone likes to get a steady income for their work.
Businesses worth billions of dollars were built by selling forever licenses. Pretty much every big B2C software company that is older than 15 years got that big selling forever licenses. Microsoft got big selling forever licenses to Windows and Office. Adobe got big selling forever licenses to Photoshop. Every games company, etc.
We know with certainty that selling forever licenses scales because we have concrete examples of it happening with some of the largest software companies in history.
SaaS is only a recent trend, it’s not the only feasible way to make money with software.
Only to the point PC market was still growing, and continuous OS updates required paying for new versions of the same stuff.
I was there, leaving piracy aside, buying new versions were only when going from MS-DOS to Windows 3.x, to OS/2, to Window 95, to Atari, to Amiga, and so forth.
That market has plateaued, there are no exponential growth curves any longer, to keep everyone on their job, and the shareholders happy.
True, but it's much easier for web apps to alter the deal than native apps, given most of their local state is ephemeral and hard to access, and much of the useful data, and potentially even software, is on the server. How many emulators are there for web apps, compared with emulators for nearly every popular OS/platform in the last 40 years?
We're talking about mobile apps here, that's where the web is losing.
They're already almost all subscription-only. They break after a few OS releases unless they're updated (true for both iOS and Android). Local state is "hard to access"? Check. (though it's easier on Android, for now) They "alter the deal" all the time, and there's nothing you can do about it.
And native apps will always exist for any appropriate use cases, but tons of the "apps" people use on mobile are nothing but websites that you can't use adblock on (DNS excepted). Many don't have true local content, just caching.
It is just as easy with native apps distributed via app stores, which is why most companies aren't that bothered with gatekeeping, as folks in sites like HN.
Emulators for Web apps doesn't make sense, that is a browser.
It naturally depends on the app (e.g. an app that simply calls out to an API naturally has the same issues whether it is native or not), but native apps tend to work offline, and you have the binary in a somewhat self-contained form, so you can (with the level of effort varying on platform, and the state of the available emulators) run the app with your data on a different machine/system.
For local-first web apps, which would be the easiest web apps to do this with, you have to fight the browser to do this, and I'm not sure how you would be able to dump out the state and code of a web app on Android Chrome and load it in Desktop Firefox. That and being able to update/modify the app locally permanently (and maybe even control updates) would I think make the equivalent of a web app emulator.
> Piracy doesn't bring any money, and forever licenses don't scale to keep a steady income per month after the user base is settled, and everyone likes to get a steady income for their work.
How about selling a new version with more features? That used to work in the past. Or sell a new software. That used to work, too.
Because as I clearly pointed out " forever licenses don't scale to keep a steady income per month after the user base is settled".
After a tipping point no one is buying new versions in an amount that can keep the salaries of the building rent, employees salaries, company taxes and whatever else is required monthly in a continuous flow that can keep the company going, without starting to cut down business costs.
The only new feature most will care about is that the version they own doesn't run on the new OS.
It is exactly the same thing as people stuck in Java 8, Python 2, .NET Framework, C99, C++11,... it works for the purposes of their employeer, and the costs to upgrade doesn't justify the outcome, unless forced by external factors.
Subscriptions started exactly because that model doesn't scale.
Anyone that starts a business quickly discovers how "easy" these things are in practice.
Right, so you build a business out around forcing people to buy something they don't need (updates). That seems... fragile. It will work for products I need and have no good alternatives for, but.
Then again, when apps require subscriptions I avoid them, 100% of the time.
The founder of Leptos makes a pretty good argument [1] that the bottleneck for WASM isn't really the DOM and that they are already faster than some popular JS frameworks even with the current constraints.
Just tried the site, and already the first problem is isn't as interactive as the Websites for any JavaScript framework, because naturally there is a whole contraption to make the code run into the browser.
That's odd. I have been following along here [1] and it seems just as interactive as Svelte, Angular or any of the others I've tried. There might be a few more tools that have to be installed, but that's a one time step.
Where editing the code, immediately shows the GUI related changes on the neighbouring frame.
While what I see on https://leptos.dev/ is just screenshots, and there is nothing on that documentation you linked that provides the same interactive experience, one has to explicitly start a developer sandbox to host the whole machinery, and even requires a codebox account for editing.
I have experience in all listed categories as well. I hold the inverse opinion. I hold the inverse opinion only for a select few web stacks, and outside of that niche, pull hard back into sharing your opinion. Would love to expand if anyone is interested in the dialogue!
Sure. Please name some fronted frameworks that provide a pleasurable experience to both developers and end-users.
For the developers it should be easy to learn, it should be stable without lots of changes, backward compatible with no breaking changes from version to version, have very good tooling, have very good package management, have a default way to accomplish things, have batteries included, be easy to debug and deploy.
For users it should be at least fast, responsive, have minimal to no latency, easy to interact with, easy on the eyes, have a coherent design language, be ergonomic, not be a memory or CPU hog.
> For the developers it should be easy to learn, it should be stable without lots of changes, backward compatible with no breaking changes from version to version, have very good tooling, have very good package management, have a default way to accomplish things, have batteries included, be easy to debug and deploy.
You described modern HTML/CSS/JavaScript and the Web APIs. If only people started learning it in place of React.
I worked on microcontrollers, system software, desktop software, mobile apps, games and now I am a full stack web developer who mostly does backend and defers most of the front-end tasks to colleagues.
I don't like JS frameworks and it was far more enjoyable for me to use QT, Borland C++Builder, Windows Forms XCode and Android Studio than to use Angular and React and even Vue.
Aside from Web front-end to being a less enjoyable experience for me, the Web was designed for websites, not for apps. Web as an app platform means subpar experience for the users, too.
We tried with Flash and Java applets running in the browser. Those died and now we have the Javascript mess.
When, if ever, Wasm will have full access to browser DOM, maybe we can get rid of the Javascript mess. But then, again, why bother running a binary app in the browser when you can run it on the desktop or phone?
And even if web as an app platform is said to promote openness and impede gatekeeping it still has a terrible downside for the end user: it makes the user rent the software instead of owning it.