Remix.run Logo
giancarlostoro 3 days ago

Because nobody is investing in native UI development. Electron is proof that if there were a simple to use GUI stack that companies would adopt it.

AlienRobot 2 days ago | parent | next [-]

To me the worst case is trying to develop some small utility like a tool to search in files using regex. Because if you are developing something large, the amount of time you spend dealing with packaging, distribution, etc., is small and you don't care about file sizes.

But if I want to, say, develop the app for Windows. That is easy. You get a tiny binary to just opens a form and runs with a double click. No install necessary.

The same thing on Linux? Impossible. There is no guarantee the machine has any version of GTK or Qt installed at all, so to be self-contained you need to ship the entire OS. Now your file size is huge. I can't use Python, because now Windows users need to have Python or I have to ship an interpreter.

The only plausible alternative is something like Java. Now you have a single .jar file that runs on any system. But then Oracle changed the license, and JavaFX is no longer part of Java (Swing still is).

Honestly, I just want to display a menubar with keyboard shortcuts. Why can't there be a menubar VM or something that gives me access to a menubar on all OS's without having to deal with all of this. We are already shipping the entire browser with Electron. That is stupid. The way it should work is users install a something like Flash but for desktop apps and every app just uses that platform.

It's probably easier to ship a DOS game than a desktop app because everyone who wants to run a DOS game will just have a DOS emulator installed.

cmacleod4 2 days ago | parent | next [-]

"worst case is trying to develop some small utility like a tool to search in files using regex" - you mean something like: https://wiki.tcl-lang.org/page/ReacTcl+example%3A+Grv ?

This will run on Windows, Linux, MacOS, and Tcl's starkit/starpack system makes it easy to generate a single executable file for each OS that can just be copied over and run without any installation needed.

einpoklum 2 days ago | parent | prev | next [-]

> There is no guarantee the machine has any version of GTK or Qt installed at all, so to be self-contained

So don't be self-contained. I mean, you depend on an X server or Wayland, right? So why not depend on GTK or Qt being available?

(Of course, it _is_ tricky to be able to depend on any of several versions of these, but still.)

AlienRobot 2 days ago | parent [-]

What I mean is that on Windows you can just ship an 100kb .exe and forget about it and it's still going to work 20 years later.

On Linux that doesn't happen. First of all you HAVE to ship the source code if you want it to keep working on every machine because people need to compile it on their machine for it to work, so you're practically forced to open source your desktop app. I know the notion of having a closed source app on Linux sounds weird, but it's more weird that this isn't an option as a side-effect of the how the whole system is designed. Second of all, even if you do ship the source code, you're going to be forced to maintain it. If you made an app in GTK 1 (which looks beautiful, by the way, compared to modern GTK), people won't be able to just install it because GTK 1 is so old that it's no longer in the repositories.

An app made in Java 8 runs in the modern VM. An app made for Windows 95 still runs on modern Windows.

It's only on Linux that I feel like the developer is pressured to open source it and make it the user's problem because the system won't provide support.

okanat 2 days ago | parent | next [-]

I'm not defending this but there was (or has been) enough political motivation and intentionality in GNU/Linux systems to make binary compatibility a hassle. People actually made decisions against backwards compatible APIs, intending to cause issues and forcing open-sourcing.

Binary compatibility means closed source has a chance to grow in an ecosystem. It requires "responsible" developers to put more effort into designing APIs and keeping them alive. It adds complexity that requires a more stable set of long-term developers; in contrast, the constant churn in FOSS requires lower barriers for contributions. With stable APIs/ABIs you have to live with decade-long mistakes. You cannot "just fix it" in a next major bump.

GoblinSlayer 2 days ago | parent [-]

>People actually made decisions against backwards compatible APIs, intending to cause issues and forcing open-sourcing.

You mean openssl? That said, if we can have /dev/tcp, why we can't have /dev/ssl?

skydhash 2 days ago | parent | prev | next [-]

> First of all you HAVE to ship the source code if you want it to keep working on every machine because people need to compile it on their machine for it to work, so you're practically forced to open source your desktop app. I know the notion of having a closed source app on Linux sounds weird, but it's more weird that this isn't an option as a side-effect of the how the whole system is designed.

That's so very not true.

Most Linux distros allows for custom repositories. So you can just setup the build infrastructure on your side and then have the users include your repos on their side. No need to open source code and users have painless update notifications.

> It's only on Linux that I feel like the developer is pressured to open source it and make it the user's problem because the system won't provide support.

Lots of users have never seen the source code of their software, they just get the binary package. The pressure you're talking about is imaginary.

Pay08 2 days ago | parent | prev [-]

This is downright misinformation. There are no 100kb Windows programs that work for 20 years. Every single program on Windows ships half of the system libraries again, just for use by itself. Microsoft couldn't be bothered to version their libc at the beginning ffs.

WINE is often somewhat jokingly called a more stable platform for Windows programs than Windows is but there's truth there.

