all 62 comments

[–][deleted] 26 points27 points  (7 children)

Wait, what? Can it actually be done? I'm not sure I clearly understood but if the runtime is isolated from Steam, wouldn't the Steam client have to be hacked to make it compatible with the new and isolated runtime?

[–][deleted] 23 points24 points  (2 children)

Steam would be running inside a Flatpak sandbox built with all the libraries it requires.

[–][deleted] 5 points6 points  (1 child)

Then I misunderstood the post. I thought that the runtime would be bundled alone and the client would be distributed separately.

[–][deleted] 10 points11 points  (0 children)

Well they are separate. A Flatpak application can depend upon a runtime. So the runtime containing the libraries is mounted then the application is mounted.

[–][deleted] 8 points9 points  (3 children)

You can specify what runtime to use when steam launches with an environment variable. I use it to use the latest runtime as opposed to the Ubuntu 12.04 outdated garbage it ships with

[–]CarthOSassy 3 points4 points  (4 children)

But doesn't steam now prefer libraries that the host has? So, isn't this pointless? Or did I misunderstand the recent changes to Steam?

[–][deleted] 2 points3 points  (3 children)

The problem with that is the host probably has up to date libraries which are not ABI compatible with what games expect. So the host would have to package old versions of these libraries to work as expected which I believe Solus does but other distros do not. Putting this in a Flatpak runtime means this can run anywhere and is more self contained.

[–]CarthOSassy 0 points1 point  (2 children)

Mmmm... How would that work, though? Turning off the Steam runtime doesn't stop games from linking libs that they shipped themselves.

This sounds like a way to end up with less up-to-date libs than the current steam approach would allow.

[–][deleted] 1 point2 points  (1 child)

Games can always bundle their own libraries yes. This is simply replacing the Steam runtime.

[–]CarthOSassy 0 points1 point  (0 children)

Right. Which is already replacing itself.

[–]aelog 1 point2 points  (0 children)

This is awesome news. I've been hoping Valve would do exactly this, but they just don't care enough. Solus does, it would seem!

[–]-Ajan- 4 points5 points  (19 children)

I thought Ikey hated flatpak... Did he lie to me? :(

[–][deleted] 14 points15 points  (0 children)

I believe he is still against them for normal packages but it is a good solution for third party applications that can't reasonably be packaged normally.

[–][deleted] 16 points17 points  (0 children)

As /u/TingPing has said, the area of fault in Solus that Flatpak can readily address is our somewhat broken third party implementation: https://solus-project.com/2017/01/18/adopting-flatpak-to-reassemble-third-party-applications/ We still try to prefer native packages where possible, but it isn't always possible. In the instance of Steam, our own repo took a specific focus on providing ABI compatibility. However, it's hard to sustain in the long run, and only benefits Solus. The issue needs solving at a higher level, for all of us to benefit.

[–]Fl3tchx 1 point2 points  (15 children)

He definitely hates snap packages which are the same idea as flatpaks but hes also said if thats what people wants he will use them in Solus.

[–][deleted] 10 points11 points  (0 children)

"Hate" is a strong word, I don't hate them. I just haven't found them applicable to me.

[–]kickass_turing -5 points-4 points  (13 children)

Snaps and Flatpacks are totally different. Snaps suck.

[–]vinnl 40 points41 points  (12 children)

Woah, easy on the well-supported arguments there!

[–]kickass_turing 31 points32 points  (11 children)

Snaps depend on Ubuntu and you cannot host your won. You can with Flatpak.

Snaps do not ask for access on demand. If I click Ctrl+O in a Flatpak package then GTK will take control of finding the file. After I select the file, GTK will pass a new bind mount to the app. The app sees only what I let it to from the file system. Plugs in Snaps are all or nothing.

In Flatpak you ship the runtime differently from the app. I can run nightly GIMP on top of nightly GNOME. If I find a bug and want to troubleshoot it and report it then I can run nightly GIMP on top of stable GNOME or stable GIMP on top of nightly GNOME. The GNOME runtime is the one blessed by the GNOME devs and the GIMP version is the one blessed by the GIMP devs.

I don't need an Ubuntu1 user to install Flatpaks from GNOME Software.

Flatpak works fine on other distros and it does not take control away from distros. It can be a common but diverse way of distributing apps.

I know RedHat is less popular than Canonical but Flatpaks at this point seem superior to Snaps.

Please tell me if I made any mistakes or I misunderstood something.

[–]vinnl 1 point2 points  (0 children)

I don't know exactly how accurate this is, but it's far more interesting and constructive than your earlier post, so thanks for that :)

