> And were we are, yet to have a Web UI designer that can match Blend, Qt Creator, Netbeans Matisse, Scene Builder, Glade, Delphi, C++ Builder,....
Huh, my experience was all those things are terrible (spent some time with Qt and researching Glade, also inherited a Delphi codebase full of spaghetti code at one point).
Visual UI tools are great for prototyping, awful for maintainable code. Anyone I know who's spent any time with them ends up wanting to go back to the code.
There certainly are good Web UI designers [1], it just seems no-one wants them. There are successful visual Web UI prototyping tools tho.
> As a platform for developing interactive applications the web is simply terrible.
This is where you lose me. For such a "terrible" platform, it sure has a lot of users now, don't it? Maybe you mean from a developer's perspective, and it's not unreasonable that someone might consider web tech terrible, so I'd be interested to know why they see it that way.
> There is no good way to develop a UI in HTML/CSS/JS
Nonsense. Most UIs suck in general. On the web, they suck a little more because HTML/CSS/JS have such a low barrier to entry, and the industry requires very little intellectual rigor that would cause one to think twice about "just npm install that shit, bruh." Despite that, there's no sensible reason why a "good" UI can't be built with web tech. The web is what you make of it.
> all attempts to do so rely on layers upon layers of wat are essentially hacks
You're going to have to explain what makes working within the confines of a webpage a "hack." Sometimes we create workarounds, but everything may need workarounds.
> to build something resembling a UI toolkit
It is a UI toolkit.
> on top of a document markup language.
Which many people agree is well suited for describing UIs, whether it's HTML or something else.
> The result a UI that is unnecessarily complicated and fragile.
The cause not being something wrong with webpages, but the choices developers make and the way organizations approach software development. Give me a fragile web app and I'll show you a fragile and hard to work with native codebase.
> Laying out and rendering HTML and CSS is incredibly complex
It's as complex as you make it out to be. None of what's on a webpage has to be complex. We make it complex because of a lack of actual engineering mindset and because HTML/CSS is relatively abstract and forgiving. If one doesn't prefer something that's forgiving, they can work with native code or something that transpiles to HTML/CSS. Doesn't mean HTML and CSS aren't capable of performing the job they've been doing for almost my entire lifetime now.
> compared how traditional UI toolkits do the same task.
Depends on the task. Depends on the toolkit.
> That complexity comes at a cost, both in development time and in UX.
As already stated, that complexity comes from no one but the developer. Given reasonable time, a developer should be able to build most UIs using web tech and have it working as intended. HTML, CSS, and even JS aren't really what most people consider complex about web development. What's insanely complex about modern web development, that people frequently complain about, is everything we've done to turn web development into Java development (i.e. a churn of build steps, toolchains, transpilers, runtimes, and so on).
> but the web app only sucks if you're using the stuff that sucks.
Please show me anything that doesn't suck on the web. And yes, I've been doing web development for close to 17 years now.
There's almost nothing that doesn't suck on the web. The languages, the tooling, the platform - you name it. It is good for one thing, and one thing only: displaying single-page interlinked documents with little to no embedded media. Any and all other attempts to make it do anything else end up bloated incomplete internally inconsistent overlapping monstrosities.
> Browser does not have a fuck ton of well supported widgets [...] And it works.
I beg to differ. When the economics of doing UIs shifted away from APIs like Windows Forms, Carbon, JavaFX towards the current trend of doing everything in a browser, it brought with it some serious regression in how powerful and user friendly those GUIs are.
With Microsoft-level resources, you can take on a mammoth engineering task like implementing Office or Visual Studio in the browser. But if you are resource-constrained in the way that most developers are, you cut corners and drop functionality, and that's where we are today with browser GUIs ...not that any of that matters if all you're doing is CRUD, like most people are. But one shouldn't judge technology by its easiest, most boring, and degenerate use cases.
> tools that are actually meant to build rich GUIs (i.e. HTML/CSS/JS)
You had me until this part. If those 3 were meant to build rich GUIs we wouldn't have new JS frameworks and a load of bundling tools coming out every year. They were meant to give documents structure and style, that's it. We molded them into the monstrosity they are today.
The appeal is not that they're a pleasure making GUIs with, it's that you go through the nightmare once and it works everywhere, rather than going through 3 different nightmares.
> “So, how was it to use a WYSIWYG web page editor from over 20 years ago? Quite pleasant, actually.”
The dirty secret of web apps is that we’ve mostly gone backwards in usability compared to native desktop apps from 25 years ago.
Web apps are a mishmash of paradigms. Pieces of desktop UI are reproduced using a woefully limited framework inside a static request-based page navigation model. The user never quite knows whether an action will trigger a multi-second page refresh, whether the back button does anything useful, etc.
Desktop UIs had professionally designed human interface guidelines based on decades of actual research. On the web, designers are primarily graphics artists who pick fonts and pride on making buttons look like nobody else’s buttons. Icons are nowadays tiny monochrome line scribbles without labels. Just pray there are tooltips so you can figure out what happens if you press one of these icon buttons in a web app. (Or maybe it’s just an icon and not a button? No way of knowing, since the conventions that made buttons obvious have been thrown away.)
> I think HTML is bad. I think DOM based development is bad. I really feel that Desktop UI development is much more mature and has much less legacy to compete with when developing a web UI.
I secretly hope this becomes true. I always think back to how nearly everything done on the frontend are essentially hacks to really sex-up a document description language for scientists.
I think it would be really neat if we did end up building UI's in a responsive way like you describe. It would feel more like the right tool for the right job. But that seems so far away when I start to think about what it would take to get there.
>HTML is not the mother language - It's actually pretty terrible for describing dynamic user interfaces.
Compared to... what? XML? QML? XIB?
There's literally nothing better than HTML for UI. Anything else is either buried in a mountain of proprietary nonsense, is platform specific, or is far inferior technically.
> from time to time check in on the state of desktop/app development and see if they've finally figured out html is better for interfaces than any interface builder
Is this for real? I can name numerous advantages of Web Apps have over desktop/native Apps, "Building better interfaces" is not one of them.
Trying to build a UI with CSS and DOM manipulation (not to mention <div> hacks, Bootstrap, Dojo/JQueryUI, different rendering engines, etc) is an exercise in pain compared to basically _any_ modern UI toolkit. (From XAML to Qt, Android, hell even GTK.)
edit: minor correction, I meant to say " build a UI" not "build a native UI"
> As a platform for developing interactive applications the web is simply terrible. There is no good way to develop a UI in HTML/CSS/JS, all attempts to do so rely on layers upon layers of wat are essentially hacks to build something resembling a UI toolkit on top of a document markup language. The result a UI that is unnecessarily complicated and fragile. Laying out and rendering HTML and CSS is incredibly complex compared how traditional UI toolkits do the same task. That complexity comes at a cost, both in development time and in UX.
This is so disingenuous and untrue that I‘m close to calling it an outright lie. Development of UI has never been easier, more accessible and better for the disabled than with web tooling. Any businesses from tiny startups to gigantic corporations can build value creating applications which generate billions of dollars of revenue which runs on almost all devices, using just one language and one code base. Browsers HTML and CSS parsers are incredibly generous in what they accept, allowing small markup mistakes in a latest update to not grind your operation to a halt. Modern HTML and CSS are dead simple to use, deliver sane defaults and capabilities which most browsers understand all the same. Never before has it been so easy to develop an application for your business with a language and frameworks millions of developers speak. Prototyping is incredibly simple. Modern browsers deliver incredibly tight sandboxes so malicious applications can neither access the information of other applications nor anything else on a targeted users system. Fake applications can be identified with SSL certificates in ways native applications never could.
The web enables the famed „write once, deliver anywhere“ which native desktop always aspired to be. My apps run on android, iPhones, MacOS, rare Linux operating systems, Windows and Tablets alike. The only thing they need is a browser. I only need one programming language for this.
One developer can do with the web what 10 couldn‘t do with native. How one could take a look at fortune 500 companies which are almost all at their size in thanks of the web and its advantages and then go on to declare the latter the worst platform to build is beyond me.
> Why such a huge, huge majority of UI development today takes place on the web?
Business models centered around the web, like the cloud and SaaS, and because it's the lowest common denominator when it comes to cross platform development.
> Perhaps the explanation is that native GUI frameworks simply haven’t kept up in terms of developer experience. And if you spend some time exploring them, I think that becomes very obvious very quickly.
QML works very nicely, it has a pleasant developer experience, it's reactive and declarative, and it even gives you JavaScript. It's similar to React in those regards, and I prefer it.
> The point is the web is capable of these things, sometime with a large team sometime with a tiny one.
The thing is... when you say "the web is capable", keep in mind that it's always one or two of the following:
- it's an insane effort to get something working (VS Code, Figma)
- it's not using web tech, not really, but desktop tech that is usually 5-10 years behind the actual desktop tech (WebGL in Figma and Photopea, Canvas in Google Docs)
And even there it's still multiple unresolved issues like font rendering, accessibility and a plethora of others.
Edit: Speaking of Photopea: I'm always in awe of people who can not only build a complex app, but also build an entire library of controls and a design system, too. Because the web's controls are is just so, so, so poor.
Sure: Rich in crap.
reply