GoblinSlayer 2 days ago | parent [-]

I have 161kb program from 1992 and it works. I suspect it doesn't use libc. Well, on windows there's nothing useful in libc anyway.

polski-g 2 days ago | parent | prev [-]

I want to say you could statically link a GUI application, but I'm pretty sure libpthread doesn't cooperate on static linking.

badc0ffee 2 days ago | parent [-]

libpthread is fine with static linking. Where you run into issues is libraries like libresolv that use configuration files in a specific path.

bbkane 2 days ago | parent | prev | next [-]

Contrary to what the article says ("but Google gave up on the project before a real product was launched"), I think Flutter work continues and adoption is increasing

serial_dev 2 days ago | parent | next [-]

The article (as I read it) says that Google gave up on the new operating system (where Flutter would have been the default UI toolkit).

I’m not sure if Google actually already gave up on Fuchsia, I’d be surprised if the work actually stopped, but it’s clear now that it will not be a panacea and if it will ever get released and gets some traction, it’s still like a decade away from becoming a major OS.

mghackerlady 2 days ago | parent [-]

They laid off most of the people on the Fuchsia team so it isn't getting as much work, but Fuchsia is used on their nest stuff iirc

airstrike 2 days ago | parent | prev | next [-]

I don't really want Dart tbh

danpalmer 2 days ago | parent [-]

I dislike Dart, but it does work really well for Flutter. I think if you treat it as a Flutter DSL it's easier to put up with.

giancarlostoro 2 days ago | parent | prev | next [-]

One of my former coworkers / dev friend is primarly a Flutter dev, and he's about to give up on it because finding Flutter jobs has become a pain.

2 days ago | parent | prev [-]
[deleted]
tootie 2 days ago | parent | prev | next [-]

Zed did. I know it has it's fans, but it doesn't seem to be generating a stampede of adoption despite what looks like a monumental effort to build a GUI system from the ground up.

landr0id 2 days ago | parent | next [-]

Their GUI system (GPUI) is not very mature for use outside of Zed. GPUI is basically a UI framework in the truest sense: a framework for building UI... frameworks/components. It has core functionality for async execution, an ECS for grabbing shared resources, and a div.

It's basically like building a website with div and basic CSS.

gpui-component exists: https://github.com/longbridge/gpui-component

Up until sometime late 2025 GPUI wasn't even on crates.io, and it seems like the GPUI-component ecosystem still promotes using git deps. It was also in "read the code for docs" state for a very long time

It's been a while since I've used it, but there were weird things missing too like the Scollbar was located in Zed's UI component crates instead of core GPUI. Arbitrary text selection also is not possible, which is something I really value about egui.

jbvlkt 2 days ago | parent | prev [-]

What I do not like on Zed or electron GUIs is lack of customization. Older IDEs using sdks like Swing, JWT, QT, GTK etc. allowed user to design its user interface using drag and drop. ie compare older IDEs like eclipse or idea and try to create layout which fills screen with information important for you. And then try to do the same with vscode or zed. I like functionality and speed of zed but UI customization is too limited for me. It might be design choice or sdk limit I am not sure.

thayne 2 days ago | parent | prev | next [-]

I don't think it is lack of investment necessarily, so much as not building the right thing.

What we need is a framework that is easy to use, cross platform, open source, and ideally can be used from your programming language of choice.

einpoklum 2 days ago | parent | next [-]

Are the available FOSS cross-platform frameworks really not that good?

There's at least Qt, GTK, umm, and, I guess Juce and wxWindows, right? Oh, I see there are more:

https://en.wikipedia.org/wiki/List_of_platform-independent_G...

Can you explain what's deficient about the first two I mentioned?

MrDOS 2 days ago | parent | next [-]

> Qt

Arcane build system. I mean, I guess it technically supports CMake these days, but I have never been able to get anyone else's Qt project to build without much gnashing of teeth.

Emulated native widgets try for pixel-perfect, but tend to feel wrong somehow.

> Gtk

Outside of a Linux/Gtk native environment, Gtk applications are awful. Take GIMP on macOS, for example: it's had window focus issues (export dialog getting lost behind the main application window) literally ever since Gtk on macOS dropped the XQuartz dependence. And that's the flagship application for the toolkit.

Pay08 2 days ago | parent | next [-]

CMake support in Qt is perfectly fine nowadays. There are some (optional) custom commands you can use, but generally it's just plain CMake.

2 days ago | parent | prev | next [-]
[deleted]
einpoklum 2 days ago | parent | prev [-]

So, your critique of Gtk sounds convincing, but about Qt, you seem to be admitting they're offering a less-horrible way to build than how things used to be.

I looked at this: https://doc.qt.io/qt-6/cmake-get-started.html ... and I'll admit they seem to be hiding some nasty stuff under the hood. But it still seems workable. I guess the devil is in the details?

hombre_fatal 2 days ago | parent | prev [-]