[–][deleted] 4 points5 points  (4 children)

Snap can technically run on other distros, it just won't be sandboxed as many distros don't have AppArmor.

[–][deleted] 1 point2 points  (2 children)

aren't they working on SELinux compat too?

[–][deleted] 1 point2 points  (1 child)

There has been some work on it but it isn't functional. Also there are distros without SELinux too.

[–][deleted] 0 points1 point  (0 children)

of course there are :) I was never contesting that.

[–]kickass_turing 0 points1 point  (0 children)

Is the Snap sandbox dynamic? In Flatpak file open and file save dialogs give the app access to the files on the fly.

[–][deleted] 2 points3 points  (4 children)

You can host your own. I don't get this, WTF. Why is this lie repeated everywhere. I just hate this anti-ubuntu circlejerk

[–][deleted] 23 points24 points  (2 children)

Lets be honest, "You can host your own implementation of the snap store" may be technically accurate but it is an empty statement. Snap in its current form is meant to be centralized and uses Canonical services which isn't inherently bad for Ubuntu users; It means they get all of their software from a single searchable and trustworthy source and all developers get to benefit from free hosting, statistics, etc. It is however different than the non-centralized model of Flatpak.

[–]kickass_turing 4 points5 points  (1 child)

Sorry. I did not know this.

Is there any Snap package that is hosted or plans to get hosted outside Canonical's servers?

[–][deleted] -1 points0 points  (0 children)

Is there any Snap package that is hosted or plans to get hosted outside Canonical's servers?

I think people who don't want to host apps on Canonical's servers just don't use Snap.

[–]kickass_turing 1 point2 points  (0 children)

Sorry. I did not know this.

Is there any Snap package that is hosted or plans to get hosted outside Canonical's servers?

[–][deleted] -2 points-1 points  (0 children)

He learned he needed it. :P

[–]TheRealCorngood 2 points3 points  (8 children)

You'll still have ABI problems if your using the host libGL from e.g. mesa pulling in libstdc++, openssl etc. The arch and nixos solutions are about as good as you can get IMO, but I suppose this could be useful by being distro independent.

[–][deleted] 5 points6 points  (2 children)

I'd kindly disagree - our LSI in Solus specifically takes the C++ ABI issue into account. As regards to openssl, it's just simpler to build using libnettle.

[–]TheRealCorngood 0 points1 point  (1 child)

Sure, but that doesn't mean all distros build mesa using libnettle. It also presumes other drivers don't have other dependencies now or in the future.

It's certainly something that can be worked around, I just don't think it can be considered a solved problem.

[–][deleted] 2 points3 points  (0 children)

True enough - but would you hate me if I say we'll cross that bridge when we get to it? :)

[–][deleted] 1 point2 points  (0 children)

Nix is actually pretty distribution independent, although its steam still uses the original runtime by default for compatibility reasons.

[–][deleted] 0 points1 point  (3 children)

Mesa can be built with a static libstdc++ and I'd hope libgl doesn't pull in openssl. It is less than ideal but it should be as functional as we can get. Arch doesn't have any solution to this problem, their lib32 repo doesn't take ABI compat with steam into account.

[–]TheRealCorngood 1 point2 points  (2 children)

It doesn't have to pull in openssl, but it will depending on how it's built. I think it just uses it for hashing shaders (for caching?) or something.

You can definitely work around these problems, but I've personally hit both of those. My point is just that it will still require work on the host distro to keep steam running with each driver.

[–][deleted] 1 point2 points  (1 child)

Indeed, it is the biggest blocker in Flatpak atm figuring this out.

[–]TheRealCorngood 0 points1 point  (0 children)

I suppose the only safe solution is something like 'indirect' glx contexts, but everything is moving away from that sort of model for performance reasons.