Comment by cyber_kinetist
20 hours ago
I think the real conclusion is: someone has to make a native cross-platform desktop UI framework that doesn't suck. (Yeah Qt exists, but it really sucks...) Until then, everyone will default to just using the browser for a desktop app, and the beatings will continue.
Because of this, I'm really looking forward for PanGUI to step up (https://www.pangui.io/), their UI framework is very promising and I would start using it in a heartbeat when the beta actually releases!
Why do you think Qt sucks? Other than the C++ focus, and basically the framework's decision to make you use everything they give you, which is controversial.
But apps made with Qt as an end product don't think suck. Qt is a fully featured and modern and high quality framework.
I agree. Modern Qt is great - you get the performance of C++ and the ease of use (simpler than React!) of creating UIs in QML. I've built my note-taking app with a from scratch block editor[1] (like Notions's) with it. Now working on a mobile version[2]. Also working on a LLM client[3]. And working on a library that will simplify and help others build such apps easily - which is my solution to the original article author's problem.
[1] https://get-notes.com/
[2] https://rubymamistvalove.com/notes-mobile-swipe-stack-view.M...
[3] https://www.get-vox.com/
So, are you using QT for the mobile version as well?
1 reply →
>someone has to make a native cross-platform desktop UI framework that doesn't suck.
You can't. At best it will shine on one platform and be mediocre on all the others. At worst it will be mediocre everywhere. There are too many differences between Windows, macOS and the various Linux desktops. That's before you start thinking about mobile.
I have yet to find a cross-platform UI framework that really feels native on Gnome. The reality is that there is no shortcut for native UI on all platforms, you have to use the “official” framework (e.g. GTK for Gnome). In my opinion the only softwares that should use a custom framework are professional grade apps where custom workflows can’t fit the native UI (e.g. Blender). Despite all the noise about native cross-platform frameworks, it’s absolutely not fooling anyone, we can spot this immediately on any platform.
> I have yet to find a cross-platform UI framework that really feels native on Gnome. The reality is that there is no shortcut for native UI on all platforms, you have to use the “official” framework (e.g. GTK for Gnome).
The alternative to cross platform frameworks that do not feel completely native on all platforms is to use browsers for desktop apps which do not feel native on any platform. They do not even have similar UIs to each other.
We would be better off using imperfect cross platform frameworks rather than sticking everything in the browser.
I think part of the reason this happens is that users accept it because they are used to web apps so do not expect consistency.
This correct. What's actually needed is a modernized wxWidgets. The goal of the GUI framework should be to find an architecture that is maximally compatible with the native Windows, GTK, QT, Mac OS UI frameworks/libraries plus a simple way to accommodate minor platform differences.
> someone has to make a native cross-platform desktop UI framework that doesn't suck
This is exactly what we're trying to do with Slint (https://github.com/slint-ui/slint ). It’s a native, cross-platform UI framework for desktop and embedded (Rust/C++/Python/JS), with no browser runtime
> someone has to make a native cross-platform desktop UI framework that doesn't suck
That's the browser, native ui development failed because it didn't want to lose money on cross platform compatibility, security, or user onboarding experience.
The web is fast enough for 99% of UIs, the story is not about using web, the story is about using the web poorly. old.reddit is not qt.
There's Lazarus / FPC. Fast, small. Extremely quick compiler. The language has its warts but very readable and relatively simple yet powerful. Uncool and treated like a relic though
Never heard of PanGUI - glad to see its C#, will have to try it out.
They're making the initial version with C#, but they have plans to make the library language-agnostic. Rather than creating bindings, they'll write it in a subset of C# and then transpile it to C++/Jai/Zig/etc, so you can get the best language integration without the hassle of also wrangling with your build system.
>Rather than creating bindings, they'll write it in a subset of C# and then transpile it to C++/Jai/Zig/etc, so you can get the best language integration without the hassle of also wrangling with your build system.
It sounds like a clever idea.
Has somebody written an analysis why Qt really sucks? It would be great to have a spec for a GOOD cross-platform (desktop) UI framework. It might be also possible to create a reference implementation of that spec on top of Qt.
IDK, it seems like old reddit did just fine without even trying that hard. The DOM and surrounding JS API is already a high level GUI framework, and the post illustrates that it's perfectly capable of doing useful interactions >60fps. I personally love working with native code, but the modern browser is capable of producing fast interfaces that saturate human senses without it. If you write JS like a C programmer would, it will usually be quite fast, even if it's not optimal. If you write native apps in C++ like a modern JS programmer - frameworks and deps with abandon - it will be a stuttery mess.
When the DOM is not enough, there's already WebGL and WASM. A vanishingly small sliver of use cases can't saturate human senses with these tools, and the slowest, jankiest websites tend to be the least deserving of them (ie: why is jira slow? It's literally a text box with a handful of buttons on the side!).
> (ie: why is jira slow? It's literally a text box with a handful of buttons on the side!).
Despite me agreeing with your overall point, this is such a ridiculous comment to make. You and I both know Jira is much much more than that. Reductive things like this just turn off people who would otherwise listen to you.
What about Flutter?
Not bad for mobile apps, but still sucks a lot for desktop support.
Also, really wished they've opted for a more general language like C# rather than Dart - but that's inevitable since Google needed to make use of their Dart language after they've failed to standardize it on the Web (and I think they don't want to use a language developed by Microsoft of all companies)
They've picked Dart because it was the only language that could have small aot binaries, hot reload capable runtime without compromise and most importantly because they could influence development of the language.
C# is one of the worst choices they could make at the time.
3 replies →
Anything that forces a specific language is a no-no.
There was WxWidgets.
The main consensus in the native space is that Qt is still miles ahead of any other cross-platform desktop framework (including WxWidgets). Doesn't mean that Qt is anywhere good - it's just the least worst option out of all.
I hoped someday Flutter might be mature enough for desktop development, but so far they've focused most of their efforts on mobile and I don't think this will change in the future.
As 1 datapoint to support this, see Audacity moving from WxWidgets to Qt for 4.0.
1 reply →
> I hoped someday Flutter might be mature enough for desktop development
I really don't think there is any broad future for Flutter. Requiring adoption of a new programming language is making an already an uphill battle even steeper, and the way they insist on rendering websites in a single giant canvas is... ugh
> The main consensus in the native space is that Qt is still miles ahead of any other cross-platform desktop framework (including WxWidgets). Doesn't mean that Qt is anywhere good - it's just the least worst option out of all.
That's not consensus. I very much reject a "desktop framwork". Qt has its own abstractions for everything from sockets to executing processes and loading images, and I don't want that. It forces one to build the entire app in C++, and that's because, although open-source, its design revolves around the needs of the paying customers of Trolltech: companies doing multi-platform paid apps.
I want a graphical toolkit: a simple library that can be started in a thread and allows me to use whatever language runtime I want to implement the rest of the application.
> I hoped someday Flutter might be mature enough for desktop development
Anything that forces a specific language and/or runtime is dead in the water.
4 replies →
PanGUI seems to be interesting. However being mobile ready would matter a lot for adoption and I couldn't see anything on their sites regarding mobile platforms.
I don’t think it makes sense to use the same framework for desktop and mobile apps. That gives you either terrible desktop apps or terrible mobile apps. Put the business/backend logic into a shared library, but build separate mobile and desktop apps on top of it.