Open Source Business Models
Note that this is completely based on my experience and research from a user perspective, having used some open source for a cost and seen cost for open source software
Open source and money is an interesting topic. Many who are new to open source might wonder what’s powering open source software. It is true that many open source projects, especially the small ones, probably are written and maintained by one person or a few people, at no cost. These kind of projects are usually built as a fun side project or as a project to scratch one’s itch (issue) so that they can do some task with ease.
What about the big open source projects? What about the ones that are backed by a single company? Or multiple companies? Of course along with a community usually
Before getting into all that, let’s understand a bit about why open source might need money. open source projects are built by real people. Like any other project, open source projects too need people, time, energy, effort. When so much is involved and people are involved, no one would devote their time and energy unless they want to and have some reason for it. Different people contribute to open source for different reasons. Some people like to contribute to open source because they think it’s cool, some people do it to learn from the experience, some do it to get more experience and expertise (kind of related to learning again), some people might just do it for money, or maybe for a mix of the above reasons. These are just some reasons I can think of or have guessed based on my experience. Of course I don’t know all the reasons
Some people actually work full time on open source unlike many others who have a day job and contribute to open source with whatever extra time they have apart from work and life stuff. When working on open source full time, it simply means that open source is their full time job. These people surely need money and can’t create open source software for free in a sustainable manner as they need money to survive and make a living like any other person
So, what are the different business models for open source? Basically, the question is - How can one earn money by working on open source?
Donations / Supporters / Backers / Sponsors
One of the most basic money models you see for open source is donations. Yes, you read that right. If you didn’t know this, I’m not sure if it’s surprising or normal for you. But the word “donation” is funny. One can probably call it as an voluntary contribution to open source than a donation. Giving money to open source is also one kind of open source contribution according to me. Apart from contribution, it can also be called as supporting or backing an open source software, that’s the actual term people use. So, how does it work? Maintainers of open source projects setup a way for their users, contributors, supporters, well wishers or anyone in their community to wire them funds. Also, it’s not like people are giving money for nothing. The open source project also provides lot of value.
Let me give an example for these based on my experience
Freecodecamp is a renowned website and organization on the Internet among the developer community. In fact I learned a lot about web development basics from Freecodecamp website, in my initial days of learning JavaScript, HTML, CSS and also the NodeJs runtime. And this was way back in 2016-2017 I think
Freecodecamp has come a long way now. They have worked on their curriculum and improvised a lot on it and also widened the ways in which they can teach people to code. They have YouTube channels and a blog / news platform of their own and also a very big community. Fun fact, Freecodecamp GitHub repository is one of the most starred repositories and it has been the case for a long time from what I know. And it is still the case as of this writing. Here’s one site that shows the same by using GitHub data -
https://gitstar-ranking.com/freeCodeCamp/freeCodeCamp
I don’t know about all the ways that Freecodecamp gets money and sustains their efforts. But one of the ways that I know is donations
https://www.freecodecamp.org/donate/
There are also many sites which you can use to get help with funding.
I also know one that has been discontinued now - Gratipay
There might be more, these are just a few that I know of. Each has it’s own features. You can also use some traditional digital methods or even direct cash for funding.
Paypal is pretty popular. Open Collective is specifically popular in the open source software world where maintainers and communities get funds from individuals, groups of people, organizations. It’s also open source! I just found that out while writing this article - https://github.com/opencollective/opencollective
GitHub Sponsors - It’s a feature that has been recently released as of this writing. I still don’t have access to it. I think some specific people have access to it. But the way it works is the way usually sponsoring works. The receivers of the sponsorship decide what they give back to the sponsors as part of their sponsorship deal. It can be anything - something as simple as giving a shout out in the open source project’s website, or a meeting every month or some swag. It could be anything really.
Patreon works in a similar way too. Usually the model is, people who contribute money get some extras or exclusive stuff, or they get things sooner, more like sneak peaks, premiers etc
Librepay - I don’t know much, I have only heard of it. I got the link just now while writing this article.
Buy me a Coffee is pretty popular too. It’s like the sponsors are buying coffee for the maintainers :p ;)
There are also some interesting ways to earn money in the open source software world in case you are a contributor and you contribute to others projects, including big projects
I know two platforms that provide money when you contribute to an open source project - Issue Hunt and Bounty Source
So, yeah, these platforms have a way for consumers of Open Source software to put a bounty or fund into some pending issue / feature, and then contributors can work on it and get that fund or bounty. It sounds pretty cool, right? ;) But I don’t know, I have never tried it out, so I’m not sure about the experience of all the stakeholders. I did wonder how it’s weird that if the funding is provided by an external person, wouldn’t the maintainer(s) work on it and get that money? I mean they maintain the project. But yeah, I have also seen maintainers themselves putting a bounty on an issue to get help from others to solve some issue instead of them spending time and money on solving the issue. I think it’s kind of like freelancing but in open source software ;)
What are the other ways?
Swag
I know some projects get money from selling cool swag or any items with their branding.
I have seen Freecodecamp sell hoodies, tee shirts and all. Heres’ one linke for their store items - https://teespring.com/stores/freecodecamp
This idea of earning through swag is so true in many other domains too. All those Marvel movies, Disney movies, did you know how much money they would get apart from their box office money? The extra money comes from all the swag and content around the movies. For example cool school bags with a super hero, cool posters, cool bottles, cool what not, and of course, not to mention toys, and also all the games around the movies. Anyways, now let’s get back to open source ;)
What other ways can open source earn money?
Paid Books, Ebooks, Tutorials and other learning material related to the open source project
I think the mantra over here is like -
" Complex open source software, lot of features, lot of ways to do things, let us help you do it the best way "
By the way, a similar mantra is true for probably anything, not just for software, not just for open source software. But yeah, it can be used in open source software too.
I mean, sometimes I wonder why can’t software and tools be built in such a way that the user cannot use it the wrong way, more like it should have so much conditions and constraints that the user cannot use it the wrong way. But I guess it’s a hard problem to solve, or people are just overlooking it. But yeah, sometimes, the best practices, it differs on a case by case basis. In any case, there’s a lot of flexibility, and lot of ways to do the same thing (weird, right?), and especially some anti patterns, or more like - ways where the solution would do more harm than good. In such cases, it’s better to learn from the documentation, or just learn from the creators of the open source project or from the contributors, or from the pros (professionals) who are neither maintainers nor contributors.
But if you are the creator / maintainer / contributor, you can earn money this way by just saying " I know this stuff, let me teach you " and putting paid content out there on the Internet and real world and doing workshops and conferences (talks, keynotes) and what not :)
Some examples I have personally seen are -
Web pack tutorials by one of the core maintainers
Long ago, I also remember seeing a Web pack ebook, or may be I don’t remember it right. But I saw this paid tutorial content stuff on the webpack main site. It was a bit fishy for me at the time, but it seemed like a nice way to earn money and sustain the project, I guess. Now there’s a separate website hosting the tutorial and also probably multiple other places where the maintainers get some money to sustain the project.
Openfaas open source project has a paid ebook https://gumroad.com/l/serverless-for-everyone-else and other stuff around serverless.
Vue project has some links to websites that teach Vue
Apparently some of the people are core Vue.js team members and they also contribute some percentage of the money back to the open source project.
Sometimes I wonder if software is intentionally made complex for reasons of money and what not. Maybe I’m wrong, or maybe….I’m right?! 😅
Consulting and Tech Support:
I think the mantras over here are
" We know what we are doing " " We know our stuff " " We created this stuff " " We contribute to this stuff " " We are The Experts "
Consulting and Tech Support are a big thing in the software world and it applies to the open source project world too. Given that there are so many open source projects, and some of them especially big and complex to learn and understand and use in some common use cases, and especially needs a lot of work at an organization level too, to do things at scale, for this reason, consulting and tech support are pretty popular. Consulting for expert opinions, strategies and basically anything related to the open source project. Consulting is one of the most coolest things I guess. Sometimes people do consulting and can get away after the consulting is done without worrying too much about the consequences of the consulting they have done, decisions they have taken and actions they have done. Anyways, consulting is still one of the prominent kinds of work in all domains, including open source projects.
Tech support is important when you need help and you don’t know what to do or are yet to learn what to do
Some examples of consulting and tech support I have seen are -
OpenFaas
I got these OpenFaas links just now while writing this article. They have lot of different paid plans to help organizations and individuals.
PostgreSQL consulting when it comes to PostgreSQL project. I didn’t know about this until later. There are many companies who survive solely on the basis of expertise in databases like PostgreSQL. PostgreSQL according to me is like a beast with lot of features and complexity too. I’m yet to learn it really well, but there are many companies that contribute to it and are experts and get lots of money for consulting and tech support. One example I know of is - https://www.2ndquadrant.com/en/
On demand tech support - there’s also on demand tech support I think. For example, having engineers on-call and get help when there’s an issue in production at midnight or peak hours. I haven’t seen any open source project provide this kind of support explicitly, it’s only a guess that this might be also a thing as part of tech support, as this is very usual in some companies - having issues at non-work hours in the production when it’s a server software.
Kinvolk is an open source company which provides consulting and other services https://kinvolk.io/
RedHat - it’s a pretty popular company. Unfortunately I don’t know much about it and it’s business models. I have only heard that they do have tech support solutions
Managed open source solution. Lot of companies use open source. Even you would be using open source a lot, you just might not know it if you aren’t completely aware of all the open source softwares you use every day. Linux, Android, Firefox, so many programming languages, VS Code, Atom, Eclipse, so many open source stuff. When companies use and depend on open source it becomes tricky for them in some cases. One of the hard decisions while choosing open source is - how good will the open source software be? Will it be maintained well? With bug fixes, performance improvements, new features, fixes for security vulnerabilities. These are pretty common things that a team thinks about before using some open source software. If they don’t think these, they probably have an answer and a solution for most of these questions which is usually like - they will fork the project and maintain it as the last resort.
Tidelift is a company that’s trying to help organizations adopt managed open source softwares, by bridging the gap between the organizations using open source softwares and the maintainers of open source software and ensuring quality at all levels, and ensuring all parties involved are happy.
Open Source Job Role
This is an interesting new kind of job role I guess. You can get paid by your company to do open source as the company gains from open source and expertise in open source is important for the business so that they can get clients saying that “We contribute to open source, we create open source projects, we are experts”
This is a pretty popular thing actually. You can notice a lot of companies investing in this area - hiring people to do open source, contributing to open source and having goals, and also ensuring that the value is two way - they provide value to open source and they also get value from open source for their business
This is also kind of related to the section “Consulting and Tech Support”. The thing is, some companies do open source completely and fall under the “Consulting and Tech Support” and get money. Some companies, who did not build the open source project, gain from the open source project by building tools around it or building on top of the open source project and providing it as a closed source product to clients.
One example is, for example some companies build on top of the famous Kubernetes project with specific features including enterprise features and sell it as a closed source product to clients. As part of this, they also contribute to the upstream kubernetes open source project depending on the kind of features they need in the upstream (main) open source project that will help them build features in the downstream (fork) closed source project. Many companies are doing this. Sometimes the downstream project is also open source.Some example companies are the cloud companies who provide kubernetes as a service. I think they build on top of kubernetes, but I’m not so sure since it’s all closed and not transparent. Another example is VMWare which provides VMWare Tanzu Kubernetes Grid
Hosting and maintenance
When you have an open source project that is some kind of server side software, which is a long running process, you need to host it somewhere for many people to use it. Or you can just run it in your laptop if you are the only one using it :P
There are many open source softwares that are server side softwares which need to be hosted for it to be used by many people across different places, by using the Internet or some private network.
One could host the software themselves usually, as it’s open source and almost all the guides to host it is usually present, unless the open source project really doesn’t want you to host it yourself! So, how do open source projects earn money by hosting or maintenance? What’s the secret?
Well, I think the mantra here is
" Let us take care of hosting and maintaining this software in the cloud or wherever it’s hosted. You chill and take care of your business "
Something to note is, since the project is open source, depending on the license of the open source project, apart from the maintainers, it’s possible that even third parties can take the project and host it and provide it as a service to others.
Sometimes big companies who want to use the open source project just have their own team host it and maintain it - mostly due to cost reasons - when they can’t pay a lot for a Software as a Service (SaaS) kind of plan for the scale at which they use the software. Instead they host it themselves and maintain it, and feel that the cost is lesser that way compared to SaaS pricing.
Some examples (among many!) of such open source projects are -
Kubernetes - this project needs to be hosted in one or multiple machines (nodes) for it to be useful. Mind you, Kubernetes is not a company per se, so it doesn’t host and earn money by hosting Kubernetes. But other companies host it and get money. Many cloud companies provide kubernetes as a service. For example - Google Cloud Platform (GCP) provides Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS). In fact EKS distro is open source now - https://github.com/aws/eks-distro . Do note that Kubernetes is not exactly owned by any one company. But yes, a lot of companies have their employees contributing to it and being some of the core maintainers. One could say it might be being controlled by some set of companies, but yeah, there are foundations and committees to take care of this I think. Cloud Native Computing Foundation (CNCF) is the foundation under which Kubernetes project exists.
Discourse - It’s a pretty popular forum software. Discourse is also a company. Discourse software is open source and provides you an easy way to host it. But if you feel that you would be better off focusing on your business rather than hosting and taking care of the hosted Discourse, then you can get Discourse SaaS.
Some benefits of using SaaS are - you don’t have to maintain the software, which means - you don’t have to wake up at midnight when something goes wrong, also, usually nothing goes wrong, companies ensure that the service is so good, and you also don’t have to spend time, money and energy on upgrading the server software, instead the SaaS will take care of automatically upgrading, applying patch fixes, new features and what not.
Some more examples of companies that provide open source server software, which can be self hosted or you can get their SaaS service
Sentry - https://sentry.io
GitLab - https://gitlab.com
Mattermost - https://mattermost.com/
Paid Extension software or plugins or surrounding tools.
I think the mantra in this kind of business model is
" You like our open source software edition? It’s good enough for most, but sometimes you need more, especially when you are an enterprise. Buy our extension / advanced edition to get features that you will need to manage things at an enterprise scale with multiple teams and many processes "
A related section is - " Paid advanced version for some specific people or companies "
Examples of such companies which provide open source version and an advanced paid version or multiple advanced paid versions of the software on top of the open source version -
GitLab - https://gitlab.com
Mattermost - https://mattermost.com/
OpenFaas - https://www.openfaas.com/support/
Hashicorp Nomad - https://www.hashicorp.com/products/nomad
Hashicorp Vault - https://www.hashicorp.com/products/vault
Note that you might have seen some of these company names in the previous sections too. I think the catch is, sometimes, companies provide only advanced version when it comes to SaaS, and not provide the open source version as a SaaS. I’m not sure about the reasons for this. Maybe it’s just a strategy to get more money? By saying " Hey, we manage the software, and we also give you more features " and not having any other option like just open source version SaaS for a lesser cost.
Interestingly, I have not seen any third parties host Nomad as a service, the open source Nomad software. It’s kind of in the same domain as Kubernetes, and other scheduler / orchestration software. I’m not sure if this is because of some restriction in the Nomad open source licensing or some other reason like - people want to make Kubernetes the defacto and hence not provide Nomad as a SaaS service, but instead only provide Kubernetes as a SaaS service, or if there’s any other reason. I haven’t digged into this much though
Threats to open source projects trying to earn money and run a business?
This is an interesting section. I don’t know much about this myself though, so, disclaimer in advance! :)
When it comes to open source software, one of the primary questions I get from first timers who hear about open source is " But how do they earn money if the source code is open ? Won’t someone steal it and earn money? "
This is an interesting question.
Here’s where legality - laws and legal stuff comes in.
It’s a common misconception that open source software by default means free software - free as in free lunch, no cost, no money to pay. But in reality, I have seen some open source softwares that are open source - meaning source code is open, but it is paid, and you need a paid license to use the software.
Open Source software only means that source code is open / out in the public, primarily the Internet.
But yes, it is true that a lot of open source software is free of cost, and one doesn’t have to pay to use it.
But how does one know about the restrictions of using the open source software? Here’s where the concept of Open Source Licenses comes in. It’s something that some people might not know about though.
Open Source Licenses are Licenses that people use for Open Source Software. There are also licenses for Open Source Art, Open Source Hardware, but I have not worked with them, so I don’t know about them.
You can search the Internet to know about Open Source Licenses, some of them are pretty small and easy to read, some are pretty long and contain some possibly complex words, usually for legality reasons, and are very elaborate. I have no idea why legal documents are hard to read, but anyways, if you keep reading the licenses, and do some research, you will get the hang of it :)
You can find popular licenses over here
https://opensource.org/licenses
It’s usually recommended to use the popular existing licenses based on your use case, but of course, no one is stopping you from writing your own license for your open source software :) I guess you could ensure you have lawyers beside you to help you with drafting the license so that people don’t find loopholes in it and use it against you and your interests!
Each license talks about different things. For example, similar to copyright, in open source license there’s this concept of copyleft ! ;) The licenses talk about how to use the open source software, and if it can be used in commercial environments to earn money, if it can be modified and distributed, and what are the conditions to do so, and if it can be modified and kept as closed source software but distribute only binaries or provide the software through a network. There are so many things that goes into some of these licenses, whereas some licenses are too simple and grant the users to do anything with open source software. Such licenses are usually called as very permissive licenses.
GitHub hosts a nice website to give distilled information about some of the popular licenses - https://choosealicense.com/ but of course, the main complete license is a must to read if you want to use it. The distilled information is to only give a layman an idea about what the license is basically about and is no substitute for the actual license
So that’s the answer to “can someone steal my open source?”. It really depends on what you define as stealing and accordingly have a license to prevent that situation
It’s important for companies that thrive on open source, especially open source projects built by them, to have a good idea about the pros and cons of their project’s open source license and how sustainable their business model is and if their business can be brought down by someone else by using the same open source project that they built.
So, in short, from whatever knowledge I have, I think open source licenses could be used to help the project and the company behind the project that’s trying to earn money and also sustain and also provide the project as an open source project. Or they could just have a closed source project, you know?
One example I noticed in terms of open source project by a company and company trying to use open source licenses to sustain their business is - Cockroach DB by Cockroach Labs https://www.cockroachlabs.com/blog/oss-relicensing-cockroachdb/
CockroachDB company had to relicense their open source project so that they can sustain their business in the modern era where there are bigger companies that can easily provide their open source project as a service and that too at a big scale and also attract a lot of their customers.
I’m not exactly sure about why some of these companies are so hell bent in providing an open source version of their product. But it’s surprisingly nice to see companies provide open source core versions of their products and sometimes complete open source product
Why not closed source? I don’t know. There are only a few things I can think of. One of the key things about open source projects is - a lot of trust. The open source projects are very transparent in terms of code and issues in the code. One can read the code, understand how good the project is based on multiple factors. Especially when it comes to developers using the open source project, the users (developers) can easily go and contribute to the project that they use - fix issues, build features. It’s a totally different experience. There’s nothing like having the ability to go and fix an issue that you are facing, given you have the time and are interested to do it. It’s only possible in open source projects. In a closed source project you just have to go and open a ticket with the customer support and wait for them to fix it. There’s no other way.
Conclusion
So, those are some of the ways in which people and companies building and contributing to open source earn money. These are the only ways that I know of. If you know more ways, please do comment below! :)