I think it’s worthwhile talking about alternatives here more generally, especially since this stuff isn’t supported by snaps right now, and the people on the snap team aren’t the ones deciding whether that’s the thing that they work on.
Having done a little thinking about this, here’s my model: you’ve made a small app for the Ubuntu desktop, and you want to sell it for money to people; they pay, they get the app. After they’ve paid, they get updates to the app and don’t have to pay again.
This is a simple model, but note that it excludes some things:
- you’re not looking for optional donations or pay-what-you-want;
- you’re not doing “freemium” where they get the app and then pay to unlock additional features with in-app payments or by buying a license key which they type in.
This is the traditional model: you don’t get the software until you pay for it, and importantly it doesn’t require any changes to the software itself; merely the method by which it is provided. Other platforms enable this; how can we do it on ours?
The possibilities I’m aware of are:
- flatpak – the responses to @popey’s Twitter thread include suggestions that flatpaks can be paid for and then updates happen. I do not know if this is a technical thing where the infrastructure is in place but nobody can actually do this yet, or not; someone who does know, do please fill this in. (I suspect this may be one of those things where an app developer can’t actually sell things yet but you can see how it might be possible once there’s a payment processor available, or something.)
- Steam – Steam does apps, and has all the payment stuff sorted out, and lots of people have it. It seems a bit weird to distribute an app through Steam, but maybe it’d work. It’s not clear how desktop integration happens; how does the app show up in your desktop menus, register file associations, and so on? And how do updates happen? Steam-installed apps can run a shell script of their choice at install time and it should be possible to handle these sorts of install tasks in that script, although snaps/flatpaks do handle some of the heavy lifting for you here (and in particular, uninstall might be difficult; this is why snaps don’t have post-install scripts like debs do, because reversing them is hard.) It’s also possible that the app won’t update until the user opens Steam again, which is not ideal for an app.
itch.io: see Steam. Pretty much all the same things apply, including all the concerns, except that you can list your stuff on itch without going through a bunch of rigmarole like you need to with Steam.
- snaps: if a pay infrastructure gets created, this could be used; it does not currently exist. Note that a hybrid approach can be imagined, where putting a snap privately in the store would sign it but not allow downloads without a magic key file; the developer can sell the magic key file on itch or by gumroad, which then “unlocks” the snap channel for download. This would mean that developers could sell apps which were distributed as snaps but without the snap store having to also implement all the payment and purchase infrastructure as well, which might be a useful compromise… but this is also not possible right now as far as I know.
- sell them an installable downloadable file, using something like gumroad or paypal or whatever; the installable file might be a snap or a deb or a flatpak or a tarball or an appimage or whatever. The issue with this is that there aren’t any updates for it; you’d have to handle that separately somehow, which is not good.
Other suggestions are invited. I think there’s probably also a useful but completely separate discussion which could be had about different ways to monetise (so “how do we do in-app payments?” “what about donation-ware?” “how do we add ads to Ubuntu desktop apps?”) but that should probably happen in a separate thread so as to not clutter this one?