With Electron, for example, a stripped down Chromium is shipped. So what does the web view rendering with this package?
And for most apps using browser based rendering won't be an issue. People often underestimate how optimized mondern browsers really are. And because Chromium is not shipped the bundle size is managable.
Not wanting to use JS on the backend I tried both Tauri and Wails and found the simplicity of Go to just work perfectly for my use-cases
Tauri and Wails just use the one available in the OS (UIWebKit in macos, WebView2 in windows), it is also why they load so fast, you probably already have the heavy part loaded in memory. And, of course, brings a tiny statically linked binary instead of running on top of a massive runtime.
Hmm, the Go GC is really quite capable, so I wonder what kind of pathological load it was being presented with. Even then, when the GC "fails" it means elevated CPU load from collection.
The main thing I can think of would be the application "leaking" by having unintentional references (or worse, actually leaking through cgo bindings), or trashing the allocator to cause temporary spikes in between cleanups.
However, while I don't think Go was actually to blame here, I would never use native UI bindings to a language that isn't 1:1 compatible with the original design and memory management principles, as such bindings get disproportionaly large and complex. It just sets you up for a bad time.
Which bindings did you use ?
This sounds to me like leaking resources from the binding. Which binding did you use and how did you manage it's lifetime?
Recently for a specific purpose I was reviewing options including Tauri, various WebView bindings, and in the end had to admit that Electron is probably the best approach in terms of feature set, development speed, etc.
Why is that hidden behind a click and two walls of text?
0 - https://fyne.io
Other discussions: - https://news.ycombinator.com/item?id=31785556 - https://news.ycombinator.com/item?id=19478079 - https://news.ycombinator.com/item?id=22291150
Just my 2 cents ;)
Exoristos•2mo ago
conceptme•2mo ago
raffraffraff•2mo ago
kosolam•2mo ago
robert_dipaolo•2mo ago
Kelteseth•2mo ago
1. The state of C++ is not great. Few developers, C++ footguns, complicated build systems, and generally slow progress, see my https://arewemodulesyet.org/
2. How Qt presents and licenses itself. Either you go LGPL or you have to pay big money for a commercial license, which will then infect all other apps as well. For example, when you have two Qt apps that talk to each other you must license _both_ commercially.
3. The split of Widgets and QML makes the ecosystem fragmented, because Widgets will never die. Even the Qt devs themselves are split about this. You can see this when example code for a new feature uses Widgets. QtCreator is also a nice example, where they reverted some new QML code quite a while ago and have not substantially added any new QML code since then.
4. Tooling: We use QML for everything and the tooling is not great. The language server is still super flaky and breaks, and developer tooling like the Chrome Dev Tools is virtually nonexistent.
5. Packaging is still also not great but has gotten better in the last few versions where Qt creates a deployment cmake script for you, but you still need logic for your own (vcpkg) packages.
rubymamis•2mo ago
adastra22•2mo ago
mono442•2mo ago
lloydatkinson•2mo ago
GTK and KDE controls are native to GTK and KDE.
jdiff•2mo ago
Exoristos•2mo ago
jdiff•2mo ago
adastra22•2mo ago
prmoustache•2mo ago
brulard•2mo ago
miki123211•2mo ago
On Windows, it's not even obvious what native is any more, even Microsoft just uses Web views. Mac is a bit better, but there are still 4 UI libraries to choose from (AppKit, UIKit through Catalyst, native SwiftUI and Catalyst SwiftUI).
I'm personally a fan of AppKit and Win32, but those are "dated" apparently.
gen2brain•2mo ago
https://github.com/gen2brain/iup-go
dardeaup•2mo ago
gen2brain•2mo ago
dardeaup•2mo ago
euroderf•2mo ago
adastra22•2mo ago
jasode•2mo ago
For Windows, "native" would be the classic Win32 UI "common control" elements from "Comctl32.dll"[0] that is directly used by older GUI frameworks such as Windows Forms. Those map to classic Win32 API CreateWindow(L"BUTTON", ...). In contrast, the newer frameworks of WPF and Xamarin Forms and Qt Quick "paints controls on a canvas" which are not "native" and makes every app UI look different instead of standardized "look & feel" of common controls.
But others include custom-canvas painting UI objects as "native" -- as long as it's not Electron.
[0] https://learn.microsoft.com/en-us/windows/win32/controls/com...
adastra22•2mo ago
React Native and .NET MAUI/Xamarin.Forms use real native UI widgets - WinUI on Windows and AppKit on macOS.
foresto•2mo ago
This is harder to get right than one might think; small differences in text rendering look very much alien to me, and user input handling that isn't exactly the same as the platform's native conventions will make me stumble every time I perform common operations.
In my experience, Qt does an excellent job with this. It's not technically native (except on KDE and other Qt-based desktops), but it looks and feels right, or so close that I find it comfortable and well integrated with the rest of each platform I've tried. I haven't found any other cross-platform toolkit to match Qt in this area, so that's what I use for now.
Some day, I hope we'll see an alternative that accomplishes this at least as well as Qt, while being more flexible to license, easier to bind to other languages, and better at memory safety. (It's written in C++.) There seems to be renewed interest in GUI toolkit development lately, perhaps fueled by the excitement for newer languages like Zig and Rust, so perhaps I'll get my wish.
anthk•2mo ago
MaxBarraclough•2mo ago
As far as I can tell, Qt Quick doesn't have anything like the same set of polished widgets that integrate nicely into the target platform. It's been this way for years, they just don't seem interested in implementing them.
https://doc.qt.io/qt-6/qtquickcontrols-examples.html
pjmlp•2mo ago
Web is only native on ChromeOS and WebOS, because they don't have anything else as UI technology.
lloydatkinson•2mo ago
I can also think of QT and GTK for other languages too.
anthk•2mo ago
breve•2mo ago
https://avaloniaui.net/
https://platform.uno/
Ray20•2mo ago
dualogy•2mo ago
divan•2mo ago
mock-possum•2mo ago
Ya gotta be practical.
adastra22•2mo ago
gen2brain•2mo ago
pjmlp•2mo ago
Doing native UIs is only a matter of actually wanting to learn how to do it.
Exoristos•2mo ago
foresto•2mo ago
https://github.com/mappu/miqt
irq-1•2mo ago
diath•2mo ago
throwup238•2mo ago
Coming to desktop app development from the web, I’ve got most of the same conveniences I’m used to like GammaRay as the inspector. The only real difference is I’m willing to wade through cmake and linking errors.
Even QWidgets is still super fast to develop with if you’re using PySide (although hot reload is a bit more difficult to implement and distribution becomes the nightmare).
diath•2mo ago
rubymamis•2mo ago
[1] https://github.com/qt/qtdeclarative
foresto•2mo ago
Just as a book will be read many more times than it is written, the burdens associated with a program's architecture will be borne many more times (collectively) by its users than by its developer. This is why I avoid web-based tech when building applications.
Relatedly, I'm glad to see that sustainable computing has begun showing up in global discourse.
PaulKeeble•2mo ago
jdiff•2mo ago
At least last I looked into it.
pjmlp•2mo ago