Comment by memoriuaysj

5 days ago

what has gone horribly wrong is the native UIs. they are completely worthless, across all OSes - difficult to use, limited, and in general suck compared to HTML/CSS.

I've worked with all major GUI frameworks, from MFC to Qt, they all suck compared with React/Vue

Sucks a whole lot less for users though.

I remember when people argued that because the time spent running an app was so much greater than the time spent developing it that one should be more conscientious about a user's time than a developer's.

After all, wasting a minute of time from 20 million users is 38 man-years of lost life. Doing that just to save a developer a week or a month is ethically troubling.

Of course, people also upgraded their computers a lot less frequently and you'd publish minimum machine requirements for software which probably made it easier to make such arguments as you'd also lose customers if software was slow or had minimum hardware requirements a lot of people didn't have.

That largely went out the window with web developers where users were just as likely to blame browser makers or their ISP for poor performance. Now with app developers and OS makers doing it, I guess there's just so many users at this point that losing a few with older hardware just doesn't matter.

For whom?

Every single web or mobile app does his own custom thing nowadays. As a user I couldn't care less how it's implemented, what I want consistency in behavior and style across the board.

It feels like this has been completely lost, even on platforms like mac where consistency used to be important.

I'd take MFC everything over random behavior if I could.

  • > It feels like this has been completely lost, even on platforms like mac where consistency used to be important.

    There are two kinds of consistency: across apps within a platform and across platforms within the same app. As someone who uses multiple platforms regularly, I have forever been annoyed when eg keyboard shortcuts change when I switch to a different computer, especially when I’m using the same app.

    Apps like Discord, Spotify and VSCode are consistently the most pleasurable to use because they are largely the same.

    For a unique piece of hardware like the old iPod, it made more sense to do your special custom UX as a unified product. But we’re talking about general purpose computers. The ”platform” shouldn’t be special imo, it should simply be predictable and stay out of the way. They mostly provide the same thing, like copy paste and maximizing a window, yet have different controls. This differentiation adds no value, at least to me.

    • You forget you’re a minority. Most users use one platform, or at most one work one private (probably with different software). So most software should be optimized for the platform, not consistency across them.

I don’t agree with this at all. I’ll take AppKit (preferably with Swift, but Obj-C is fine too) over anything web. There’s a number of reasons, but the biggest is that AppKit has an expansive set of well implemented, accessible, flexible, efficient, and ready to use widgets that are all designed to work together, and the truth is that this isn’t something you can get on the web.

Even the most complete “UI frameworks” on the web are full of holes, leaving you to build a patchwork monster out of a laundry list of third party widgets (all of which themselves are full of shortcomings and concessions) or build your own.

As an aside, this gripe isn’t exclusive to the web. It’s a problem with many others such as Windows App SDK (aka WinUI) and Flutter, among others. At least for the things I build, they’re unsuitable at best.

  • There's one problem: If you're competent with non-web UI technologies, it's probably time to schedule your colonoscopy.

    Late millennials and gen Z have been spoiled by declarative, reactive frameworks that work identically whether you're doing a local UI or the Web, and the tools (for example Figma) that have grown up around these frameworks. Using C++, Objective-C, or even Swift will be just fine for a personal project, but if you're talking something that needs to be maintained and refined over the long term by a team, you will have a much worse time finding people competent in those languages than in JavaScript+React+Electron.

    This is also one of the reasons behind rewriting everything in Rust: C is so dangerous, people who don't already know it inside and out are unwilling to touch it. Virtually all of the younger system developers are already working in Rust, and would vastly prefer it over working in C given the choice, so keeping a C project maintained has gotten a whole lot harder.

    • > Virtually all of the younger system developers are already working in Rust

      I'd love to know where you get your statistics from.

      FYI, as an anecdote, I am 'younger', in the sense of 'only recently joined the workforce', and I write 100+ lines of C and C++ a day, both at work and in side projects. Haven't touched Rust once, although I would like to get into it.

      And funnily, the one UI framework I did use at work is Avalonia, which is strongly inspired by Windows Presentation Foundation.

    • I write plenty of declarative UI too in the form of SwiftUI (where it makes sense; often on Apple platforms the imperative frameworks are better suited) and Jetpack Compose.

      Declarative UI has its upsides, but it’s hardly a panacea. There are places where it’s a straightforward dramatic improvement and then others where it’s an awkward contortion at best. Reactivity can be great but works in imperative setups too.

      The explosion of popularity of front end web frameworks comes down almost entirely to two things: accessibility and commodity talent. It has a low bar to entry and JS+React is the closest the industry has come yet to achieving its undying dream of cheap, easily replaceable, interchangeable developers. In most other aspects it’s objectively worse than alternatives.

I would hard disagree. Give me QT to make cross-platform applications that properly manage resources, have low latency, and barely register in memory usage.

There was a cross-platform QT tool, running on macOS, Windows, and Linux, for debugging and updating the firmware for an embedded platform solution. macOS & Linux both were quick and fast to code. Windows needed more work and also an abstracted write management system because the application was bringing the OS to screeching halt while writing the debug messages to a SQLite database. The write issue was only on Windows. HTML pages / reports were being saved into the SQLite database and viewable with-in the application. This was all packed into a single file executable so nothing and to be installed, just copied to the computer and ran.

Often low-end hardware is sold in product solutions and frameworks like QT are better suited to make the end user happy with load and response time than HTML5. The only reason I find bloated frameworks being used on such hardware is because the developer only understood one programing language and one UI framework. The former developer who's job I took over jumped ship because he did not want to learn WPF and only knew WinForms.

QT, HTML5, React, WinForms, Gtk ... are all tools in a tool box and each has a proper usage. Hell, if I ever make an iPhone based application I will be learning Swift and the Apple frameworks for such a task.

I generally agree with you, but it does entirely depend on the type of application you want to make.

If you need a lot of graphical elements and customization to get a look and feel that matches what you want, then yeah, nothing really beats html/css/js for both it's flexibility and available ecosystem.

But if what you need is an application with a button that does magic things when you push it, or a text box or table that allows for customization of the text color, then all the other types of UX frameworks work just fine. You just can't expect to do something like make a pretty chart.

SwiftUI on macOS 26 still has issues but it’s finally starting to evolve into something usable. In particular it seems like the long standing performance problems are being addressed.

and yet the Telegram Desktop App, written in Qt/C++ is the only goddamn desktop messenger app that actually feels smooth and feature rich rather than the webclient wrapper abominations of everyone else that eat half a gig of ram on startup and randomly hang on searches

  • I’ve recently downgraded my 10 year old used-only-for-obscure-firmware-updaters laptop to Windows 7 and enabled the “Classic” design. The snappiness of that GUI is unmatched even with Win 10/11 on much better hardware. Makes you wonder about the rest of Windows when Microsoft can’t even optimise the most basic things in modern Windows anymore.

    • Same here. I developed desktop applications for 15+ years and was really frustrated with Microsoft's direction for the UI around the time of Windows Phone. While Windows Forms may not be the best, it worked for decades until then. Now even if someone wants to build a desktop application using native UI, it's next to no resource at all because it's all about cross platform nowadays.

  • macOS has two separate Telegram apps, technically speaking. The one (most) everyone uses is AppKit based.

Ugh, opposite. CSS is the fucking worst way of laying out a UI. How many human lives have been lost to div class layout nonsense that a better system could handle directly.