6 ms·
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...) Unt
by cyber_kinetist 9mo 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/ https://www.pangui.io/), their UI framework is very promising and I would start using it in a heartbeat when the beta actually releases!
- Dwedit 9mo agoThere was WxWidgets.
- cyber_kinetist 9mo agoThe 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.
- TheBicPen 9mo agoAs 1 datapoint to support this, see Audacity moving from WxWidgets to Qt for 4.0.
- cyber_kinetist 9mo agoAbsolutely, they need Qt in order to design and theme a UI that actually doesn't look terrible (They already had good experience in porting Musescore from vanilla C++ Qt5 to QML widgets, so I think they'll use a similar system for Audacity)
- ragall 9mo ago> 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.
- cyber_kinetist 9mo ago> 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. Yes, that is the consensus of why Qt sucks - it's a massive framework that tries to do everything at the same time with a massive toolset of in-house libraries. This is inherently tied to the revenue model of the Qt Company - sell custom modules that work well with the Qt ecosystem at a high enterprise-level price. I also wish to just use the "good" parts of Qt but I can't, since it already has a massive QtCore as its dependency. However, there is still no cross-platform framework except for Qt that can actually do the most important things that a desktop framework actually needs: an actual widget editor, styling and theming, internationalization, interop with native graphics APIs (though I have gripes with their RHI system), etc. That's why I'm rooting for PanGUI (https://www.pangui.io/ https://www.pangui.io/) to succeed - it pretty much completes all the checkboxes you have, but it's still WIP and in closed alpha. > 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. Yeah, but at that time I thought this was at least better than wrangling with Qt / QML. You can write the core application logic ("engine" code) in C++ and bind it with Dart. There are already some companies I've seen gone a similar route with C# / WPF.
- 9mo ago
- swiftcoder 9mo ago> 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
- relyks 9mo agoWhat about Flutter?
- cyber_kinetist 9mo agoNot 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)
- wiseowise 9mo agoThey'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.
- deleted 9mo ago[deleted]
- mrsmrtss 9mo agoWhy would C# be the worst choice? Do you gave any real arguments or is it just your biased opinion.
- mrsmrtss 9mo agoSorry, made a typo with 'gave' -> 'have'. But the point stays , why would C# be (one of) the worst choices here (when C# has small AOT binaries, hot reload etc)?
- cyber_kinetist 9mo agoNowadays C# has good AOT support, but it wasn't when Flutter was in its infancy.
- rubenvanwyk 9mo agoNever heard of PanGUI - glad to see its C#, will have to try it out.
- cyber_kinetist 9mo agoThey'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.
- DeathArrow 9mo ago>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.
- morganherlocker 9mo agoIDK, 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!).
- girvo 9mo ago> (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.
- DeathArrow 9mo agoPanGUI 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.
- layer8 9mo agoI 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.
- cocoto 9mo agoI 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.
- imtringued 9mo agoThis 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.
- graemep 9mo ago> 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.
- ogoffart 9mo ago> 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 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
- torginus 9mo agoWhy 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.
- rubymamis 9mo agoI 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/ https://get-notes.com/ [2] https://rubymamistvalove.com/notes-mobile-swipe-stack-view.MP4 https://rubymamistvalove.com/notes-mobile-swipe-stack-view.M... [3] https://www.get-vox.com/ https://www.get-vox.com/
- auggierose 9mo agoSo, are you using QT for the mobile version as well?
- rubymamis 9mo agoYes! I'm not using Qt's built-in components like StackView, but reimplementing them from scratch to better support swipe gestures, etc so they feel native-like.
- greatgib 9mo agoApps made with qt are mostly good but the engine sucks hard indeed. The programming is difficult, let's say compared to GTK, the SDK interface change totally every couple of years forcing apps to rewrite everything from scratch. Probably related to that, the documentation is splitted in an hundred places, often undecipherable between what is obsolete or for current version. Most parts of the framework are not really documented anyway, there is just automatically generated reference guide from the code that is missing most part that is needed. Like you have an option name, now what does it mean? What this option to be used for? It's hard to extend simply to bypass default behavior of the SDK that could be limiting. Let me not speak of the whole qml craziness and the qtuieditor... And the worse of it is that the license is (or was because I don't know recent evolution) totally shitty. Like free to use in that case and that case, and commercial in that case and that case. No one serious would like to build something on a private garden like that.
- kukkeliskuu 9mo agoHas 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.
- lordgroff 9mo agoThere'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
- vouwfietsman 9mo ago> 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.
- tonyedgecombe 9mo ago>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.
- jadenPete 9mo agoI’m also looking forward to gpui (https://www.gpui.rs/ https://www.gpui.rs/) from the Zed folks.