Fell or feel? (edit: haha, @zyga-snapd fixed it, feel it is)
If feel, I guess I fall into the category of an app developer as I have one out there.
I also feel I wouldn’t have developed and released it if snaps and the central snap store weren’t available.
As a long time Linux user, on and off with desktop use for 20+ years, but consistently for server use, in the last few years I returned to using desktop Linux far more consistently. Not being able to find a good text expander app, I scratched my itch and built Snippet Pixie.
A very big reason for taking the time and huge effort involved building Snippet Pixie was that I saw a path to being able to release it in a way that I could share it with other people needing such an app, but which would not involve me maintaining a package on many distro repositories, or users not being able to easily discover and install it.
That’s what the central Elementary AppCenter (hang in there, I’ll get to snaps in a sec) gave me as my first avenue of release, with great guides and community to help with the process of developing and releasing the app.
The Elementary AppCenter is a safe place for a developer to release an app, there are checks and quality controls in place that ensure your app meets a standard that helps prevent many potential problems for the end user. For me, this is a big deal, especially with an app like Snippet Pixie that’s already got many hurdles to jump just to do its job.
For all the love I have for the AppCenter, its a small audience in the grand scheme of things. And so, while I originally ended up building Snippet Pixie for the AppCenter, before I did so you bet I had spent a lot of time checking out all the ways I could release the app to a wider audience of people that need such an app.
As mentioned above, building for and maintaining across multiple distro package repositories, even if you just stick to the big ones that form the base of so many others, is just not feasible for a single developer with very little spare time. And while other people could package the app for those various distros, I felt like I’d have to put the app out somewhere first so that people start to use it, and hopefully give me feedback so I could improve it. From what I can tell, it’s not that easy to get into most repositories anyway, each distro has its own machinery to learn. And frankly, if Snippet Pixie does ever start to get any significant use and people start packaging it for their favourite distro, I’m scared to death of the potential explosion of issues that’ll be submitted.
So I always considered the “universal” package formats as being the only manageable method of release, that being AppImage, Flatpack and Snap.
At the time (a couple of years or so ago now), AppImage was very much a “release it on your own site” type of affair, no central discovery and install mechanism. And while that kind of control is attractive, and I’ve released software that way before, the lack of built in updates by default for AppImages is a no go for me. If there’s no built in update mechanism, whether silent or “hey, there’s a new version”, then as an app developer I’m not touching it. Previous software I’ve released has used the typical check for an update once a day mechanism, worked very well, users love just clicking a button to get an updated version, and I’m happy because the user-base keeps their versions up to date. Even so, I did try a few experiments with building a simple AppImage, and failed miserably. Getting the tools to just work, and even then get the very simple “hello world in a window” app to work was a terrible experience. I believe things have improved a lot since I tried to build an AppImage, and maybe it was just my own failings to pick up a new dev env, but at the time, nope, don’t need the pain.
Flatpacks also suffered from a lack of discoverability, Flathub was a thing, but wasn’t integrated into many distros, and not in any that I used at the time anyway. Being able to use Flathub to distribute updates was attractive though, so might have been worth the effort of detailing how to install flatpack support, but again, I seriously struggled to get a super simple flatpack to work.
Snaps on the other hand were a clear winner. There was a nicely designed central store that gave users confidence, app updates just worked, and there’s a clear beta/rc/stable mechanism front and center. At the time snap apps were probably only available in as many graphical installers as flatpack, but installing snapd and installing snaps was a breeze compared to flatpacks. So far easier to detail for end users. And crucially, building a snap with the excellent tools was also a breeze, it just worked. Sure, by “just worked” I mean after reading the nice developer docs and making sure I put things in the right place. But compared to the others where no matter how much I read it didn’t help, yup, it just worked.
Seeing how well snaps worked for me as a both a user and developer gave me the confidence to plow on and build Snippet Pixie. So even though I initially built the app for the AppCenter, I always knew that if it seemed to be a goer and worked as an app, then I’d build and release a snap for wider use too.
Having a snap store backed by a trusted company like Canonical, which includes many individuals that are active in the wider Linux community, and forums like this where I could see frank discussions and plenty questions and answers on technical or otherwise subjects related to snaps, just gave me confidence to have a go. I’m really not sure how spending the time and money to try and refactor the software stack for what must be a pretty darn complex store so that it can be easily open sourced is a good idea. As an app developer I want a platform that enables easy discovery and distribution of my open source apps in an open source package format. The important part to me is that the package format can be audited as that’s what’s running on user’s machines. A large app store like the snap store will have many moving parts, and I very much doubt many other parties are going to be in the position of being able to customize and run such a beast. Having an open source store would be nice, but given that as an app developer I’d prefer to deal with as few channels of distribution as possible, I personally don’t see any need for that kind of mammoth effort by Canonical, unless they truly see a benefit to letting people audit their software stack.