What’s a decent tech to make non-bloated desktop apps these days? I’ve got some potential projects cooking, but they’d need to not suck. Bonus if a language with fewer footguns than C++.
Oh er yeah and NOT QT BECAUSE I HATE IT.
Multiplatform or at least Win+Mac also a must.
Gaaah, .NET was looking like a strong candidate but of course it doesn’t support Mac, at least not to make UI. Welp.
Some of the genuinely good suggestions are full game engines and my conclusion is that computers were a mistake
(I’ll collate the answers and thread them in here, because there are a lot of interesting suggestions. I am a bit dispirited that my nearly-decade-old rant about UI frameworks mostly still holds)
TIME TO ANALYZE THE ANSWERS.
Spoiler: it mostly all sucks.
Again, my criteria were:
- Multiplatform (at least Win and Mac);
- Not Qt because I hate it;
- Ideally not C/C++ due to overly twitchy footguns;
- Not bloated, it needs to RUN WELL;
- Ideally not Javascript, see above.
Spoiler: it mostly all sucks.
Again, my criteria were:
- Multiplatform (at least Win and Mac);
- Not Qt because I hate it;
- Ideally not C/C++ due to overly twitchy footguns;
- Not bloated, it needs to RUN WELL;
- Ideally not Javascript, see above.
First category: game engines.
We said “not bloated”, so NO, I am not going to use Godot or UE4 or whatever for a desktop app.
I’d also expect game UI toolkits to have failed hard at supporting OS accessibility features.
It is worrying that those can even be serious suggestions.
We said “not bloated”, so NO, I am not going to use Godot or UE4 or whatever for a desktop app.
I’d also expect game UI toolkits to have failed hard at supporting OS accessibility features.
It is worrying that those can even be serious suggestions.
Second category: C# things.
WinForms (Mono-supported) is Win32 bindings and looks like shit.
WPF is unsupported by Mono.
Xamarin.Forms’ Mac support seems anecdotal and it’s designed for mobile, so unlikely to yield good results.
.NET MAUI is way too early in dev to commit to.
WinForms (Mono-supported) is Win32 bindings and looks like shit.
WPF is unsupported by Mono.
Xamarin.Forms’ Mac support seems anecdotal and it’s designed for mobile, so unlikely to yield good results.
.NET MAUI is way too early in dev to commit to.
Avalonia (suggested by Mono as a WPF-on-Mac options) is also too early to commit to.
GTK# is Mono-supported but the listed examples look pretty awful and the Mac support looks terrible.
WinUI is Win-only. Microsoft, how many of those do you even have?
GTK# is Mono-supported but the listed examples look pretty awful and the Mac support looks terrible.
WinUI is Win-only. Microsoft, how many of those do you even have?
The “Uno Platform” is built ON TOP of WinUI and UWP and my head already hurts, sets off the bloat alarm bell too.
Sadly this means I can’t really see a good multiplatform C# option. I wish there was one.
Sadly this means I can’t really see a good multiplatform C# option. I wish there was one.
NEXT, we have the garbage bin.
In it, we toss Java / Swing without looking, Xojo and its custom language because yuck, and anything involving GTK because IT IS NOT OKAY TO SHIP MAC APPS LIKE THIS. SERIOUSLY.
In it, we toss Java / Swing without looking, Xojo and its custom language because yuck, and anything involving GTK because IT IS NOT OKAY TO SHIP MAC APPS LIKE THIS. SERIOUSLY.
Third: C++!
JUCE is audio-focused, FLTK and TCL/TK make me need an early eye test because nooooo.
dear imgui, I love you but I don’t want to make a full desktop app with this.
twui solves the IM problem in the exact opposite direction to my wishes, but looks neat!
JUCE is audio-focused, FLTK and TCL/TK make me need an early eye test because nooooo.
dear imgui, I love you but I don’t want to make a full desktop app with this.
twui solves the IM problem in the exact opposite direction to my wishes, but looks neat!
NanoGUI honestly looks like it’d be my go-to for a non-IM toy app! But for prod, “minimalistic” likely means sacrificed features like accessibility, so no.
Noesis is for in-game UI, you all are getting a rant about tools vs HUDs once I’m done.
Noesis is for in-game UI, you all are getting a rant about tools vs HUDs once I’m done.
CopperSpice is basically Qt at a glance and we have established that I’m a hater.
wxWidgets has the usual problem of a very dated look, I didn’t hate it when I used it a decade ago, but... it’s 2020 damnit.
Overall, no great C++ options, frankly.
wxWidgets has the usual problem of a very dated look, I didn’t hate it when I used it a decade ago, but... it’s 2020 damnit.
Overall, no great C++ options, frankly.
Fourth: Rust, which I Probably Should Learn Anyway.
I got linked this great overview of the state of things. TLDR: for mature solutions, see C++ category and cry.
https://www.areweguiyet.com
I got linked this great overview of the state of things. TLDR: for mature solutions, see C++ category and cry.
https://www.areweguiyet.com
Sidenote: PLEASE PUT SOME GODDAMN SCREENSHOTS ON YOUR UI FRAMEWORK PAGES OH MY GOD.
That leaves us with Web Hell, which will need its own deep-dive. Will be back later to grump about that.
In conclusion: everything sucks, computers were a mistake, how is anyone shipping software in this day and age.
In conclusion: everything sucks, computers were a mistake, how is anyone shipping software in this day and age.
For the record:
- Name-searching your product is Not Exactly Cool, nor generally good marketing;
- Sure, it means my app would be built on top of it, close enough in practice;
- Do you seriously think I have time to test-drive a dozen of possible solutions? https://twitter.com/unoplatform/status/1304463338349486080
- Name-searching your product is Not Exactly Cool, nor generally good marketing;
- Sure, it means my app would be built on top of it, close enough in practice;
- Do you seriously think I have time to test-drive a dozen of possible solutions? https://twitter.com/unoplatform/status/1304463338349486080
Web stuff, browsers edition:
Ultralight looks sweet but the somewhat thin doc has me concerned. Also, since it’s lightweight, usual question about accessibility features.
Similar worries with webview.
Which leaves Electron itself? Bleh.
Ultralight looks sweet but the somewhat thin doc has me concerned. Also, since it’s lightweight, usual question about accessibility features.
Similar worries with webview.
Which leaves Electron itself? Bleh.
And two Hip Things are Flutter and React, but:
- desktop support looks like an afterthought, which will affect API design, styling, and features (typically, docking).
- not a fan of using Google / Facebook tech, obviously.
- desktop support looks like an afterthought, which will affect API design, styling, and features (typically, docking).
- not a fan of using Google / Facebook tech, obviously.
At this point my best options seem to be:
- Classic Electron But Try To Make It Not Suck;
- Core logic + separate UIs per-platform: likely too high a maintenance burden;
- Get over my Qt hate? But that’s C++ i.e. footgun central.
BLEH.
- Classic Electron But Try To Make It Not Suck;
- Core logic + separate UIs per-platform: likely too high a maintenance burden;
- Get over my Qt hate? But that’s C++ i.e. footgun central.
BLEH.
Oh, as to why I keep bringing up accessibility? Besides the obvious - it’s the right thing to do, it’s important - the Potential Project is cross-stitch design software that doesn’t suck.
Do you have ANY idea how many stitchers have disabilities and need accessibility features?
Do you have ANY idea how many stitchers have disabilities and need accessibility features?
This is why making your commercial apps with minimalistic IM libraries is not exactly a silver bullet.
Yeah, that’s the thing I might end up going with as well because it’s the mediocre compromise that doesn’t super-honk on some axis of tragedy (bloat, sheer labor, sadness). https://twitter.com/icculus/status/1304524155430350851