Hacker News
points by cheschire 18 hours ago | 0 comments
I'm pretty sure this was known since the early days of Electron. It was even one of the chief complaints about VS Code when it was first launched.

Electron's value prop has always been about having one team producing one app that is supported on multiple platforms with minimal additional effort.

This article does nothing to address that.

[–] ksec 5 hours ago
>It was even one of the chief complaints about VS Code when it was first launched.

That was absolutely not the case at all. At least not on HN or twitter. It was for Chief Complaints for Atom. When VS Code first launched everyone was suggesting how much faster it was compared to Atom. And how a properly tuned Electron Apps could be fast. And Microsoft promised it will get even faster that makes everyone excited.

The only few of us who were complaining was how could everyone judge this to be fast when we have Sublime. And that was even before Sublime had GPU rendering.

[–] rendaw 28 minutes ago
I think you may be right, but I think that actually enforces GP's point: if discussion was about how "a properly tuned electron could be fast", that implies an unstated general belief that electron is slow. In other words, since the time vs code was launched there was indeed a belief that electron was slow (compared to native apps).
[–] ThunderSizzle 1 hour ago
I compared NP++ to VS Code at the time. VS Code was nice to use, but it was slower. It was faster than Visual Studio, but that's because VS Code without extensions didn't have language support, etc like VS did.

I find it odd you see otherwise.

And VS 2026 is faster than VS Code these days, now that they spent time optimizing it.

[–] fy20 50 minutes ago
I was using Vim at the time, so didn't get into those discussions. The thing that hurt me was Spotify. They had some other HTMLish desktop app before Electron that was just as bad for memory.
[–] SideQuark 3 hours ago
Googling if it was a common complaint around launch time shows plenty of threads on it across all the usual sites at that time.
[–] eddythompson80 3 hours ago
I think OP is both right, and there was people still complaining about it. Atom was seriously slow. Everyone said you couldn’t build a fast text editor that could compare to native ones. VS Code came and it was significantly faster. Atom was slow to the point of not being usable to some, while VS Code was perfectly usable. The people wanting vim or Sublime performance were still upset and wrote about it, but vscode was perfectly usable and fast enough for the majority of people. It was indeed held as an example of how to make a performant electron app. Still an electron app, but not absolute slog. Tbh, if you disable all extensions in vscode, it’s still fairly fast, and doesn’t even take that much memory. It’s not as usable without extensions though.
[–] accurrent 16 hours ago
A huge pain of desktop development is managing dependencies particularly if you are coming from C++/Native code. Imagine you wanted to make a simple app in the 2010s that accesses the webcam for instance: If you use chrome you got the full html5 runtime, whereas with other tools you'd need bespoke libraries which your end user may not have.

