Providing a way for monetization of snaps?

Disclaimer: I am aware of and acknowledge the controversy behind this topic, in addition to snaps. It’s important for us to keep a healthy discussion about it and not turn it into a political turf war. I’ve seen many discussions go on the wayside like this in various subjects ranging from US politics and government to education, and it isn’t all that helpful; it gets everyone riled up, and the polarization intensifies. Please, remember there’s a human behind the wall of text you read on the screen. They may share different opinions and have different values than you, but that doesn’t make them any less of a person. If I’m not mistaken, that’s the whole point of ubuntu: humanity towards others.

@popey on Twitter brought up a really good point about lack of decent monetization of apps and programs for the Linux desktop, and that snapd does provide some of the legwork required to make such a thing work, if it were to be implemented. There’s been some discussion in the Ubuntu Podcast Chatter group on Telegram about it, but I figured I’d bring it up here to have a discussion about it.

I won’t repeat what popey has said on Twitter, but I’d like to add that having this monetization would be a nice addition since it would help remove some of the overhead and “workarounds” developers have to make to get funded and paid for the work they do. This ranges from making custom file formats to make a key system to changing features around or slapping a button to support the developer on platforms like Ko-fi. Yes, these methods work, but they’re hacky at best and could use improvement. I say this as someone who’s had to make some changes to their codebase to get their game onto the Snap Store (Unscripted, for anyone inquiring).

Ideally, I’d like to have a discussion about the technical requirements for making a system like this work, and how we can help support developers financially through the Snap Store.

2 Likes

You might reach more folks working on snaps specifically at the snapcraft forum @ forum.snapcraft.io (I say this as a snapd developer who only randomly happened to see your post here)

1 Like

I’ll post over there for redundancy, but I think this would be a good discussion for the large community, and I know people will check here more often the the Snapcraft forums.

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:

  1. 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.)
  2. 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.
  3. 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.
  4. 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.
  5. 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?

3 Likes

i think 5. would actually be possible with a private snap … you create the snap, make it private, download it with snap download which gives you a valid assertion and the snap file … paying users get both files from you and install the snap, updates should happen from the store (note that i assume this works, i have not tested it, but effectively this is how i remember private snaps were originally planned to work way back in the days) … this will indeed not protect you from having one paying user share the files with others in the end …

1 Like

https://snapcraft.io/docs/public-private-unlisted-snaps suggests that private snaps are only available to people who are logged in and whose email addresses the snap developer has added to the Collaboration section of the private snap’s listing. I suppose it’s possible that if someone has the snap and isn’t on that list that they can get updates anyway, but if it is possible then I would expect the security team to have conniptions about it and call it a bug :slight_smile:

i would expect the snap assertion to be the master document deciding about updates here … but ICBW as always :stuck_out_tongue: collaboration is rather about upload permissions …

i guess someone would really have to test this out … i’m sadly short of time ATM to do this …

True, and there’s also the problem of users buying from the website directly and not through Itch, where they may not get new versions. So it’s like option 5 is also included here.

This wouldn’t work, you would be able to install the snap, but unless you were made a collaborator on the private snap, your credentials wouldn’t be able to download the snap file from the store for refreshes/updates. Just having the assertion doesn’t give you special access permissions.

1 Like

ah, thanks (this was why i said “someone would really have to test this out”, my post was indeed just assumptions :slight_smile: )