You may have seen my “External Repositories” forum post, which asked why Snap doesn’t support adding external repositories to the snapd program. There were 2 claims I would like to address:
- Adding External Repositories provides a bad user experience
- The Snap Store has open-source implementations available, and you can run your own snap store
The first point I would like to address is the claim that external repositories provide a bad user experience. This I would classify as mostly true. PPAs were a good experiment, but they have not been a good experience for the end user, and neither has adding repositories. But, the fact that previous attempts at repositories have been a bad experience does not mean the entire repositories concept should be thrown away, rather, it needs to be reborn for a new age of Linux packaging, and will be addressed later in this post.
The second point I would like to address is the claim that there are implementations of the Snap Store available which are open source, and you can run your own Snap Store. This is a half truth. There are open-source Snap Store attempts on GitHub, however, I have found none that have worked, being out-of-date or very limited in power. However, if there was more interest in this, this would not be such a problem. The second problem is that even if you can run your own Snap Store, you can’t install it on user’s machines. There is an override flag for environment variables to force Snap to use your store (which is not easy to do), but with that flag set, you can’t install snaps from the Ubuntu Snap Store at all. In other words, if you set up an alternative store, you are locked into that alternative store.
Now, what are the benefits of the current Snap design? Snap currently contains a very nice installation method, supports IoT, Server, and Desktop, and has many technical merits. The user experience of “snap install” or the Snap Store is very good, but flawed. Namely, Snap is a very Ubuntu-centric system right now in both appearance and function. Every distribution that uses Snap is forced to use the main “Ubuntu Store”. The “Ubuntu Store” is has all the snaps, and Ubuntu gets paid when you buy a snap. If you dare to override this by using the forced different store flag, you can’t install any snaps from the “Ubuntu Store” at all.
You might bring up Canonical’s “Branded Stores”, and this is where things, I believe, could really improve for the benefit of other distributions interested in using Snap while keeping a similar user experience and helping to relieve the fear of Canonical’s centralized design. Here is the proposal:
- Every distribution interested in Snap has the opportunity to run a branded store, which will have that distribution’s branding and imagery. If a Snap is purchased from a branded distribution store while running on Canonical’s servers, the distribution and Canonical split the 30% they pull off the Snap price 50/50. So if a snap cost $1.00 and was bought from a “Fedora Linux” branded store, Fedora gets $.15, and Canonical gets $.15. *
- Every distribution running a branded store should have the right to run that branded store on their own servers. This means that if someone downloads a snap from, say, a “Solus Linux” branded store and Solus ran their own servers, Solus was the one powering the servers. If a distribution is running their own server, they get all of the 30% cut from each Snap’s price, because they ran the servers.
- Updating snaps are symmetrical. If a developer updates a Snap on the Solus-branded store, it sends the update to the Ubuntu-branded store. If a developer updates a Snap on the Ubuntu-branded store, it updates on the Solus-branded store.
- If Ubuntu shows they are an excellent provider of Snaps, I can see how many small distributions would choose to leave their branded Stores in the hands of Canonical’s servers. This benefits Canonical and the distribution.
- If a distribution wants to sign up, they should be able to sign up no matter their distribution size as long as they aren’t, say, a single-person effort. In other words, users shouldn’t be able to claim they “run a distro” to save 15% on Snaps, but small distributions which actually are real (and have website, actual developers) should be able to sign up.
- Every distribution ships with it’s own store, and it is set using an environment variable flag for the Branded Store which already exists in current versions of Snap. This is a different flag than mentioned earlier, and only supports Branded Stores Ubuntu set up. Repositories, without the repository.
- All prices without obvious payment fees, taxes