Stop saying that Electron apps are cross platform!

They only run on one platform, the web. In order for people who use Linux/macOS/Windows to be able to run them, they require a translation layer, the Electron runtime, that they all ship with.

It's like when TeamViewer used to ship the Windows version with a copy of Wine as the Linux version. You can run that on Linux indeed, but that's neither a Linux app nor a cross-platform one.

@bugaevc It's exactly how Java apps require the JRE, and C# apps require whatever that thing was called, and how Perl, Python, Node and all other languages require their respective runtimes. Even C applications will often require libc and other libraries, and they don't even always come statically compiled.

Follow

@deshipu Java apps aren't native either (except on Android), Electron is just more popular these days

Requiring libc (or other libs, or a Python runtime, or even gjs) from the system is fine, that is how it should be! OTOH if a C program comes statically compiled against some libc and an alien toolkit, it's not native, too

@bugaevc I see. How about computer games? Are they "native" when they use OpenGL or whatever for display?

@deshipu I'm not a gamer nor do I know as much about internals of games and game engines, but... yeah, I haven't seen many native games. They're all use OpenGL alright, but then they bring with them a whole gaming framework (Unity or whatever) and even their own C# interpreter — and even 2D pieces of their UIs look and behave nothing like the platform's native widgets.

@deshipu
There are GameKit and SceneKit on Apple platforms, so you can use those, but of course if you roll your own UI in a full-screen SCNView it's not going to look native either.

@bugaevc And I suppose you wouldn't consider a KDE application as native on a GNOME desktop, or a TK app as native to, say, WindowMaker, either, am I right? Possibly even GTK1 not native to GTK2?

@deshipu this is where it starts to get blurry since there is no precise criteria for whether something counts as native or not. KDE apps still use Qt that ships with my system; and GNOME devs *try* to make Qt look & feel as native as possible on GNOME (github.com/FedoraQt/adwaita-qt) though of course it's never going to be as native as GTK.

(1/2)

@deshipu WindowMaker is just a window manager, not a platform (unlike GNOME and KDE, and, well, GNUstep), though it itself uses a NeXT-style UI.

Again, GTK2 itself is not a platform; it's a toolkit. A toolkit is a part of the platform, the most important part, perhaps, but still. There is system UI, there are UI guidelines (HIG). MATE, GNOME and Elementary all use gtk3, and yet look at how different they are. NeXTSTEP and Mac OS X (Aqua) use Cocoa and yet look nothing alike.

(2/2)

@bugaevc So basically you are demanding that people write applications using your favorite set of tools.

@deshipu I cannot demand anything, but I myself highly prefer native apps that target the platform that I use and love, be it GNOME, KDE, Android or whatever.

If I have no other choice, I'll use a Windows app via Wine (or a macOS app via Darling 😉), or even an Electron app via Electron, but surely I won't enjoy it as much.

And surely KDE users don't enjoy using GNOME/GTK apps as much as they enjoy using apps that target KDE.

@bugaevc @deshipu If a Python runtime on the host system is fine for your definition of cross-platform, then I fail to see how Electron apps (distributed essentially as .js files which use a separately packaged "electron" runtime to launch on Arch Linux) don't meet that definition.

@YaLTeR @bugaevc I think the distinction is that they do their own user interface inside the browser window, instead of using the native gui libraries.

@deshipu @YaLTeR @bugaevc Exactly. Electron doesn't integrate with whatever desktop it is running on, it replaces the desktop. If there were (say) bindings for GTK, GLib available and Electron apps used them, then that would be equivalent Python, and totally fine. As is, Electron apps are effectively just web apps without a server.

@mjog @deshipu @YaLTeR @bugaevc There are JavaScript bindings for native UI libs, see GJS for example giving access to all the GNOME ecosystem... developers just choose to not do native development and that's it, we're stuck with Web apps shoehorned into a desktop window. In my head the main issue is: Web technologies are intended for *narrative content* and are being abused in all kinds of ways outside their field 🤔

@aperezdc @deshipu @YaLTeR @bugaevc Yeah, this isn't an objection to JavaScript as a language for desktop app development. People should use whatever language they want. Unless it's C then the choice is entirely irrelevant. ;)

It is an objection however to developers releasing an Electron app and proclaiming they support some platform, typicallly Linux, because they don't. What they have is a stand-alone web app.

Sign in to participate in the conversation
Mastodon for Tech Folks

This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!

We adhere to an adapted version of the TootCat Code of Conduct and follow the Toot Café list of blocked instances. Ash is the admin and is supported by Fuzzface, Brian!, and Daniel Glus as moderators.

Hosting costs are largely covered by our generous supporters on Patreon – thanks for all the help!