I’m so glad that Microsoft makes an awesome cross platfor— wait, no, but they contribute code to— hmmm … Hey, what does Microsoft do to make apps more portable again?
They want be able to hire much cheaper webdevs instead of software devs.
Electron has a lot of built-in data collecting metrics, which they urgently need for creating a real-life KITT.
Easy live embedding of content. Sure you can add your own solution, in fact I created ETML as a solution for this problem for my engine, all without any support for nasty scripting languages or convoluted stylesheets (style-inheritance in CSS turned me off from webdev even more than JS did). At best, it can be used for things like embedding videos on Discord, because no one else thought some universal approach, let alone one that disallows proprietary players. At worst, it’s being used for ads.
Also a lot of Windows-only apps are Electron apps, only because the manufacturer wants to go “fuck you”, even putting protections into the code just in case you wanted to run it on Linux.
Another reason is when developing the Web version first. Draw.io is a good example, where we get a bonus desktop(electron) version “for free” though the product was developed as a web app.
one of the funniest (and sadly accurate) things i’ve heard said about linux backwards-compatibility is that its most stable API is Win32. you can run really old windows software on wine because they support stuff even windows doesn’t anymore.
of course this is because the expectation is that you can just recompile old software to work on new systems, which is not really a thing on window.s
.net
.net cli apps are cross platform and can be portable :p
Gui in .net isnt fully cross platform ( maui is everything except linux ) but frameworks like avalonia ( .net ) and imgui fix all that :')
Thanks for reminding me why Maui doesn’t support Linux. I saw Maui mentioned in an earlier comment and was baffled why KDE would make something not working that doesn’t work in Linux.
It’s because Microsoft stole the Maui name from KDE:
https://www.phoronix.com/news/Microsoft-KDE-MAUI
Nope. The ui framework doesnt support linux at all. None of its cross platform claases and enums have linux. Its stupid because .net and aspcore just work on linux…
Also each is pretty bad in terms of usability and practicality, either losing integration because “containerized” or taking GBs of space or both.
Edit: guys relax, I’m not a linux hater, I use it daily. But windows does have a unified environment, which makes deployment so much easier, while linux doesn’t. And that’s a problem since you either have old broken apps on distro repositories, or impractical, potebtially bloated, and even more fractionated environments like those I mentioned. They are patches and we should work towards a more standard environment, not adding more and more levels of abstraction like electron does.
AppImages can get quite large because each app is self-contained, but the “losing integration” part is nonsense these days for any of these formars. That’s why we have portals, and if those aren’t enough you can still give the app full permissions.
Bollocks. I’ve seen that many times with Flatpak (can’t speak for Snap), and every single time it was either because the packager failed to set up permissions or because the user messed with permissions that the application needed. Break off the tip of a screwdriver and it will no longer function as a screwdriver.
And I know you’re talking out of your ass because AppImage isn’t even sandboxed.
taking GBs of space
That part is true and accurate, and for a very good reason: dependency pinning. System packages can break if they don’t have the correct versions of shared libraries. If a package requires a very old version of a library, and doesn’t link it statically or supply it with the package, it can misbehave, have missing features, or refuse to even start. Flatpak (and probably Snap too, can’t speak for it) solves that by letting the packager specify (pin) the exact version of a dependency. If five separate packages require five different versions of the GNOME application framework, then they will download five separate packages of the correct version. AppImage solves it by being monolithic: everything is packaged together into a single executable.
I don’t know if it’s still the case, but up to a couple of years ago, Flatpak was configured so that externally mounted folders were not accessible. I discovered that when Steam on flatpak refused to install games on my hdd, and it was quite frustrating to figure out how to enable it. Still, it’s difficult to criticize how “bloated” are electron apps (they are) when I need to download 2GB or runtime for an 80MB telegram binary
Snaps integration is even worse as I’ve seen browser extensions state they straight don’t work on snap’s browsers. Also desktop integration on gnone (even files drag and drop between snaps) are broken on the ubuntu installations I tried.
Appimages have the least drawbacks and are my preferred methods between the three (at least they take less storage space than an equivalent Flarpak for some reason, but are still broken sometimes), yet they still miss a central package repository, and that’s a big problem.
Python tkinter interfaces might be inefficient, slow and require labyrinthine code to set-up and use, but they make up for it by being breathtakingly ugly.
Ugh, and they’re just weird. I can handle ugly but ktinker popups go across virtual desktops and over other windows for some ungodly reason, and never seem to dismiss themselves properly
Electron is the only cross platform gui toolkit…
If you ignore QT, GTK and everything else.
I’m so glad that Microsoft makes an awesome cross platfor— wait, no, but they contribute code to— hmmm … Hey, what does Microsoft do to make apps more portable again?
The real reasons often are:
Also a lot of Windows-only apps are Electron apps, only because the manufacturer wants to go “fuck you”, even putting protections into the code just in case you wanted to run it on Linux.
EDIT: Forgot the “live embeds” reason.
Another reason is when developing the Web version first. Draw.io is a good example, where we get a bonus desktop(electron) version “for free” though the product was developed as a web app.
Also works on mobile easier, just change some CSS
one of the funniest (and sadly accurate) things i’ve heard said about linux backwards-compatibility is that its most stable API is Win32. you can run really old windows software on wine because they support stuff even windows doesn’t anymore.
of course this is because the expectation is that you can just recompile old software to work on new systems, which is not really a thing on window.s
The most stable system is one that is out of support. No updates == No breakage! 😄
It’s very amusing to imagine devs carefully watching for an EOL/EOS date and starting to build software only after
I think this is the point of Debian stable, and also why some devs hate Debian stable.
.net
.net cli apps are cross platform and can be portable :p
Gui in .net isnt fully cross platform ( maui is everything except linux ) but frameworks like avalonia ( .net ) and imgui fix all that :')
Thanks for reminding me why Maui doesn’t support Linux. I saw Maui mentioned in an earlier comment and was baffled why KDE would make something not working that doesn’t work in Linux. It’s because Microsoft stole the Maui name from KDE: https://www.phoronix.com/news/Microsoft-KDE-MAUI
Does not MAUI compile to Linux, just that you need to compile on Windows?
Nope. The ui framework doesnt support linux at all. None of its cross platform claases and enums have linux. Its stupid because .net and aspcore just work on linux…
https://github.com/dotnet/maui
Everything but Linux, that’s funny.
I look at MAUI a year or so ago and IIRC, “official” Linux support was made by the community.
Flatpak
AppImage
Snap
Hell, let’s not forget
Python Perl
Java
POSIX
The first 3 are Linux only. It’s irrelevant.
Also each is pretty bad in terms of usability and practicality, either losing integration because “containerized” or taking GBs of space or both.
Edit: guys relax, I’m not a linux hater, I use it daily. But windows does have a unified environment, which makes deployment so much easier, while linux doesn’t. And that’s a problem since you either have old broken apps on distro repositories, or impractical, potebtially bloated, and even more fractionated environments like those I mentioned. They are patches and we should work towards a more standard environment, not adding more and more levels of abstraction like electron does.
Even Torvalds says it so.
AppImages can get quite large because each app is self-contained, but the “losing integration” part is nonsense these days for any of these formars. That’s why we have portals, and if those aren’t enough you can still give the app full permissions.
Bollocks. I’ve seen that many times with Flatpak (can’t speak for Snap), and every single time it was either because the packager failed to set up permissions or because the user messed with permissions that the application needed. Break off the tip of a screwdriver and it will no longer function as a screwdriver.
And I know you’re talking out of your ass because AppImage isn’t even sandboxed.
That part is true and accurate, and for a very good reason: dependency pinning. System packages can break if they don’t have the correct versions of shared libraries. If a package requires a very old version of a library, and doesn’t link it statically or supply it with the package, it can misbehave, have missing features, or refuse to even start. Flatpak (and probably Snap too, can’t speak for it) solves that by letting the packager specify (pin) the exact version of a dependency. If five separate packages require five different versions of the GNOME application framework, then they will download five separate packages of the correct version. AppImage solves it by being monolithic: everything is packaged together into a single executable.
I don’t know if it’s still the case, but up to a couple of years ago, Flatpak was configured so that externally mounted folders were not accessible. I discovered that when Steam on flatpak refused to install games on my hdd, and it was quite frustrating to figure out how to enable it. Still, it’s difficult to criticize how “bloated” are electron apps (they are) when I need to download 2GB or runtime for an 80MB telegram binary
Snaps integration is even worse as I’ve seen browser extensions state they straight don’t work on snap’s browsers. Also desktop integration on gnone (even files drag and drop between snaps) are broken on the ubuntu installations I tried.
Appimages have the least drawbacks and are my preferred methods between the three (at least they take less storage space than an equivalent Flarpak for some reason, but are still broken sometimes), yet they still miss a central package repository, and that’s a big problem.
https://github.com/ivan-hc/AM
It’s a package repository, but I would hardly call it “central”
Well, upstream is now considering either merging or just pointing to the AM repository because it is bigger and better maintained.
https://github.com/AppImage/appimage.github.io/issues/3595
You can even do inefficient UIs in Python using tkinter, which is part of the standard library in python.
Python tkinter interfaces might be inefficient, slow and require labyrinthine code to set-up and use, but they make up for it by being breathtakingly ugly.
Ugh, and they’re just weird. I can handle ugly but ktinker popups go across virtual desktops and over other windows for some ungodly reason, and never seem to dismiss themselves properly
And now imagine yourself creating an UI in tkinter without an editor. Because that’s what I did. It was absolutely horrible.
Probably faster than me even deciding the bg color tho
It’s so portable! With maximal efforts we support both windows 7, windows 8.1 (but not 8.0), windiws 10 and soon Windows 11 !!!
/s