GTK 3 hello world is 150-200mb. They really messed up since GTK 2 was 30mb (like macOS AppKit).

WhyNotHugo 2 days ago | parent [-]

GIMP itself is 62MB on my host, I'm not sure what kind of hello world you're building that's 3x that size.

hombre_fatal a day ago | parent | next [-]

Dunno, try it yourself. I wrote the hello world with C (12 lines?) and launched it on NixOS in Wayland (sway or niri). Maybe non-Wayland does better?

Granted, not the best measure of memory usage. But the GTK 2 version was 30mb.

einpoklum 2 days ago | parent | prev [-]

Maybe GP means on non-Linux systems? When you have to "vendor" a large number of libraries?

skydhash 2 days ago | parent | prev | next [-]

> cross platform

That's one word that should never been used in an design meeting. None of the GUI I've used has managed to do this right. Even Emacs and Firefox. The platform are totally different (and in the case of Linux/Unix, there's a lot of different HIG competing). So trying to be cross platform is a good illustration of the lesson in https://xkcd.com/927/

The best bet should be a core with the domain with a UI shell. And then you swap the shell according to the platform.

Gigachad 2 days ago | parent | next [-]

I want my applications to look consistent across platforms. Why would I want discord for example to look entirely different between MacOS and Linux? With the current state of things, once I use the app anywhere, I'll know where everything is on any platform.

skydhash 2 days ago | parent [-]

Take a good look around and check how often people do really change computer platform. And you already have so many things that are different that the "same look" is just an excuse. Gnome, KDE, macOS, Windows does not have the same UX in their file explorer which is a basic utility that everyone has to use. Same with connecting to a WiFi and creating a new user account.

So why would you want Discord to be consistent, when you're mostly using the same desktop (or switch between at most two) for hours.

The thing is when HIG were followed instead of everyone trying to create their "brand", everyone knows where the common actions were. You learned the platform and then can use any app. With the new trend, you would only have one computer, but any new app is a new puzzle to figure out.

Gigachad 2 days ago | parent [-]

I don't really have any issues working out how to use modern electron apps, they all follow very simple UX patterns, I find them much easier to use than the average native wxWidgets/qt app. Simple, consistent UI is less about the color scheme and border radius being consistent and about things being simple and well laid out on a higher level.

Two apps can have different CSS while being easy to understand because the core flows and ideas are the same. While many older native apps feel like junk draw UI with crap thrown everywhere and weird app specific quirks and patterns. Even if it all does use native inputs and windows.

GoblinSlayer 2 days ago | parent [-]

Electron apps use the usual web 2.0 forced keyboard focus antipattern which breaks page up and page down scrolling, so they are difficult to use. Also blurry text rendering.

thayne 2 days ago | parent | prev | next [-]

> The best bet should be a core with the domain with a UI shell. And then you swap the shell according to the platform.

I've rarely seen that turn out very well. Typically it works ok on whatever desktop main developers use, and not so much on the others. That means using multiple frameworks, witht their own idioms and quirks and having to repeat a lot of work. Unless your UI is very simple it is pretty expensive to maintain multiple separate versions of it.

skydhash 2 days ago | parent [-]

The best way I’ve seen this implemented is having the domain be a library or a protocol/server. For a lot of saas, we already have people writing the mobile versions and the web version..

Yes. It’s more work than dumping Electron on users. Quality often is.

mghackerlady 2 days ago | parent | prev [-]

It's not even that cross platform is necessarily bad, it's that we have so many cross platform toolkits and they compete with native ones.

I think we'd all be better off if we just declared qt the standard gui library and rid ourselves of the chaos we find ourselves in

victorio 2 days ago | parent | prev [-]

You are not going to believe this... (joking)

gray_-_wolf 2 days ago | parent | prev [-]

I mean, both wxWidgets and Qt are fine, no? GTK 2 and 3 as well (4+ is... meh). There are plenty applications using one of these (often via python bindings).

I think it is more of a staffing problem. Plenty of people know web development, so you want to use those people for desktop as well. Having desktop be JS (electron) helps a lot with that.

dpe82 2 days ago | parent [-]

A year ago I would have agreed with you, but now anyone can build a perfectly reasonable native app.

maccard 2 days ago | parent [-]

What is native on Linux?

Gigachad 2 days ago | parent | next [-]

What is native on Windows too. These days the term native app is so confused it's hard to come up with a definition that doesn't include electron.

maccard 2 days ago | parent [-]

There’s a few options on windows all of which are native. WPF, Winforms and WinUI are all “native”.

> These days the term native app is so confused it's hard to come up with a definition that doesn't include electron.

Electron is _not_ native.

mghackerlady 2 days ago | parent | prev | next [-]

athena[0], take it or leave it

[0]https://en.wikipedia.org/wiki/X_Athena_Widgets

dpe82 2 days ago | parent | prev [-]

TUIs, apparently. :)