A Revisited Effort to Get Paid for an Open Source Project

With a New Approach

Photo by Fabian Grohs on Unsplash

A few months ago I wrote about my difficulties making money from an open source project. I pinned my pain points to collecting usage analytics in order to understand how my project was being used, and adding payments to an already distributed application that runs locally on a user’s machine. This follow-up post will introduce a potential solution, but first I’d like to discuss one of the most common responses I got from readers of the initial article:

“Why didn’t you just use [Github Sponsors | Patreon | Buy me a Coffee | …]?”

Like many other developers I tried a handful of these but ultimately decided to seek alternative strategies. Most people don’t have the kind of audience to make donations a viable path. It’s made even harder by the fact that these platforms target individual people rather than companies, who are far more capable to monetarily contribute back to the developers.

To reiterate, two main issues identified:

Distribution of a developer tool with a traditional package manager, or other traditional hosts yields no actionable usage analytics. Getting usage data requires writing code specific for this task, and then building/buying infrastructure specifically for storing this information.

Collecting a user’s payment, validating that payment at download/install/runtime tightly couples your project’s code to the payment system and all the complexity it brings. For most projects, this is both challenging, time consuming, and probably unnecessary.

Let’s build a solution

After a lot of discussion and coding, I had built the bare essentials of a package distribution platform that addresses these pain points: Scarf.

Scarf is a way to distribute your software so that usage data collection and payments are built in and completely taken care of for you. Once you upload your packages to Scarf, your users can install them in a way that will feel familiar:

> scarf install your-excellent-tool

Scarf will install your tool inside of a thin wrapper so that when the user runs your-excellent-tool , anonymized usage data is automatically collected and sent to Scarf. You’ll immediately be able to see how your software is actually run, not just when it gets downloaded.

This unlocks an exciting amount of functionality. You’ll be able to answer questions like:

Is my tool actually being used? How often, and for how long?

Which features of my tool are being used most?

Is my tool working as expected? Crashing unexpectedly?

What platforms and versions are my users running?

The automatic data capturing that Scarf offers is great for analytics, but it also creates a shift that is more fundamental. Now, just because you grant the ability to use your software for free, doesn’t mean you have to forfeit your software’s data. It’s hard to overstate how useful this data is for helping developers deliver better software to everyone.

To do anything more than simple donations, collecting money for your project is not trivial. Whether you want to charge for installation, usage, usage without sending statistics, or anything else, Scarf lets you do all of this without writing a single line of code. Just upload your package, and you have control over what your users pay for and what they get for free.

A second attempt at making money from an open source project

With the basics of Scarf built and deployed, I was ready to revisit my efforts to monetize Toodles. By putting it onto Scarf, I’d at least be able to see usage behavior of new users, and maybe even get a few people to purchase it. One concern was that since Toodles was already distributed through other channels, it was hard to know if anyone would bother installing Scarf just to more easily download it. I was delighted to find that they would!

After uploading my package to Scarf and directing new users there to download Toodles, I pretty quickly saw real usage data.

Once users installed Toodles through Scarf, I could immediately see people trying it out on my package dashboard. If only I had this data 6 months ago!

This on its own was exciting to see. I can now see Toodles being used in real time and the Toodles codebase itself has absolutely no coupling to this whatsoever.

It was finally time for another attempt at a payment option. I connected a Stripe account to Scarf, and set a private usage price to a (hopefully reasonable) price of $5.

I had a sellable product for Toodles that was set up in just a few minutes

Shortly after having this payment option set up, there were actual purchases! I’m now making money through Scarf, and I get paid out daily through Stripe. It’s encouraging to have a new stream of revenue (modest as it may be) that I had given up on only a few months ago.

Not long after my first sale of Toodles through Scarf went through, the money was in my bank account.

Try it out

By distributing Toodles through Scarf, I was able to turn a fun hobby project into a developer tool I could make some money from. The revenue so far is small, but now the money it generates is limited by how valuable the tool itself is, and not by difficulties around analytics and payments. That should be the case for every developer, so I hope it can help you too!