The only way to ship the same code between linux, macOS, and Windows would have been to either use something like Qt or the JVM back in the 2010s. The JVM desktop stuff was super ugly and Java itself had become notorious (also if you wanted anything remotely interesting like webcam/microphone or multimedia access you'd still have to ship dynamic libraries). Qt required special packaging skills to ship to the end user especially if third party libraries were involved. Electron killed that by bundling chrome (and chrome has a huge api surface).

Today, I would argue the package management situation for a language like rust is a lot different. You dont have to cobble different DLLs together, you can just statically compile dependencies and cargo/rust do a pretty good job of making sure it's bundled with your app. Other languages also now have similarly useful tools.

[–] 72deluxe 15 hours ago
But then the C++ libraries you mentioned also had the ability to statically link into a binary, which means you could statically link the webcam access in, in your example. So I don't see the advantage you're arguing for?
[–] cogman10 15 hours ago
It comes down to package distribution.

Chrome had already solved the hard problem of "how do we support webcams on linux, windows, and mac" and you as the dev just needed to use the Javascript webcam api. ( https://developer.mozilla.org/en-US/docs/Web/API/MediaDevice... )

In C++ land, you are ultimately going to either need to cook up your own webcam library or look for a 3rd party (which, in 2010, likely didn't exist) to provide it.

Today, there are a few easy to discover rust crates which provide cross platform webcam apis. But further, rust does cross platform better than C/C++ IMO. It's really easy to change how code is compiled based on the target. That was all well thought out because rust was supposed to be a language for browsers.

[–] bluGill 5 hours ago
A cross platform webcam library isn't that hard to build at C++. I mean, it's tedious, and having to support multiple different operating systems makes it harder, so it certainly is going to cost a small pile of money, but this is not hard. The pile of money needed won't be all that large. Mind you, I prefer to use something that's off the shelf rather than writing my own, but it would not be hard to write my own.

The hard part of all webcam libraries is all the different webcams running all their different proprietary protocols.

[–] MindSpunk 13 minutes ago
Write the code or build the code? That's always the problem with C++ libraries.

It's not that difficult to write cross platform C++ code. Consuming the dependency is always painful. What build system does it use? What compilers does it support? How do you get the code? There is 0 standardization for these things.

C++ code isn't always that portable either. Old code in a new compiler is very likely to break on warnings, especially if the old code made the high quality decision to hard code -Werror in their build system.

From personal experience Rust as a package and ecosystem is far more portable than C++.

[–] pjmlp 9 hours ago
Qt is easily obtainable via vcpkg or conan.
[–] edoceo 9 hours ago
Was that true in 2012?
[–] pjmlp 9 hours ago
Depends, it was easily obtainable via OS package managers, and installers in 2016.

However that has been true since 2016, and here we are, 10 years later.

[–] justincormack 8 hours ago
For Linux, but not for Windows and Mac
[–] Krutonium 9 hours ago
Very yes.
[–] bluGill 5 hours ago
Neither existed in 2012, so of course not. On the other hand, QT has always been really easy to download from QT. I don't remember who owned QT in 2012. They've changed hands a couple times over the years, but in 2012 I was downloading QT from whoever on them. QT was large, so you needed a decent sized computer to build it, but in 2012 this was not a big deal.

People get too hung up on package managers. When you're building your own proprietary you don't really need a package manager, you just need a central place to download the tarballs from. Or you could do a monorepo and just build everything locally - in 2012, that means you start your build before you leave Friday afternoon, and when you come back Monday, everything's built.

[–] jpc0 12 minutes ago
It is 2026 and regardless it has been quite a while that cmake fetch content had been usable.

The only reason why a cross platform well supported C++ package/module isn't available is because nobody has bothered to build it.

If it really is something that bugs you then be the one to do it, throw your clanker of choice at it and integrate it into a project you run in production.

"Chromium ahips with it" isn't a valid excuse these days, that is likely an hour or two away with a modern LLM, building and packaging electron is more work.

[–] jasomill 12 hours ago
Dynamic vs static linking is mostly a red herring for desktop GUI application development unless you want to integrate into something like Linux distro package managers, as dynamic libraries on Mac and Windows can be self-contained within the application bundle/directory with no disadvantage beyond marginally longer startup time, and you can do similar things with Flatpak and friends on Linux.

The real difference is that Rust provides a package repository with a unified build system that's as simple to use as NPM or NuGet.

vcpkg which is similar exists today, but it didn't in 2015 when Discord started, still isn't anywhere near as comprehensive as package repositories for languages where package management is part of the standard toolchain, and the underlying build systems are far messier under the hood.

It can also be helpful in development to use libraries built from source as part of the application's build process, at least as an easily-accessible option, which wasn't common practice in most C/C++ ecosystems historically where different libraries used different build systems and if you wanted to integrate them into something like a Visual Studio solution for easy reference to source code during development and debugging you were often on your own.

[–] vrighter 3 hours ago
you can do that easily on linux too
[–] cosmotic 13 hours ago
Java desktop was only ugly if you chose for it to be. It was pretty minimal effort to get native look and feel. Nothing built in electron looks native. If we're accepting custom interface using electron, that was doable with Java too.
[–] NetMageSCW 6 hours ago
Why is it no one ever seems to do it then? I have never seen a Java app look or act native on Windows.
[–] dingaling911 3 hours ago
Eclipse
[–] cyberax 23 minutes ago
It used SWT, which was a thin wrapper over native controls.
[–] sdthjbvuiiijbb 3 hours ago
I haven't used Eclipse in a decade, so maybe it's changed, but back then it was very much a Java UI, not a native feeling one.
[–] dingaling911 2 hours ago
I remember the Java UI, but at some point they switched to a version of Swing that made it look more native, at least on Linux.
[–] threetonesun 9 hours ago
JetBrains IDEs arguably look/behave better than VSCode as far as a native app goes. I wouldn't say either look great on MacOS but a truly "native feeling" Mac app is usually quite different than a Linux/Windows equivalent.
[–] pjmlp 9 hours ago
Long time ago, Apple had a proper OS X Swing L&F, when you could do Cocoa in Java, and there was still some uncertainty if Objective-C would be embraced by Mac OS development community.
[–] johnny22 3 hours ago
I much prefer vscode to intellij
[–] saagarjha 1 hour ago
Discord ships plenty of native code, though. Actually most popular Electron apps do
[–] pjmlp 10 hours ago
Usually it is hard for those coming from scripting languages.

Strangely enough we managed to write portable code across platforms during the last century, and there were more than only three major desktop OSes.

[–] vivaldi_bt 6 hours ago
I never really understand this attitude. It isn't really hard it took one or two evenings to understand how native libraries work and you close this problem forever.
[–] skydhash 7 hours ago
> Strangely enough we managed to write portable code across platforms during the last century,

Yep, that argument always seems strange too me. Do people fear that much to design their own interface and hook to each platform ecosystem? You look at something like the BSD which runs brought one single kernel concept and various subsystems across a variety of hardware. And somethine like libao[0], which provides a common interface to various sound system.

Whatever the app, if you care enough, you can abstract the core features away from the GUI and other various dependencies.

[0]: https://xiph.org/ao/

[–] Barrin92 3 hours ago
>Qt required special packaging skills to ship to the end user especially if third party libraries were involved

How outrageous to demand that a software developer possesses the 'special skills' to ship a Qt application. It's not surprising that people think AI is killing programmers when this is the level the average 'programmer' has been operating at for 15+ years.

Imagine going to a chef and he tells you he can only warm up microwave lasagna because cooking the steak correctly requires special skills. The special skills are your job

[–] Grombobulous 16 hours ago
The article at least indirectly addresses that.

At the time Electron came out, there weren’t as many cross-platform UI frameworks available that they could have gone with.

You can see this with the comparison chart. GPUI effectively replaced Electron so the desktop app UI works across platforms. React Native is replaced with WebAssembly so that Rust can be the primary language across all platforms including mobile.

It seems like the new situation for Discord is rather elegant, and that none of this would have been available when it first came out.

[–] jenadine 15 hours ago
GPUI works well for Zed, but it's built for Zed's needs only. There is no official crates.io udates. Breaking changes land as Zed needs them, and outside PRs often get declined causing a mess of several forks.
[–] braiamp 6 hours ago
GPUI/Zed devs are trying to contact discord to see what can be improved:

> Hi Stanislav, I'm one of the core maintainers for GPUI at Zed, if anyone at discord would like to talk to us about improvements to the framework or to upstream your customizations, please get in touch! My DMs should be open :)

https://twitter.com/radgendervibes/status/211810701651020193...

[–] sbarre 6 hours ago
Herdr's new native app uses GPUI for it's mod framework, so hopefully as more apps adopt it, a better community/package/release process builds around it.
[–] pjmlp 10 hours ago
I love when folks complain about C++ in stuff like Qt, and then write C++ addons on Electron apps, to make them actually get an usable performance.
[–] AlienRobot 16 hours ago
Why https://gpui.rs/ doesn't have a single screenshot of how it actually looks?

The first thing anyone would want to know when choosing a GUI framework is how it looks by default. Every major GUI toolkit has screenshots on their websites.

This happens so often it makes me wonder if people just don't know how to take a screenshot and put it in a webpage with <img>.

[–] rstat1 7 hours ago
Click either of the 2 links at the top right of the page, and you get screenshots of GPUI apps.
[–] Grombobulous 16 hours ago
Probably because it's not meant to be like Bootstrap.js where everyone's UI looks identical?
[–] small_scombrus 16 hours ago
Even still, some screenshots of here's something we made earlier are always nice to see what's possible
[–] AlienRobot 16 hours ago
Even imgui has screnshots.
[–] NetMageSCW 6 hours ago
The article explains that the same Rust app runs on Windows, Linux and Mac just like the Zed editor where the GUI library originated, and with wasm, also runs on iOS and Android. What else do you need?
[–] Pxtl 6 hours ago
Oh, does rust have a good native cross platform ui framework?
[–] bluGill 5 hours ago
I'm not sure if a cross-platform UI framework is a good idea or not. I've been building with QT for 15 or 20 years now, and I'm still not sure if cross-platform framework is a better idea than just writing a different UI as a thin layer on top of your business logic for each platform.

Certainly, if you write a native UI for every platform, you're going to need a few more people because you have to have someone who understands each platform. However, with a little bit of work you can define some good interfaces to that UI and most of your needs are going to be things that are not the UI framework but they're logic that can be cross-platform.

What cross-platform frameworks give you more than the UI is all the other pieces you need. I've written a bunch of applications in Qt Core with no UI at all because it's so convenient to have those Qt abstractions.

[–] RunSet 17 hours ago
> Electron's value prop

"Now you can have the cross-platform compatibility of a single-page application just by bundling Chrome."

[–] zdragnar 16 hours ago
It's worth remembering that electron was first released back in 2016 (formerly atom shell fro 2013) so Internet Explorer was still very much a thing.

Not a great justification, but it made a bit more sense then.

[–] 72deluxe 15 hours ago
That's like saying it would make sense to make Internet Explorer work on all platforms. It doesn't make sense.

The solution is to use user interface toolkits that are available on each platform. For example, wxWidgets or Qt or appropriate bindings to them if you can't be bothered to write UI code for each platform you're targeting.

[–] toast0 10 hours ago
> That's like saying it would make sense to make Internet Explorer work on all platforms. It doesn't make sense.

Why not? Microsoft released IE for win16, win32, wince, macos system 7 through 9, macos X, Solaris, HP-UX. If it ran on all those platforms, Microsoft probably could have supported it on any platform that had the capability of running graphical web browsers.

[–] IshKebab 17 hours ago
> The article does nothing to address that.

I dunno if you've been living under an enormous rock, but they used AI to make this.

[–] llm_nerd 6 hours ago
> This article does nothing to address that.

This has been addressed many times now, and the article doesn't really need to re-address it.

Coding LLMs make managing cross-platform native apps significantly easier than it was in the past. The cost-reward analysis, where Electron and simile apps made sense because then you don't need to have an iOS expert, a macOS expert, etc, and having a bloated monstrosity of an app is an acceptable compromise, is simply no longer true.

I know there is some subset of HN that still thinks CoPilot 2024 is the state of the art and will declare this a foolish assertion that good developers like them disbelieve, but this is what all of the industry is moving to.

[–] ajross 8 hours ago
Exactly. This Discord Windows 11 rust app doesn't run on Mint or AOSP or an iPad and won't without extensive porting.

That can be done. It can be done well. It's not (or rather never has been) cheap or flexible or agile (in the market, not SWE sense). People love HTML/CSS/JS for very good reasons, and have been willing to accept the resulting tradeoffs.

Maybe that's changing now that you can vibe-port a lot of this stuff. We'll see.

[–] NetMageSCW 6 hours ago
The article says they can use the Rust code with wasm as the iOS app and that includes iPad and Android. And Mint is just Linux so it should run fine, just like Zed.
[–] dmix 3 hours ago
Using Rust/wasm for a mobile apps sounds crazier to me than using Electron on desktop. I'm not sure of the details there but the APIs/SDKs bringing consistency is one of the best parts of mobile. There's less of an argument for that on desktop which moves slower and is mouse/keyboard instead of complex set of touch workflows, paging, and notification schemes.
[–] tekla 17 hours ago
The problem is that it made everyone's life worse.
[–] johnh-hn 17 hours ago
Not mine. I loathe Electron like many people. But, as someone who is legally blind and has very limited vision, being able to have custom UI zoom levels, per application, has made my life much easier.

For a long time, and mostly out of frustration, I wanted to build my own stack of software around my vision. But the mammoth amount of effort it would require meant I never went through with it.

[–] freecodeio 16 hours ago
nice point, people like to shit on the web but it has one of the biggest accessibility features that most of the gui frameworks would just leave them as feature suggestions for years
[–] hajile 16 hours ago
I'd note that as stuff like A11y gets added into something like Discord, we'll see the app slowly bloat up to compensate.

Google Chrome generally used around 25mb per tab in 2010. Today, that number is often 500mb or even 1gb.

[–] masfuerte 15 hours ago
And Windows apps had accessibility before computers had 25MB RAM in total. Accessibility is not the cause of bloat.
[–] freecodeio 15 hours ago
do any of these native GUI libraries provide just as rich accessibility experiences to disabled people?
[–] TJSomething 9 hours ago
If we mean native as in OS-specific GUI APIs built-in to the operating system, then yes. All of the browsers are abstractions on top of that. If we mean cross-platform GUI libraries for Rust I think your choices are like Dioxus (a webview), Tauri (also a webview), Slint (draws its own widgets), and maybe Fltk (draws its own widgets) with extensions?
[–] ethin 5 hours ago
Yes, yes they do. WXDragon for Rust, for example, provides quite good accessibility. And maybe accessibility would be better for frameworks like QT or DearImGUI if (1) people didn't act like the web was some paragon of accessibility (hint: it really, really isn't, not when websites misuse web APIs -- which happens quite frequently) and (2) UI framework developers didn't just make a UI framework that looked sexy but left accessibility on the floor.

What's oddly being ignored in this entire thread (so far, as of the time of writing) is that back in 2017-2018 Discord was an Electron app and was completely inaccessible. The web did not magically bring accessibility to the table -- we disabled people had to go yell at Discord to fix their shit, and even then it took them like 2-3 years, and even now Discord has some very very weird accessibility issues that will randomly crop up here and there.

[–] saagarjha 1 hour ago
This is mostly because websites have gotten heavier and we want them to run faster.
[–] afdbcreid 9 hours ago
The article implies that a11y will exist on launch and maybe already is.

And it doesn't require that huge amount of RAM, no. What requires the Chrome RAM is running JavaScript and do it fast, and a lot of extremely complicated features, most of which a single app will never use.

[–] Ygg2 16 hours ago
Would you really need 500mb for accessibility? Can't text to speech be outsourced to the OS or companion app?
[–] pjmlp 9 hours ago
All the native APIs across major platforms have accessibility features, how do you think browsers implement theirs?
[–] sitzkrieg 5 hours ago
i switched a cross platform application TO web stack for this reason. accessibility and screen reader usability is incredibly important and massively overlooked in many domains
[–] Grombobulous 16 hours ago
The electron hate train needs to pull in to the station and be retired. We can just admit that it was a good solution for the problems of its time just like JQuery. Electron was conceived over a decade ago and it was an imperfect solution, but there’s no denying that it was a solution.

Election predates WebAssembly by 5 years and hit the scene only one year after Rust was first created.

And just like JQuery, its time is coming to a close as better frameworks are available now that weren’t available back then.

[–] afdbcreid 9 hours ago
We could, if people would stop doing it today.
[–] hackernud3s 8 hours ago
I made a bunch of Electron apps in my time. I always tried to talk the client out of it. "Just make it a website" I would say. Still, there were times where it made sense.
[–] bigstrat2003 10 hours ago
> We can just admit that it was a good solution for the problems of its time just like JQuery.

We would be lying if we did that. Electron was never, ever a good solution. It was something solely used by devs who prioritized their own ease of work over the actual user experience, i.e. bad devs.

[–] rpdillon 8 hours ago
Its a straight-up business decision, generally made by MBAs and with advice from engineers and executed by the engineers. That's because it changes the shape of the org when you need a separate team for each platform, so any org where the benefit of doing so doesn't get articulated sufficiently, will end up with fewer devs covering more platforms.

Acting like this is a decision the ICs make is disconnected from why electron is so prevalent.

[–] Grombobulous 8 hours ago
If it’s so easy to provide a better user experience using something else besides Electron then logically you should be able to point to chat apps that won over more user adoption than Slack and Discord.

Someone would have been able to disrupt that market by making a much better chat app since Elecron is so bad for user experience.

[–] kristiandupont 10 hours ago
Do you have an employer?
[–] s3p 16 hours ago
I never thought election was a good solution for the problems of its time. Just call it a web app and don't lie to people releasing something "native" for them to download.
[–] Grombobulous 16 hours ago
Discord actually launched as a web app, and then moved to adding a desktop app, which has quite obviously become far more popular than visiting discordapp.com and using it in the browser.

Why do you think that is?

I'll give you a hint: if I close my web browser, how do I get a notification that I got a new message? Make sure you also pretend it's 2015 (launch year of Discord) and that I might be using Firefox, Safari, or Edge.

The funny part about this complaint is that you can literally just use the web app if you hate the desktop Electron app so much. That's one of the main benefits of Electron!

[–] Kuraj 16 hours ago
Noone is claiming that, though.

Discord isn't packaged as an Electron app simply because it pretends to be native, but because it has an entire system integration layer that isn't available in the web version.

[–] Brian_K_White 10 hours ago
It was never a good solution and there is no reason to ever stop calling a turd a turd.
[–] bee_rider 8 hours ago
Electron was an ok solution to the problem they were looking at, “how do I waste as much compute as possible.” Unfortunately it had the side effect of drawing a bunch of stuff on the screen.

Luckily in the modern era we have invented language models, which allow us to expend vast resources on text generation instead.