| ▲ | cheschire 2 days ago |
| 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 a day ago | parent | next [-] |
| >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 a day ago | parent | next [-] | | 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). | | |
| ▲ | tcfhgj a day ago | parent | next [-] | | Even vs code is slow compared to a native app - noticable with large or many files; with search and replace in larger files (xx mb) it even crashes | |
| ▲ | cowlevel a day ago | parent | prev [-] | | Actually I think "properly tuned" sounds like weasel words, a no true scotsman fallacy. "Oh electron is slow? Well, it is slow, but that's not real electron, see if you were doing things the right way it would be fast" |
| |
| ▲ | ThunderSizzle a day ago | parent | prev | next [-] | | 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. | | |
| ▲ | load-bearing a day ago | parent [-] | | I'm fairly sure VS low performance and responsiveness is caused by their use of WPF for the UI. Never seen a single responsive application written in that toolkit, it's even worse than electron. Not surprised it hasn't taken off outside of enterprises. It used to be fast before 2010, when they used MFC (or something very similar to it, I don't remember anymore), compiled to native code. |
| |
| ▲ | SideQuark a day ago | parent | prev | next [-] | | 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 a day ago | parent [-] | | 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. |
| |
| ▲ | fy20 a day ago | parent | prev | next [-] | | 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. | |
| ▲ | stuaxo a day ago | parent | prev | next [-] | | Eh, including a whole browser has always been my complaint and I'm sure many others. | |
| ▲ | herbst a day ago | parent | prev [-] | | I definitely remember it being yet another slow editor many people complained about. |
|
|
| ▲ | accurrent 2 days ago | parent | prev | next [-] |
| 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 2 days ago | parent | next [-] | | 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 2 days ago | parent | next [-] | | 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. | |
| ▲ | jasomill 2 days ago | parent | prev | next [-] | | 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. | |
| ▲ | hobo123 a day ago | parent | prev [-] | | IIRC Qt is LQPL, so if you linked it statically you'd have to license your code as LGPL too. Shipping Qt as a separate dll didn't trigger that issue. |
| |
| ▲ | cosmotic 2 days ago | parent | prev | next [-] | | 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. | | |
| ▲ | threetonesun 2 days ago | parent | next [-] | | 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. | |
| ▲ | NetMageSCW a day ago | parent | prev | next [-] | | Why is it no one ever seems to do it then? I have never seen a Java app look or act native on Windows. | |
| ▲ | hobo123 a day ago | parent | prev [-] | | They had native looking skins for Swing that still felt slightly off and behaved differently. Netbeans IDE looked nice, but it was weird in subtle ways. |
| |
| ▲ | saagarjha a day ago | parent | prev | next [-] | | Discord ships plenty of native code, though. Actually most popular Electron apps do | |
| ▲ | pjmlp 2 days ago | parent | prev | next [-] | | 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 a day ago | parent | next [-] | | 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 a day ago | parent | prev [-] | | > 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/ |
| |
| ▲ | mrheosuper 6 hours ago | parent | prev | next [-] | | Then why not static link library ? And please don't mention about the app size because you are already fine with shipping the entire browser with your app. | |
| ▲ | Barrin92 a day ago | parent | prev | next [-] | | >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 | | |
| ▲ | hobo123 a day ago | parent | next [-] | | Probably an economical thing. If you have a much higher effort with packaging and testing vs coding the app logic. | |
| ▲ | expedition32 21 hours ago | parent | prev [-] | | If developers don't want to be replaced by AI they need to bring something to the table because employment is not a charity. |
| |
| ▲ | asveikau 15 hours ago | parent | prev [-] | | > 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. Correction: you didn't know how to do it. That doesn't mean nobody could. Hence, electron came on the scene and enabled people without that particular experience or skills to create desktop apps. Grumpier people like me rolled their eyes and said people should just write desktop apps similar to how it was done in the 1990s, to which the answer was generally "that's too much work". If this is changing, I would guess it's because AI is now doing that "too much work" for them. |
|
|
| ▲ | Grombobulous 2 days ago | parent | prev | next [-] |
| 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 2 days ago | parent | next [-] | | 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 a day ago | parent | next [-] | | 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 a day ago | parent | prev | next [-] | | 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. | |
| ▲ | thiht 21 hours ago | parent | prev [-] | | Honestly GPUI feels like the closest thing we have to a working UI framework for Rust. That's probably because GPUI is not developed in a vacuum, it actually needs to work at Zed's scale because they ship a real product and GPUI needs to deliver. I'm very excited to see GPUI extended for general purpose usages in the future. |
| |
| ▲ | pjmlp 2 days ago | parent | prev | next [-] | | 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 2 days ago | parent | prev [-] | | 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 a day ago | parent | next [-] | | Click either of the 2 links at the top right of the page, and you get screenshots of GPUI apps. | |
| ▲ | Grombobulous 2 days ago | parent | prev [-] | | Probably because it's not meant to be like Bootstrap.js where everyone's UI looks identical? |
|
|
|
| ▲ | throwaway2037 17 hours ago | parent | prev | next [-] |
| > Electron's value prop has always been about having one team producing one app that is supported on multiple platforms with minimal additional effort.
I have only ever worked as a software engineer in mega corps, so my perspective is understandably limited. The value prop that I have observed with Electron is that average JavaScript/TypeScript programmers are cheaper than average Java and C++ programmers. As a result, it can be cheaper to build and maintain JavaScript/TypeScript apps on Electron. To be clear, for years before Electron arrived, it had already been possible to write internal, cross-platform corporate apps using Java (Swing) and C++ (Qt). Also, senior technical management was happy to add RAM to desktop PCs to deal with higher memory requirements for Electron apps. Since the RAM apocalypse, maybe this cost savings has been offset. Still, most corporate desktops are way overpowered (RAM/CPU/GPU) for what normie users need. |
|
| ▲ | NetMageSCW a day ago | parent | prev | next [-] |
| 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 a day ago | parent [-] | | Oh, does rust have a good native cross platform ui framework? | | |
| ▲ | bluGill a day ago | parent | next [-] | | 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. | |
| ▲ | Sankozi a day ago | parent | prev [-] | | You don't need "native" part if you are moving from Electron app |
|
|
|
| ▲ | SOLAR_FIELDS 17 hours ago | parent | prev | next [-] |
| > Electron's value prop has always been about having one team producing one app that is supported on multiple platforms with minimal additional effort. Which is an assumption that made sense pre-2026. It no longer makes sense anymore. Since you can produce multiple apps, one per platform, with minimal additional effort now. |
|
| ▲ | RunSet 2 days ago | parent | prev | next [-] |
| > Electron's value prop "Now you can have the cross-platform compatibility of a single-page application just by bundling Chrome." |
| |
| ▲ | zdragnar 2 days ago | parent [-] | | 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 2 days ago | parent [-] | | 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. |
|
|
|
| ▲ | andai a day ago | parent | prev | next [-] |
| > 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. Article mentions they chose not to use windows native tech (WinUI), presumably for portability reasons. I have no idea how much work it would take to port the Rust client to other platforms, though. Maybe the same code already builds everywhere? |
|
| ▲ | IshKebab 2 days ago | parent | prev | next [-] |
| > 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 a day ago | parent | prev | next [-] |
| > 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. |
| |
| ▲ | peebeebee a day ago | parent [-] | | You know how much overhead testing 5 different apps still is?! (iOS, MacOS, Android, Windows, Linux) | | |
|
|
| ▲ | ajross a day ago | parent | prev | next [-] |
| 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 a day ago | parent | next [-] | | 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 a day ago | parent [-] | | 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. |
| |
| ▲ | jen20 17 hours ago | parent | prev [-] | | > People love HTML/CSS/JS for very good reasons, and have been willing to accept the resulting tradeoffs. Developers do. Accountants do. Users just have a bunch of janky apps that don't work right without knowing why, and have no choice in the matter. | | |
| ▲ | ajross 14 hours ago | parent [-] | | > bunch of janky apps that don't work right Is that really fair? Those janky apps include vscode and slack! There are real technical arguments, but they're comparatively minor and very treatable when you look at it as a technical hurdle. Which is I think why people who've picked a side get so upset over it and find themselves resorting to vague adjectives like "janky". |
|
|
|
| ▲ | tekla 2 days ago | parent | prev [-] |
| The problem is that it made everyone's life worse. |
| |
| ▲ | johnh-hn 2 days ago | parent | next [-] | | 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. | |
| ▲ | Grombobulous 2 days ago | parent | prev [-] | | 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. |
|