Are there proprietary elements of Snap server? Is it possible to run Snap-based distribution independently of Canonical?
I am quite disliking Snap for multiple reasons (one of things that I like most on Linux is that I can install/uninstall things with apt-get
, snap
does not have even decency to provide direct help on snap upgrade
).
But the most worrying thing that I heard is that Snap has proprietary elements, making it fully Canonical-controlled.
See for example https://www.techrepublic.com/article/why-canonical-views-the-snap-ecosystem-as-a-compelling-distribution-agnostic-solution/
Martin Wimpress, engineering manager for Snapcraft at Canonical at that time:
Snap store is proprietary
the server end (the 'app store' bit of the equation) is closed source, and Canonical have been refusing to tell anyone how to run their own 'app store' (...) it is entirely controlled by Canonical
(and also describes how Canonical was lying about Snap)
But infoboxes in https://en.wikipedia.org/wiki/Snap_(package_manager) list open source licenses.
What is going on? Have they released Snap store as open source? Or is Wikipedia article incomplete/damaged by Canonical employees?
I am quite worried, especially given that Ubuntu started making basically impossible to avoid Snap on Ubuntu. On the other hand I would prefer to have good reasons to switch Linux distribution, not just based on outdated blog posts.
The actual package management tools for Snaps - snapd and family - are open source. That's what makes the Snap package management system open source and Canonical is not lying about that.
It is true that snapd is hardcoded to use Canonical's servers for obtaining snaps and the metadata associated with them. And the source for the backend servers is not available as far as I know. Various other parts (e.g., the snapcraft.io website, the Snap store app itself, etc.) are open source. I mean, you could serve deb files from an IIS server, but that wouldn't make the apt package management system closed source, would it?
Can you make snapd work with another backend? Technically, you could read the snapd source, figure out the protocol (which shouldn't be difficult - I think the code is fairly readable), implement your own backend, and build a snapd with a patch to swap the backend URLs. However, nobody seems to have done that so far, and Canonical haven't published a reference implementation.
The Snap Store is run and controlled by Canonical and is not open source. The rest of Snap is open source, meaning the daemon and core software. How threatening this is depends on you POV and has been the subject of much discussion. E.G.
As a Linux newbie myself, I've just finished researching snap issues after finding the (LM) program manager doesn't list any snap packages. What I found was that adopting a firm line approach may sever dependency on the Snap Store but replaces it with another problem - in my case missing or receiving out of date packages installed using the Linux Mint package manager:
nodepad-plus-plus
working snap package for Notepad++ (natively available under Windows) was simply not listed. A Linux version (notepadqq) can be installed - and I did - but is not a substitute for using the original.This is where pragmatism and life expectancy comes into play: personally I enabled snaps to install
notepad-plus-plus
, with which I have decades of experience and consider a "must-have", but would search extensively before installing snaps simply because I can. FWIW I'm not sure if installing node from binaries by running the archive manager GUI as root was a good idea, but it got the job done.TL;DR
Yes, the Snap store is controlled by Canonical. Whether that is sufficient reason to compel a move away from Ubuntu is a matter of personal opinion and beliefs, and heavily depends on how and why you select and use snap packages in general.