The fragmentation on Linux is astounding; I have experience with maintenance of Linux-based projects.
You'll be surprised at how fragmented distributions are, even within the same family (e.g. Ubuntu-based).
The nature of Linux is a double-edged sword, and in gaming, this is a very serious downside - at least, when it comes to Linux-native gaming; Proton/Wine is another story.
- SteamRuntime: A runtime environment for Steam applications. The next generation is/will use Flatpak related technologies like Bubblewrap. It's what you target.
- Flatpak: there's close to no overhead, you can try the Steam Flatpak and see for yourself. It's aimed at desktop applications and the sandbox gets better and better. There's a FUD website called flatkill that has already been torn to pieces so don't even bother linking that. You can't instantly make all closed source or old software work in a sandbox without compromises. Flatpak-override and Flatseal exists.
- Snap: nobody cares about Snap not even Canonical. Recently a former employer said he gave up after trying for years to solve issues with Snaps in the desktop. https://s1.desu-usergeneratedcontent.xyz/g/image/1600/72/160...
- AppImage: nobody cares about AppImages they had almost two decades to try and prove it can work. It doesn't. The main developer is now trying to integrate Flatpak runtimes with AppImages and that's all you need to know to ignore this project. One of the most popular video players tried to use it and it kept crashing or having issues, and they know what they are doing.
tl;dr only Flatpak matters, SteamRuntime uses Flatpak concepts and tools, "huge overhead" is FUD
https://docs.flatpak.org/en/latest/single-file-bundles.html
Also, you can install multiple versions of an application, but you can only run one version at a time:
Note that flatpak allows to have multiple branches of an application and runtimes installed and used at the same time. However, only one version of an application can be current, meaning its exported files (for instance desktop files and icons) are visible to the host. The last installed version is made current by default, but this can manually changed with flatpak make-current.
https://manpages.debian.org/testing/flatpak/flatpak-install.... https://manpages.debian.org/testing/flatpak/flatpak-make-cur...
Still, what I like about AppImage is that it is just a file that I download, put it wherever I want, and run. then delete it when I don't want it anymore.
I think 90-99% of users only use Browser+Office+Games which could work well in any of the big operating systems. Some software preferences are superficial and appropriate replacements exist on the other platforms.
As someone working with macOS, Linux and Windows I focus my workflow on the things that work under all of these operating systems so the impact they have on me is very little. People who are deeper into the UX of a single operation system may disagree completely.
Linux Desktop evangelists have been saying this sort of thing for about a decade now, only they used to exclude "games" from that list because Linux was so terrible as a game platform. Their constant underestimating of "average computer user" is, in my opinion, one of the big reasons they've completely and utterly failed to make significant headway in the Desktop market.
I stopped caring what most people use. I prefer to use Linux and OpenSource software in general for myself but I don't push it onto others. It doesn't matter if the market share of Linux is 1%, 10% or 50% as long as it works for me - and it does.
For example Ubuntu is getting very close to that point already. They stuff lots of stuff in it that I don't want (like snaps) and make them really hard to disable completely. Exactly the kind of thing I left Windows and Mac for (as daily drivers - I still use them for my work)
Thanks. This was indeed my main point.
Of course this doesn't mean there aren't a lot of niches that require a particular OS.
Want to get symbols to debug the kernel? That'll be the microsoft symbol server on windows, or a System.map file in Linux...
Want to make something happen with every boot of the system? That'll be a system service on windows (and by the way they have all kinds of gotchas about what kinds of stuff they can access) or a systemd service on linux.
Want to make a file creatable, writable and deletable by a specific user, but disallow reading back the file contents? Thats easy with windows ACL's, but on linux you're going to have to mess with seccomp.
Need to script something quickly? Well thats either bash on linux or powershell/batch files on windows.
It turns out regularly using two OS's requires almost double the learning time to be as effective on both - there is overlap with concepts, but little overlap with implementations.
On Windows there's also numerous registry keys, Windows Task Scheduler, etc (ugh). On Linux, it depends. Could be also init.d or n+1 other options, including a single custom binary running as init process.
> Need to script something quickly? Well thats either bash on linux or powershell/batch files on windows.
Or bash on Windows (WSL, cygwin, etc.). PowerShell is also available for Linux. Both come with their footguns, especially when used on a "foreign" platform.
But you could just as well use some suitable scripting language, like Python, JS or whatever.
Sure, there's complexity if you really start (or need) to look for it. I do think it's exaggeration to say double, maybe 20%, at most 50%.
Again, pointless in the big picture. Most of the time these details are hidden by libraries.
Anyways given extremely high syscall cost due to Meltdown workarounds, batching multiple operations makes more and more sense.
Except for when they're not, or those libraries don't expose the "one little implementation detail", and a platform hack sneaks in, and _thats_ how we end up with "well it works fine on windows and we use asio so shrug". Unfortunately games are really bad for doing this in my experience (and I'm guilty of doing it on occasion too).
At least finally Linux is also getting completion based IO with io_uring.
Not identical to io_uring, but close enough that porting between them will probably be quite simple.
The competition triggered part is what was already there.
> Other than platform specific development work, it doesn't really matter in the big picture.
Yes it does. It just doesn't matter to you.
Thinking about this, I just realized I tend to pick OS according to device type.
For laptops, macOS for the best touchpad, security and speedy open-lid-to-machine-actually-usable time. But I'd sure like "upgradeability" and "repairability" over thinness, something 2012 Macbooks still had. But for now, practicality wins.
For desktops and workstations often Windows, sometimes Linux. Windows got good desktop performance and nice commercial software library. Freedom to choose your hardware, CPU and GPU. And of course gaming.
For servers, it's pretty much always Linux or possibly some BSD. Minimal, easy to admin, fast, efficient and secure if configured correctly.
If you prefer web apps. A lot of people don't prefer web apps and for good reasons.
> macOS for the best touchpad, security and speedy open-lid-to-machine-actually-usable time
I can't speak about the touchpad, but Mac OS isn't immune to vulnerabilities and there have been multiple questionable privacy practices. Linux tends to cold boot faster, and can suspend and unsuspend just as quick if not quicker.
> Windows got good desktop performance and nice commercial software library
And Linux has even better desktop performance. Many people would see the open source software benefits of Linux as a pro, not to mention Windows package management still being significantly behind Linux. Many people are also very happy with gaming on Linux.
> For servers, it's pretty much always Linux or possibly some BSD. Minimal, easy to admin, fast, efficient and secure if configured correctly.
The same can be said about desktop too.
Unless you use iTunes to sync your music to your computer and iDevice or you're a music producer in need of using the best DAW software, or perhaps you're a creator that uses the Adobe suite to create the best media content you need, etc, then the OS does matter very much since millions of users still use this type of software.
The most important part of this is that the software must be officially supported; and not be at some 'experimental' stage, especially since these users do not play around with their computers and they focus on getting things done.
macOS and Windows users are the 'real' big picture and the 99% of users and that matters. Not the 1% of Linux users.
To Downvoters: So it makes business sense to ignore the 99% of users on Windows and Mac and target the 1% of your userbase running Linux and support as many distros as possible to cover the many users who could be running whatever distro they have installed?
Have you considered what the 'definition of Linux support is?' and the cost of testing for all of that is?
Personally, on some level, I don't even notice difference working macOS, Linux and Windows. Other than platform specific development work, it doesn't really matter in the big picture.
Other than that, only Linux allows me true visibility to its innards. Fast to fix almost any issues, should they happen. And I say this as someone who has for example no problem debugging Windows kernel remotely. Or reverse engineering using Ghidra etc.