Ask HN: Why hasn't web dev evolved to be like mobile/desktop app dev yet?

15 points by amichail ↗ HN
Any insights on this?

19 comments

[ 4.9 ms ] story [ 49.2 ms ] thread
The first thing that comes to mind is that all of my desktop development for the last few decades allowed a solution to be programmed in a single language (say, C), using a straightforward display model (an X,Y screen), all talking to an operating system, whereas web programming is anchored in a multi-language situation (HTML, CSS, javascript) with a rather complicated document-object model, all living in a web browser. Neither approach is easily reconciled with the other, and so the two techniques have little hope of merging. Personally, I hope the popularity of programs running essentially standalone on phones drives away the expectation of using a browser to host programs, and the idea of forcing everything into a web browser dies away.
It has. It’s been implemented several times and seen limited adoption.

ExtJS, React Native Web, and jQueryUI Mobile all “solved” this problem. Even Twitter Bootstrap could be considered a solution.

Why hasn’t one of these caught on and replaced bespoke apps? These frameworks are a lot to learn, difficult to optimize for narrow use cases, bloated, sometimes proprietary or inconveniently licensed, and often hard to maintain as browser capabilities evolve.

Why hasn't desktop dev evolved to be more like web dev? The tooling for web as a developer is vastly better, and as a user userscripts and extensions are wonderful. The closest thing to those for native is Frida I guess, and that's not really comparable.
In 1995 I could write a GUI app that processed incredibly complex datasets (even for today, although smaller in total size since my hard drive was 40mb). Drag and drop controls onto a page, and even if I wrote my own control population logic, I was done in hours.

Try that with web dev. It’s sad that it’s not better - but it’s not better.

Could your 1995 application be used by everyone on every system in a tap/click ?
I can't speak for 1995, but a bit later Java run equally bad on every platform and Qt run almost almost natively pretty much everywhere and with great tools to assemble UIs.
In my opinion web provides a developer experience that is a lot more enjoyable than Java and Qt can do for user interfaces. I have to admit that I only did small projects on Java and Qt frontends, but it was not very nice.

Qt needs to be adapted and compiled for every platform, it takes time and efforts and it's not interesting. And making a good frontend in Java is hard, I can't think of any Java application with a good frontend.

What about IntelliJ? Though some would say it is a bit "not lightweight". But it does have a lot of features.
It’s not a very impressive user interface. It works as an IDE but I would not show it to non developers as an example of a good Java user interface.
Multi platform with web isn’t easier than native OS

Whole lot of sites suck on mobile, not all devices have the grunt

Write once run anywhere continues to be a pipe dream

Also none of my desktop apps track me or blast me with ads

This is just about the GUI too; I can install a CLI only setup, and do science, infrastructure, and avoid the web framework or OS GUI bloat…

There’s no one size fits all anywhere.

There's no good drag and drop builder, but I can absolutely make a working, decent-looking webapp in an hour.
A drag and drop builder would certainly lower the barrier to entry for those of us not [necessarily wanting to be] familiar with every single detail of how CSS / HTML / JavaScript work.

We just want a pretty app to demonstrate our backend.

20 Years ago, you had a single computer with the data, the program, and the display all in one place with a native OS and API, like Win32 under Windows 2000 or XP. You could compile a single EXE, and it would work almost anywhere. You could reliably count on the display being at least 640x480 pixels, with a mouse and a user who knew how to optimally use it and the keyboard.

Now you don't have the data, program, or display in one place, sometimes not even in the same country. You've got different technologies that are always being obsoleted, across all the layers. Server OS, Database Layers, Web Server Layers, Cache Layers, DNS and Certificates, Encryption, the different platforms that the user might have from a Windows PC, or Mac, or Linux, or a tablet or phone with almost any resolution. Each of which has it's own set of filters and restrictions on content, cookies, anti-adware, security restrictions, bandwidth and performance differences.

You can't expect the latter to be anywhere near as consistent, reliable, or stable as the former. With the exceptions of bandwidth, and GIT, things have gone DOWNHILL in the last 20 years, and I see no slowing of this trend.

Not to mention the APP stores that can arbitrarily cut you off, without recourse.

This is because on the web, everything you see on the page has to be downloaded first. This leads to the following cycle:

* a widget toolkit is created and gains some traction.

* It starts adding features, becomes bigger and slower to download and execute

* users start leaving for the next toolkit, which promises a smaller, faster experience.

At this point, most webdevs have simply given up on desktop like toolkits, and only use what’s available on the browser, combined with a few lightweight libraries and an ui framework

The opposite did happen. People use web (electron, webwiews) to develop on mobile and desktop. Concepts from the web are used in other environments too (react native).

I developed on web, mobile, and desktop and I prefer a lot web development.

It has to some extent. The opposite is also true - look at Compose and SwiftUI.
As a mobile engineer with 20 years of experience and some knowledge about web development, I would say that web dev is more mature, flexible and (what is the essential part) keep up with new trends much faster.

Things like declarative UI syntax is still something new in the mobile world (SwiftUI, Compose, etc.), dependency management is a dark area (Android is a bit better, but a total mess on iOS/macOS development side), debugging experience for the web is miles ahead.

I usually ask myself the same question but in reverse – why mobile/desktop app development has not evolved to be like web dev?

I see no point in moving from web to desktop if it's going to be for an electron app, and no one is going to hire a webdev for a non-electron desktop app.
My opinion as a former C# desktop app engineer is that TypeScript/React development is much further than that.