Joaquim Rocha
Published on

Paying for FOSS apps

  • avatar
    Joaquim Rocha
  • Principal Software Engineering Manager at Microsoft

tl;dr: TrinkGeld is a proposal for a GNOME project (but should be usable in most free desktops out there) that uses monthly donations and distributes them to app developers based on how much their apps are used, together with a Humble Bundle style customization options.

There’s been an ongoing topic in the GNOME community about how developers can get some money for their apps. From a fixed price to pay-what-you-want or donations, getting people to pay for software as end users is not easy. This is true even if you’re selling software through a mainstream platform like Google Play or the Apple Appstore, let alone if you’re a Free Software developer and you are relying on donations from your users.

Even if you’re willing to donate a couple of euros for supporting an app you’re about to install, you’ll have to go through the trouble of finding out how to make the donation. This may involve: 1) going to the app developer’s website; 2) finding out whether they accept donations; 3) hope they receive donations through a service you already use (PayPal, bank transfer, Bitcoin, etc.) and perform the donation. During GUADEC, Richard Hughes organized a discussion around the problems of getting donations through GNOME Software. And now the GNOME app center has a “donate” button for apps that declare a donation link. So that donation button solves most of the steps I enumerated above, however it still requires that users pursue that option, which will simply take them to the app’s donations page. If a user eagerly installs an app and uses it for a while, they will have to remember to make a donation later on if they want to support the app monetarily.

Spot the donation button at the bottom of an app's details page in GNOME Software.
Spot the donation button at the bottom of an app’s details page in GNOME Software.

There are of course other approaches for getting people to pay for apps, like the one that Elementary uses: showing a price for an app but allowing the user to modify that price including offering 0 (meaning you get it for free). While this seems like a good way to allow people to pay what they will, the downside is that many users find it deceptive when all indications are that you have to pay for an app; it’ll scare off users who think they have to pay for those apps; and it’s still a step to be done before getting the app (before you know whether you’ll even use it for more than 5 minutes…).

A (not so) new model

So, if having to pay before installing an app is not ideal (and not really a donation!), and post-installation donations are tend to be forgotten and thus minimal, what else can we do?

Subscription based services like Spotify and Netflix are extremely successful these days. Some people may think that’s simply because of their large catalog (access to “all” songs for only 9.99 EUR a month? a bargain!), but I dare argue that a lot of their success is due to people’s lazyness. Why are those platforms successful when there was/is so much “piracy” out there? Either a good percentage of the people who downloaded content illegally suddenly started caring about increasing Hollywood’s profits, or they just feel like they’re now being offered a very convenient service for a reasonable monthly price (besides being completely legal of course)! Set up the monthly payment and off you go!

I think that a subscription based donation model for apps in the Linux desktop is something that could work. I think that a good number of people are willing to give some money for the apps they use, but they’re too busy to remember to do it regularly. In this subscription model, users wouldn’t pay for installing apps, they would donate money for the apps they use instead.


I am very bad at naming stuff but it’s good to have a way to refer to this project easily, and I think I got a good one for it: TrinkGeld! “Trinkgeld” is a German word that means “tip money” but as you may have guessed it comes from the words that translate as drink+money. I think it sounds great! It’s easy to write and pronounce, and associates with the concept of paying a developer a drink, which I like.

Here is the base concept of Trinkgeld: it is a desktop application where you sign up and choose a monthly amount you think the software you use is worth (and that you can afford, of course). Trinkgeld then tracks the applications you use on your system (which ones were installed and, more importantly, how much they were used), and at the end of the month your donation amount is divided according to how much each app has been used, and finally the divided amount is sent to its respective app’s developer. Think of it as Flattr + Spotify (+ Humble Indie Bundle… just keep reading).

I think this concept has many advantages: users won’t have to pay upfront for an app they don’t know they’ll use or not. Nor will they have to remember to go to an app’s page in the app center in order to donate some money. It’s affordable for users because they set up how much they can give out. It’s fair for app developers because they will keep getting paid as long as users keep using their apps.

An oversimplified diagram of how TrinkGeld operates is something like the following:

TrinkGeld diagram

Money flow

There are two approaches towards distributing the money: 1) send it directly to the app developers using some service’s API; or 2) use a “middle-actor”. While #1 is tempting, it has some downsides: it’s technically much more challenging to schedule a bunch of payments to different accounts and systems; we’d have to offer ways for users to correct the donations if there’s a mistake/bug when sending out the money; usually smaller individual payments end up paying a higher percentage as a service fee; and maybe users can get in trouble with the law if they end up giving out money to some person or organization that they shouldn’t (I can think of sanctioned countries, dubious organizations, etc.).

