Making a living from Open Source is hard. Like many things, you have to invest the time first to make the worthwhile thing, then you can 'sell' it.
The difference with Open Source is that once 'the thing' is ready, it's also usually freely available. At that point, as we have seen, many individuals and businesses are not incentivised to part with cash for the thing.
The whole problem of funding for Open Source is a complex one and it's not something we're going to solve easily here.
Most folks I know in Open Source aren't making a living off the Open Source thing itself, but rather on adjacent services and products.
Oftentimes it's through consultancy, either directly related to the Open Source thing or not.
Taylor Otwell, creator of the Laravel web application framework and founder of Laravel, LLC. He spent years building Laravel (the framework) up whilst working full-time as a developer.
He also used Laravel to build products to help other Laravel developers.
Those products are how Laravel makes money. In fact, it's those very products that have enabled him to set up Laravel, LLC, which now employs multiple engineers to focus on improving both the Laravel framework and its ecosystem of free and premium tools.
Arguably the most valuable piece in this whole situation is Laravel the framework. But the code itself isn't really the thing that has value; it's what it has enabled people to do.
The fact that this 'enabling' code is freely available to anyone is the very reason that it's become so popular and made Taylor into a millionaire. Because it's enabled him and thousands of others to build robust SaaS web applications rapidly.
While there are counter-examples where some Open Source library or app has become hugely popular and captured a very appreciative audience who are more than happy to sponsor it, this is by far the exception and not the rule.
My own personal Open Source journey is very different. I believe that starts with the popularity of the specific things that I've built.
Laravel is popular because it's high quality, and quite general-purpose. Something low quality and very niche isn't going to become popular easily.
I always strive to build high quality solutions, but making something general-purpose is hard, either because there are already many competing solutions out there or because the problem it will solve is a complex one, so it requires investing a lot of time.
That doesn't mean it shouldn't be done, but just that staying motivated to get something finished is harder.
One proxy for popularity we can look at is usage/downloads. The combined downloads of all my packages is somewhere around 300k. That suggests a sizable enough user base of people and businesses who are, to a certain degree, 'dependent' on my work.
But it's nowhere near the 300 million downloads that Laravel has.
While the tools I've built are clearly useful, they're probably not enablers in the same way as something like Laravel is. They're tools and they make people's jobs (and hopefully lives) easier, but they're not unlocking copious amounts of potential value for them.
Still, right now, I receive approximately $65/month in sponsorships for all my work, which I suspect even in the wide world of Open Source, is actually quite a lot.
While I appreciate every single penny and dime, the reality is I couldn't possibly justify spending all of my time supporting or improving my Open Source projects just yet.
(Of course, I do spend many hours and days working on my projects... in between other work. So that time comes at the expense of other pursuits.)
I'm taking consultancy work and also building paid products, but that's a risky investment too. And it comes with its own challenges: once you've got paying customers, your focus shifts towards supporting them directly, pushing your Open Source projects down the list of priorities.
So how do we change this situation?
There are a few examples of folks doing this really well. One that sticks in my mind is from a few years ago when Caleb Porzio (inventor of Laravel Livewire) released a package called Sushi as sponsorware.
He wrote about the experience later, sharing his thinking and process.
This was enabled by GitHub Sponsors' ability to make a private repo accessible only to sponsors.
What I liked about this was that he tested the waters before making the package available by sharing a slick, brief video of how it worked. That way folks could immediately see the value. Then when it came time, they were clearly more than happy to part with their cash to get exclusive access to this powerful new thing.
I'm trying this more myself, getting folks excited and maybe teasing them a little with just glimpses of the thing so they get to see the value.
This is straight up Marketing 101: show people what they've been missing in their life, show them how good it will be when they get it, make it scarce to create demand and then put a till/ticket booth in front of them to restrict access to only those who pay.
Some Open Source purists will dislike this approach. But there's nothing wrong with this at all. While we may not always like it, this is the way the world works. And if it enables you to keep on building awesome, useful tools, I say all the more to you!
Another model is to offer sideline benefits. GitHub Sponsors even suggests this when creating tiers, but you're not limited to doing this just via GitHub Sponsors!
Basically it comes down to giving your sponsors more than just access to the code or the heartwarming feeling of knowing they are doing the right thing; if you can give them something that they can get real, tangible benefits from right away, that could be a huge incentive.
It could be as simple as:
If you can make it something that folks will see real value in but that doesn't require a huge amount of effort or investment on your part, it could be just the ticket to unlock more sponsorships, getting you closer to making your open source work earning you a living.
Not only individuals, I actually noticed a growing trend of open-sourced startups within the AI community. Maybe their strategy is making live from VC, open-source is just for building a community.
So I hacked this side project https://starmail.host for transforming Github stars into Email audiences, not sure if it helps for your open-source living startegy. Still in early stage, any feedbacks are welcomed :)
This looks really useful! Thanks for sharing
How do you think open-source developers can strike the right balance between creating valuable software for the community and sustaining themselves financially through sponsorships and other means?
It's about choosing where to invest your time carefully. It's fun getting swept up in the excitement of getting thousands of downloads and iterating on features and code towards perfection, but... while there's some value in that, if it's not paying the bills, you have to set appropriate boundaries.
I set myself limits, like if I have an idea for an OSS package or library, I will try to make meaningful progress in a single week. I will then share what I've been doing on Twitter and see the reaction. If it's good, I may spend another week on it.
I'll stop at that point and let it run for a while on its own while I go and do something more financially productive.
I believe utility NFTs written by devs who value the open source community will help pave the to financial success for OSS devs. Do you have an onion on nfts?
We are also considering the project at our company. It's an honor to come across this post during our consideration phase. Thank you for sharing valuable information!
You're welcome. Good luck!
I see open source a branding and marketing effort for your software business. It's the equivalent of having a popular blog, or podcast. There's many opportunties, like upselling premium features (tiptap does this). Or selling placements for business on the github repo it self (tanstack does this).
I owe my career to open source and feel a responsibility to contribute. I've created multiple libraries, and now working on a full open source product (dir. zip). There's also a big difference between developer tools, and fully featured products.
I agree, it can be seen as a marketing tool for an established business already. But, as demonstrated in my article, there are quite a few solid examples of folks already making a living directly off the back of Open Source tools and products without having the business in place first
It's truly great to see that many people can pay their rent by working on open source day-to-day
Agreed! I hope it continues to grow and the many many OSS developers out there giving of their time get rewarded accordingly. But I do think for that to happen we need to change our approach to Open Source a little and that may even require legislative support
True, the approach could use some change, and I think that legislative support may be coming via crypto. I have built a system that allows users to sell utility tokens by scanning a upc code and issuing a command. I have been working on this for a few years and I've managed to turn each upc code into an "operating system".
Since there are 1 trillion upc codes, it only makes sense to open it up to developers to build on top of. Imagine scanning a upc code and being able to program it, push/pull from its unique repository, add forever immutable files to the unique hard drive, listen to music ad free, sell tokens from the attached coinbox to earn matic.
Three coinbox concept is one of my proudest ideas because these utility tokens are sold peer to peer. Meaning if you own a certain type of upc nft, and its possible for you to earn by selling tokens AND combining that with building web infrastructure for clients.
I'm only scratching the surface on what these things can do, but to circle back to your point, I truly think NFTs will be the game change for open source. You can see an example of my nft operating system in my profile. Click on the "just launching" button to see.
Selling a pro version of your package is also a route I have seen some open source authors pursue. Oban (Parker Selbert), Sidekiq [1] (Mike Perham), and some others have even found success this way.
Might be of interest to someone reading this; I built a service to deal with the infrastructure of putting a software package for sale online: https://codecodeship.com/blog/2023-04-28-economics-of-paid-libraries
[1] https://codecodeship.com/blog/2023-04-14-mike-perham
I like this too! If you can create enough differentiation and an easy upgrade path, it can be a nice way to level users up to being paying customers without forcing them to re-platform
I see this mostly with paid for add-ons. In the ecosystem I work in, that mostly looks like Statamic add-ons (https://statamic.com/addons) or Filament plugins (https://filamentphp.com/plugins)
Absolutely, getting feature segmentation right is key. You have to offer free users a full solution to some problem, and then figure out which advanced use cases some users have and would be willing to pay for. Sidekiq is really the textbook case here, but I think it can be applied to many other libraries.
For example, one of my users is trying to make this work with an HTTP caching library. His pro version includes advances features, like supporting HTTP range headers.
Nice article, Simon, and great to hear about your journey. I too am working with an open source project and its separate commercial arm. The thing is, marketing doesn't come easy to those who prefer to code. Social media - lot of people do not like it! - (even me) - but it is something we all need to master, as well as basic communication skills, if we want our projects, OS or otherwise, to prosper and grow. Sponsorship, too, is another very specific case. You have to offer access to an audience that the sponsor wants to connect with. All the rest that most people come up with: bronze, silver and gold "packages". are a waste of time and effort. So your simple suggestions are a really good start, because those are things that you can use to begin to build an audience. Just be mindful that then you have to harness that audience so you can make it available to any potentially interested sponsor. Make sense?
Thanks Janet. I think you're right and this is the challenge with sponsorship: while some sponsors will approach it as "I already get value out of this, so I think it's worth x to me," others will most certainly be like "well, I already get the thing for free, so if I start paying, what else can you give me"
I wish we could shift that latter mentality, but I think that's kind of impossible. So yes is does take considerable work to cultivate and maintain the audience. But to a certain extent that can come from just providing a great experience around whatever you're building... though this isn't guaranteed
Some other options (depending on your project) are consulting/support services, hosting a version to make it easier for people to use, or offering "premium" features under a commercial license.
Yep agreed. I like this approach of offering an "official" hosted version and it seems to be quite popular. But that also introduces challenges of its own and shifting focus which can make it hard to support both sides of the project
It become something of a two-headed beast
Hi, thank you for this post. I'm in the same boat with my open source project. First time marketing, and I have a solid product. How many posts did you have to make before you started seeing engagement? I'm posting in various places and getting zero traction. Thanks again for sharing this encouragement.
I use the sponsorware strategy myself for my open source projects and have been very happy with the results. In my case, I restrict access to certain npm packages exclusively for sponsors in the initial stages.
Other effective approaches include:
Moving forward, I'm eager to explore the potential of funding a project through a commercial license. This means the project remains open source and free for private use, while companies are required to purchase a license. Admittedly, controlling this aspect is quite challenging.
Indeed a true story.