You can study, use, modify, share, and sell an open source project. The latter may sound contradicting or even controversial, however, it is inferred by one of the fundamental rights granted to you by the so-called “four essential freedoms” of free software (i.e. “The freedom to redistribute copies”) as well as by the “Open Source Definition” (i.e. “No Discrimination Against Fields of Endeavor”). In this article, we will explore the different ways to make money with Open Source.
Before we begin let’s clarify that this is not an exhaustive list but rather a collection of successful monetization strategies I have encountered over the years. I will try to provide examples for each strategy but please don’t get mad if I miss a very characteristic or popular one. I’m trying to keep things short. If you are after more opinions on the matter, this Wikipedia article is fairly decent, while I have previously been involved in a related study.
You have written a piece of software or designed a piece of hardware and you wouldn’t mind making some money out of it.
After all, you have spent a lot of time, your solution may save others money, and bringing in some extra cash
is not inherently bad, so why not?
You would also like to share your solution with the world, so you decide to release it with an open source license. For the time being, I will not delve into whether this is a good idea. Perhaps I should discuss this in a future article on “Why you should open source your project”. Nonetheless, I will assume you have a valid reason for this move. In Layman’s terms, publishing your work with such a license means that anyone is granted the four essential freedoms we mentioned earlier. They are free to study, use, modify and share your work. They don’t even need to ask you for permission, they can just do it. There is of course more to it, licensing, trademarks and so on, but I will skip these details.
Enough with the intro, let’s see how you can make money with your open source software or hardware.
Donations, sponsorships and crowdfunding
This might be the most obvious way to make money with open source. Since you cannot “force” others to pay for your work, especially software, you have to rely mostly on their goodwill. This strategy is based on forming a community around the project and having it support the project in many ways, including financially. This includes anything from one-time donations, to regular sponsorships, selling merchandise or organizing crowdfunding campaigns to raise money for particular project-related milestones.
One-time donations and sponsorships are the simplest form of monetization.
You can easily set up a Paypal link, a Patreon, or a buymeacoffee.com page.
One should seriously consider GitHub sponsors which is becoming increasingly available and has the benefit of being integrated with GitHub. This means your users can find it right along your project. With GitHub sponsors, as well as most of the other services, you can receive both recurring and one-time donations. Many projects welcome individual donations via GitHub’s sponsorship scheme, e.g. nlohmann/json and Arduino. Another cool way to enable donations close to where the “action” is happening is with Algora. Algora integrates with GitHub to offer bounties for solving bugs or tipping a contributor at the pull-request level.
Relying on donations from individuals, however, is not very sustainable. Ideally, you would want part or the majority of your sponsors to be companies, especially if they are utilizing your work. In fact, in many large projects such as Linux, curl and others, the majority of the sponsors are companies or organizations. They can afford allocating larger amounts of money to sponsorships and may do so on a regular basis.
Selling merchandise is another way to make money with open source. You can sell t-shirts, mugs, stickers, etc. with your logo or project name. It’s a great way to increase the “belonging” feeling of your community and to raise awareness of your project. Examples of open source projects that sell merchandise include Apache and the Open Source Initiative. You might see such merchandise being sold in conferences or meetups too.
Crowdfunding is a great way to raise money for a particular milestone or a completely new project that is in some way related to an existing one. For example, crowdfund the development of a multiplayer mode for your game or the next iteration of your development board. During our study on Crowdfunding Open Source Products we talked to a bunch of people involved with crowdfunding campaigns of open source products. I have included some of these projects in the picture below. Do you recognize any of them?
Dual licensing is a strategy where you are publishing your work under two different licenses. The first one is the open source license and the other
is the commercial one. So why would someone pay for the commercial license?
The answer is simple: The open source license is typically a “copyleft” one (e.g. GPL). To oversimplify it, this means that whoever wants to incorporate your work with theirs, they must publish their work under the same license. In other words, they have to become open source too. As you may imagine, this is not at all desirable in commercial applications where the business model depends on the offering being “unique” and therefore by keeping the source code secret.
By adopting a dual licensing scheme, you can offer the same software for free to the community and for a fee to companies that want to protect their Intellectual Property by not releasing their source code. Well-known examples include MySQL and Qt. Here I should stress out I am not particularly fond of how Qt has adopted this strategy, but that’s a different story.
Selling support or consulting
This is a strategy that can allow you to earn a decent living out of your open source project, assuming it provides considerable value to a few companies.
The idea is that while you offer your project for free, it is not trivial to customize for particular use cases, integrate with other systems, or even
troubleshoot issues. This is where you come in. Since no one knows your project better than you and potentially your team, it can be considerably
more efficient to contract you to provide the necessary services, than to occupy employees of the company with this task.
I worked on the same project with some very talented individuals from a company that did this, Pelagicore. You can combine this strategy with the next one and provide a hosted service aside of consulting.
Providing a hosted service
Another, potentially very lucrative, way to make money with open source is to provide a hosted service. This mostly applies when your project can be offered
as a service, usually over a network. While your project is open source and your customers could, in principle, host it themselves they may not want to.
With great power comes great responsibility. Being liable for the operation, and maintaining the software as well as the infrastructure can not only be
difficult but also very expensive. This is where you come in. You offer a hosted service, as well as your de-facto expertise on your own product where
you take care of all the aforementioned tasks.
I have seen this strategy employed by NextCloud, Balena and Mender among others. Offer hosted services along with consulting and you can make a very good living out of your open source project.
Selling a physical product
Similarly to providing a hosted service, you can also sell a physical product. This strategy is the equivalent for hardware-centric products.
While it is less applicable than offering a hosted service, it may make sense for some open source projects.
If your project is or contains hardware designs, then an obvious way to monetize it is to manufacture, assemble and sell the hardware.
If your project is software that needs some dedicated or specialized hardware to run on, this is also for you.
Unlike software, each hardware copy costs money to produce so your users will have to pay for it one way or another. However, since the design is open source, anyone, including overseas vendors with very low operating and labor costs, can manufacture the hardware. In this scenario, a strong community is the key to keeping your users loyal and being their preferred choice when purchasing hardware, despite the higher price. They understand the more they support you, the more you will be able to invest in the project and the more they will benefit from it. It’s a form of reciprocity. Examples of open source hardware projects that have adopted this strategy include Arduino and their legendary Arduino Uno board, as well as Tillitis from Gothenburg, with their USB security key.
That being said, you don’t need to have a hardware project to sell a physical product. You can sell the hardware that is running your software,
e.g. a potentially proprietary development board that’s flashed with your open source firmware.
This is the case of Raspberry Pi and Teensy. Both run (mostly) open source software,
however, the majority of their customers will prefer buying their reference hardware instead of designing and building their own board.
Making money out of open source by selling a physical product can be combined with crowdfunding, as was the case of Micropython’s Pyboard. Micropython is a Python implementation for microcontrollers and Pyboard is a development board that’s compatible with it. Nowadays many more boards run Micropython, but back in 2016, this wasn’t the case. The Pyboard was/is a great way to raise awareness of the project and to get people to use it. I am happy to see they are still selling their boards despite Micropython being much easier to run.
You can further differentiate your revenue stream by providing consulting services on top of the hardware you sell. For example, you may create derivatives of your reference board, customized for a particular client. Remember, your are the outmost expert on your project and there is a lot of value in that.
There are many ways to make money with open source. Some of them are more sustainable than others. They can be as easy to set up as posting a link
to your PayPal account, or as complex as setting up a production line or a data center for cloud services.
The outlined strategies are not mutually exclusive and are can be combined to create a sustainable business model.
Choose the right ones for your project.
Don’t forget, as long as you respect the license and any trademarks you can adopt the above approaches
without being the original author of the project. This is the beauty of open source.
That being said, open source is not a business model, but it can support one. You probably should not start an open source project with the sole purpose of making money out of it but instead, focus on creating value for your community. Do so and the money is likely to follow.