I actually prefer approach #2 where the money would be donated as the pre-selected monthly sum to some entity that would be in charge of distributing it according to the report sent from TrinkGeld. I can imagine this middle-actor being e.g. the GNOME Foundation, or distros. Let’s take the GNOME Foundation for this example. We’d select say 20 EUR monthly for TrinkGeld, the money would be sent out to the GNOME Foundation (say using PayPal for example), and the Foundation would also get the monthly reports from TrinkGeld. Then, it would distribute the money among the apps’ authors (that had registered as part of the GNOME Foundation’s TrinkGeld partners). The money could be sent out from the Foundation only when it reached a certain amount (common in other app distribution platforms) in order to minimize fees. The GNOME Foundation would rightfully take a percentage of the monthly amount for covering the work Trinkgeld involves but also because of its role (in the example of using GNOME as your desktop, then surely supporting the GNOME Foundation is a good thing). This means we could have more options of payment services between the middle-actor and the app developers since we’d not have to tie it to the users directly anymore. And users would also be safe as they only have to make sure they are eligible to donate to the middle-actor (GNOME Foundation/Fedora/Ubuntu/etc.).

As for the exact way the money is to be divided, it’s something that needs to be discussed as there are many ways we can do that: should we just simply divide the money according to how much an app is used? Should we always have a minimum for an newly installed app, even if it’s been used just for 10 minutes in the whole month? etc. How the money is divided is not the main discussion to be held at this point.

Having a middle-actor also means that TrinkGeld should have a server part where it gets the information from users and organizes it for the distributor. This increases the complexity of the project but as I think it’s still less complex than what the approach #1 above implies.

Tracking Apps

I know some of you will have already frowned when you read about “tracking” apps. Yes, the apps you use and how much you use them is your own private information, but we can make Trinkgeld do its job and still respect everyone’s privacy. The obvious solution for that is to anonymize the data by doing the tracking and calculation in the client, and only send out the amount per app. It’s one thing to send out info like “Tor usage avg: 80 hours”, it’s another thing to send out, “Donation for Tor: 5 EUR”. How much information one could actually deduct from the amount given will depend on the way it’s divided + the customization options we give to users (see next section), but it shouldn’t be that easy. It will also be important to understand who gets to see this information (do you trust Fedora to see this information?), and of course users should be able to tell Trinkgeld not to consider a certain app…

Besides, users should trust the money distribution partner, or middle-actor mentioned in the section above: i.e. if you are using a distro and you don’t trust the organization behind it, then maybe find another Trinkgeld provider (and/or switch to a new distro!), or maybe this service is not for you.

As for the technical solution for tracking the apps, I don’t know of any cross-desktop library capable of offering this functionality out of the box, but at least in GNOME Shell there’s already code in place that we can extend to implement whatever functionality TrinkGeld needs. I am sure other desktops could do something like this too.

Humble Indie Bundle style tweaks

The Humble (Indie) Bundle is a genius idea! I usually buy bundles that have games for Linux, and it’s awesome to be able to choose how much money each game gets (so I can make sure I pay more for the games I will play then for others), as well as giving something for charity. A good complement to the TrinkGeld system would be to offer some choices of how the money is distributed. I imagine that the TrinGeld desktop app could pop up once per month showing the calculated division of the donation and options to tweak it. Say you realize that you’re always giving most of your money to one single app (I expect this to happen for web browsers for example), then you could tweak how much that app gets, and choose other apps to donate to because you find it to be more fair that way. Or you could choose organizations related to the software you use, much in the way that Humble allows you to donate to charity: e.g. if TrinkGeld is being run by Fedora, it could still offer the GNOME Foundation as one of these organizations, considering its role in the technology that powers the user’s desktop + apps. Here’s a mockup of what I imagine it would look like (we’ll need real designer work if TrinkGeld goes from idea to code, but for now you’re stuck with this):

TrinkGeld mockup

As you see, there are lots of possibilities here, but this post is getting large so let’s leave it for a later discussion.


Usually I blog more about stuff I’ve done than ideas that may never happen but TrinkGeld has been in my mind for a while, so I really wanted to share it and ask what Linux desktop users out there think of it. I know it’s a challenging project to set up, and that a lawyer may have to look into it, but it could may be worth the try. I’m really curious to know what Linux desktop users think about this. Do you think it could help getting more people to donate? Would you use it? (comments in this blog are moderated so you may want to use the social network where you found this post mentioned in order to comment on it if you don’t want to wait until I approve the comments, thank you for understanding)