I know this thread is likely to quickly descend into 50 variants of “ew, snap”, but it’s a good write up of what is really a pretty interesting novel approach to the immutable desktop world.
As the article says, it could well be the thing that actually justifies Canonical’s dogged perseverance with snaps in the first place.
I appreciate that they try, and as much as I dislike some of snap’s design choices I think it has a place. Flatpak appears to be the winner in this race however, and I feel like this is Unity all over. Just as the project gets good they abandon it for the prevailing winds. I’ve been told the snap server isn’t open source, which is a big concern?
Snap’s problem is kind of two-fold. One the one hand they keep their server closed source, because it’s heavily integrated into Canonical’s business infrastructure, and on the other hand they’re trying to use the Snap store as a way to make money through business customers. One of those ways is that if you want to publish a snap for your company or your personal devices, you have to either make it publicly available for everyone, or pay Canonical a metric fuckton of money to add your own “store” within the Snap store.
There are tons of free projects with open source clients and closed source servers (often with open implementations available), but the combination of “monetisation platform” and swapping out non-snap system components for snap components (i.e. Firefox, Chromium, LXC) really pisses off a lot of people.
I’m sure the patch to allow Snap to be reconfigured to use an alternative source URL from a config file somewhere is easy to add, but the problem is more with the intention to keep it the way it is.
One annoying example of Canonical’s unwillingness to adjust is the snap folder in your home directory. That’s snap, not Snap. All directories start with a capital letter, but not snap, and there’s no way to change it. You can’t add a period in front of the name to hide it, you can’t fix the capitalisation, you can’t move it to another location, you have to accept its location and name or remove snap entirely.
The client and most of Ubuntu is all open source so there’s absolutely no reason why someone wouldn’t be able to fix this, but Snap is full of such small and needlessly user-hostile limitations that don’t make a lot of sense and have often been fixed by Flatpak already. I know Flatpak can’t do some of the things Snap does, but I question how relevant use cases are for the complicated system interactions that make some of the more advanced Snap features available when looking at desktop users. Put this stuff in Ubuntu IoT and Ubuntu Core, that’s where it makes total sense, maybe even Ubuntu Server, but why stuff Ubuntu Desktop full of it?
Unlike desktop environments where there were equivalent alternatives to Unity, Flatpak isn’t an alternative to Snap that can deliver an equivalent solution. You can’t build an OS on top of Flatpak. This is why I think that if Snap makes the lives of Canonical developers easier, they’ll keep maintaining it. We’ll know if Ubuntu Core Desktop becomes a mainstream flavor or the default one. I think there is a commercial value of it in the enterprise world where tight control of the OS and upgrade robustness are needed. In this kind of a future Snap will have a long and productive life. If it ends up being used only for desktop apps which Flatpak covers, it may fall by the wayside as you suggested.
Absolutely, and I think that’s why snap has a future at all. Immutability is the future, as well as self-contained apps. We saw the explosive growth of Docker as indication that this was the way. If they can make their tooling as easy as a Dockerfile they will win just by reducing the work needed to support it.
I’m pretty excited about it. It’s a much cleaner solution to the problem immutable OSes are trying to solve. Dare I say it’s better even than the Android model because it covers the whole stack with a single system.
I don’t like Canonical pushing snaps as universal apps for all distros, because of issues like sandboxing not working on mainline kernels.
But it’s pretty interesting to see how a fully snap based desktop OS could look like. It might have less limitations than rpm-ostree. Easy access to recent mesa and similar would be awesome.
I actually don’t understand the issue people have with Snaps. The main gripe seems to be “It’s controlled by Canonical”.
But why is it an issue that Canonical controls a source of software for their own OS? Isn’t that the same with every distro’s repository?
But why is it an issue that Canonical controls a source of software for their own OS? Isn’t that the same with every distro’s repository?
No. You can add any other repository to apt, rpm, Flatpak, etc. You cannot do the same with Snap and that’s by design. Canonical wants to be the sole gatekeeper of Linux software, hoping that all developers have no alternative but to publish software on the Snap store (ideally only there) which works best on Ubuntu.
Exactly. I feel they want to sell it to a big player, but no big player will touch it unless they can fully control it. Hence snap as part of that plan. Ubuntu is a hell no for me.
How would they trap everyone in the ecosystem?
This isn’t Apple, there’s a gajillon other ways of getting software you can use on every single linux distro.
Then I guess it’s a good thing they don’t control all other Linux distros.
But they would to a degree if the Snap Store would actually succeed becoming the Linux app store (like Steam is for games but that’s more because all other vendors don’t care to make a Linux client).
You can; the issue is that you can’t add two snap repositories at once.
This is functionally pretty much the same thing, as nobody is likely to want to use snap while locking themselves out of the main snap repository, but it’s still important to make the distinction.
In theory I guess there’s nothing stopping you setting up a mirror of the main snap repo with automatic package scraping, but nobody’s really bothered exploring it seeing as no distro other than Ubuntu has taken any interest in running snap.
It’s all open source so there’s no reason you couldn’t fork it and add that functionality. Although it’d probably be a fairly involved piece of work; it wouldn’t be a simple one-line change.
From reading this that’s not the whole story. Someone working at canonical successfully made a version of snap that could use alternative stores, but the default version does not allow it
And honestly at the point of installing that modified version you may as well just install a different package manager anyway
Snap makes a lot of sense for desktop apps in my opinion. There’s a conceptual difference between system level packages that you install using something like APT, and applications. Applications should be managed at the user layer while the base system should provide all the common libraries and APIs.
It’s also worth noting that this is a similar approach to what MacOS has been doing for ages with .app bundles where any shared libraries and assets are packaged together in the app folder. The approach addresses a lot of the issues you see with shared libraries such as having two different apps that want different versions of a particular library.
The trade off is that you end up using a bit more disk space and memory, but it’s so negligible that the benefits of having apps being self-contained far outweigh these downsides.
The problem here is that for that purpose, Flatpak is better in nearly every way and is far more universal
I think Snap makes the most sense for something like Ubuntu Core, where it has the unique benefit of being able to provide lower level system components (as opposed to Flatpak which is more or less just for desktop GUI apps), but it doesn’t make sense for much else over other existing solutions
I know this thread is likely to quickly descend into 50 variants of “ew, snap”, but it’s a good write up of what is really a pretty interesting novel approach to the immutable desktop world.
As the article says, it could well be the thing that actually justifies Canonical’s dogged perseverance with snaps in the first place.
I appreciate that they try, and as much as I dislike some of snap’s design choices I think it has a place. Flatpak appears to be the winner in this race however, and I feel like this is Unity all over. Just as the project gets good they abandon it for the prevailing winds. I’ve been told the snap server isn’t open source, which is a big concern?
Snap’s problem is kind of two-fold. One the one hand they keep their server closed source, because it’s heavily integrated into Canonical’s business infrastructure, and on the other hand they’re trying to use the Snap store as a way to make money through business customers. One of those ways is that if you want to publish a snap for your company or your personal devices, you have to either make it publicly available for everyone, or pay Canonical a metric fuckton of money to add your own “store” within the Snap store.
There are tons of free projects with open source clients and closed source servers (often with open implementations available), but the combination of “monetisation platform” and swapping out non-snap system components for snap components (i.e. Firefox, Chromium, LXC) really pisses off a lot of people.
I’m sure the patch to allow Snap to be reconfigured to use an alternative source URL from a config file somewhere is easy to add, but the problem is more with the intention to keep it the way it is.
One annoying example of Canonical’s unwillingness to adjust is the snap folder in your home directory. That’s snap, not Snap. All directories start with a capital letter, but not snap, and there’s no way to change it. You can’t add a period in front of the name to hide it, you can’t fix the capitalisation, you can’t move it to another location, you have to accept its location and name or remove snap entirely.
The client and most of Ubuntu is all open source so there’s absolutely no reason why someone wouldn’t be able to fix this, but Snap is full of such small and needlessly user-hostile limitations that don’t make a lot of sense and have often been fixed by Flatpak already. I know Flatpak can’t do some of the things Snap does, but I question how relevant use cases are for the complicated system interactions that make some of the more advanced Snap features available when looking at desktop users. Put this stuff in Ubuntu IoT and Ubuntu Core, that’s where it makes total sense, maybe even Ubuntu Server, but why stuff Ubuntu Desktop full of it?
Unlike desktop environments where there were equivalent alternatives to Unity, Flatpak isn’t an alternative to Snap that can deliver an equivalent solution. You can’t build an OS on top of Flatpak. This is why I think that if Snap makes the lives of Canonical developers easier, they’ll keep maintaining it. We’ll know if Ubuntu Core Desktop becomes a mainstream flavor or the default one. I think there is a commercial value of it in the enterprise world where tight control of the OS and upgrade robustness are needed. In this kind of a future Snap will have a long and productive life. If it ends up being used only for desktop apps which Flatpak covers, it may fall by the wayside as you suggested.
Absolutely, and I think that’s why snap has a future at all. Immutability is the future, as well as self-contained apps. We saw the explosive growth of Docker as indication that this was the way. If they can make their tooling as easy as a Dockerfile they will win just by reducing the work needed to support it.
I’m pretty excited about it. It’s a much cleaner solution to the problem immutable OSes are trying to solve. Dare I say it’s better even than the Android model because it covers the whole stack with a single system.
I don’t like Canonical pushing snaps as universal apps for all distros, because of issues like sandboxing not working on mainline kernels.
But it’s pretty interesting to see how a fully snap based desktop OS could look like. It might have less limitations than rpm-ostree. Easy access to recent mesa and similar would be awesome.
I actually don’t understand the issue people have with Snaps. The main gripe seems to be “It’s controlled by Canonical”.
But why is it an issue that Canonical controls a source of software for their own OS? Isn’t that the same with every distro’s repository?
No. You can add any other repository to apt, rpm, Flatpak, etc. You cannot do the same with Snap and that’s by design. Canonical wants to be the sole gatekeeper of Linux software, hoping that all developers have no alternative but to publish software on the Snap store (ideally only there) which works best on Ubuntu.
Therefore: Fuck Snap.
Exactly. I feel they want to sell it to a big player, but no big player will touch it unless they can fully control it. Hence snap as part of that plan. Ubuntu is a hell no for me.
Forget selling it.
I think they’re going to get everyone trapped in the ecosystem, and then they’ll start charging for access to the source.
@caseyweederman @makingStuffForFun the prediction imperative will come in before that. surveillance capitalism is how they will make their fortune
How would they trap everyone in the ecosystem?
This isn’t Apple, there’s a gajillon other ways of getting software you can use on every single linux distro.
That’s exactly what they’re trying to change.
Then I guess it’s a good thing they don’t control all other Linux distros.
Yes, thank god for that.
But they would to a degree if the Snap Store would actually succeed becoming the Linux app store (like Steam is for games but that’s more because all other vendors don’t care to make a Linux client).
Then why did they publish source code and documentation for all parts of it, so you can create your own snap store?
Smoke and mirrors. You cannot add a secondary Snap repository.
You can; the issue is that you can’t add two snap repositories at once.
This is functionally pretty much the same thing, as nobody is likely to want to use snap while locking themselves out of the main snap repository, but it’s still important to make the distinction.
In theory I guess there’s nothing stopping you setting up a mirror of the main snap repo with automatic package scraping, but nobody’s really bothered exploring it seeing as no distro other than Ubuntu has taken any interest in running snap.
I know that it’s possible to change the one entry but adding additional ones is not possible and that’s by design.
Is that an artificial limitation that could be resolved by third-party clients?
It’s all open source so there’s no reason you couldn’t fork it and add that functionality. Although it’d probably be a fairly involved piece of work; it wouldn’t be a simple one-line change.
From reading this that’s not the whole story. Someone working at canonical successfully made a version of snap that could use alternative stores, but the default version does not allow it
And honestly at the point of installing that modified version you may as well just install a different package manager anyway
Or better yet, a different OS.
Might I suggest NixOS best package manager out there imo
Snap makes a lot of sense for desktop apps in my opinion. There’s a conceptual difference between system level packages that you install using something like APT, and applications. Applications should be managed at the user layer while the base system should provide all the common libraries and APIs.
It’s also worth noting that this is a similar approach to what MacOS has been doing for ages with .app bundles where any shared libraries and assets are packaged together in the app folder. The approach addresses a lot of the issues you see with shared libraries such as having two different apps that want different versions of a particular library.
The trade off is that you end up using a bit more disk space and memory, but it’s so negligible that the benefits of having apps being self-contained far outweigh these downsides.
The problem here is that for that purpose, Flatpak is better in nearly every way and is far more universal
I think Snap makes the most sense for something like Ubuntu Core, where it has the unique benefit of being able to provide lower level system components (as opposed to Flatpak which is more or less just for desktop GUI apps), but it doesn’t make sense for much else over other existing solutions
I don’t disagree, but as you point out in the context of Ubuntu Core the decision makes sense and snap does the job.