Open Source Software has a poor value proposition for those who create & maintain it.
This poor value proposition holds for both individual open source creators and for the many OSS-based companies that exist today (ex. Vercel, Docker).
To understand what I mean, let's take a brief tour of how open source software is created and maintained, from both individually created projects and company-backed efforts. After looking into how these work, I'll then offer some potential solutions to the problem!
Table of Contents #
- Table of Contents
- Typical OSS Creator
- Why Create OSS
- The Problem
- OSS from Companies
- My Future with OSS
Typical OSS Creator #
We'll first start with a "classic" case of OSS projects, a single developer creating a new project to fit a need they had. Here's a general outline of that process.
- Finds a problem that they have encountered, and creates a unique solution for it.
- Recognizes that many people could benefit from the solution they've made.
- Extracts their solution into its own repository, comes up with a creative & descriptive name, puts the source code on GitHub, and publishes on a public registry, like NPM or crates.io.
- Generally successful projects will also:
- Add tests to ensure the project works.
- Add CI/CD that automatically tests the project and releases it.
- Create a thoughtful README that introduces the user to the project, shows them the value it can provide, and how to install it.
- Writes helpful documentation on the public functions & classes of the project.
This all more or less comes "first". With these things done, the creator then waits for user adoption. Many projects won't ever see much attention, due to poor execution on one of the above, another project filling the use case better, and/or just simply bad luck. So if you're in this bucket, the project just floats on a package registry, maybe seeing a few users now and then.
Successful Projects #
But now let's look at what happens with "successful" projects:
- Users start using your project and are happy that it's solving a problem for them! 🎉
- Users discover bugs in your project, or want new features added.
- In the rare case, you get a fantastic user that fixes the bug themselves and opens a well-formed PR.
- More often, you get an issue opened on the repo with a decent amount of information about the bug.
- Sometimes, you get a poorly written issue / feature request that might be rude or disrespectful to the effort you've put in to create this project for them.
- A very small number of users really like your project and may step up to be maintainers of it, or at least help out where needed.
- Extremely rarely, and if a project is very popular, a user may like your work enough to donate money to you for providing it for them.
Time & Effort #
Hopefully you can see the problem here. There's an enormous amount of time and effort put into creating and maintaining an open source project, with no guarantee that it will even "succeed".
Even if it does, you're stuck with a huge burden of maintaining the project, dealing with a potentially unruly community, etc. At face value, this looks like an insane thing to do. You're putting in a huge amount of time, effort, and knowledge into something that even in the 90th-percentile success case might pay for your coffee once a week.
Why Create OSS #
So why do people do it? Here's the few reasons I've gathered, from both my experience and observations. Feel free to let me know if you have another one.
- Passion for technology and software development.
- Making the world a better place.
- Resumé building.
Let's quickly dig into these:
Technology is cool. So is building software! I think for a lot of people it's fun to build something cool. It's a form of self-expression in a way, similar to making art or writing music, and often carries similar "rewards". You can do it purely just for your own personal fulfillment, but it's really great to see others like it & in software's case, use it!
Making the world a better place #
This one is a little vague, but generally fits any reason that the creator thinks would have a benefit on other people / the world. This can include:
- A project that enhances green / environmental projects, healthcare (ex. the many COVID-19 dashboards made in early 2020), or any "direct" people benefit
- A project that enhances the creation of products/services in some way.
I'm sure there's more here. I hope you get the general idea.
Resumé Building #
This one is probably the most obvious and the most "monetization"-y. To preface, I'm not saying that as a bad word.
Building and/or contributing to OSS gives you something you "made" to put on your resume and gives you a public track record of past work. Especially if it's a hugely successful project, this can be a massive boost for your chances of landing a job in software engineering.
Thinking about this from an employer POV, this shows all sorts of potentially good signs. You can literally see the code they wrote and how they interacted with others. It also often shows #1 on the list, having a passion for technology.
This lends three things to employers:
- Getting a greater understanding of a candidate's current ability.
- Increasing confidence that the candidate will continue to perform to that ability in 6 months, a year, and onwards
- Seeing potential areas a candidate could work on, and what roles they could potentially grow into.
These things can be somewhat conveyed by a 1 page resume, but there's nothing like literally seeing someone's work to understand what they are capable of.
This is especially relevant to those new to software engineering, who may have very little / no professional work experience. Being able to see the candidate's work in a "realistic" environment is a huge benefit to the employer in evaluating these early career candidates, and therefore a bonus for the candidate if they do good work.
So given two relatively equal candidates, these factors could easily land you a job over another person, or lead to the employer offering a better salary.
I could go on and on about the benefits creating/contributing to OSS has on your resumé, but I'll leave that for another blog post. I'll repeat again here though - I don't think this is a "bad" reason. This was a huge motivator for me to start contributing to open source in the first place.
The Problem #
The problem here lies in that none of these above reasons pay money. Software engineers pour hours of time & effort into these projects and often see no return for their hard work. Instead, another company can take their work for free and put it into their revenue-generating product.
OSS from Companies #
Not every OSS project starts from an individual creator. Many of the biggest OSS projects today are built by for-profit companies.
The key difference with these kinds of projects is that the maintainers of the project are paid by the company, and so the maintainers now have a direct incentive to continue work on the project, a job.
However, the fundamental problem is still there, it has just been moved to the company level instead of the individual level. To rephrase the initial statement of this post:
Creating & maintaining open source software lacks a strong value proposition for companies, especially in a profitability focused economic environment.
To understand why, I'm going to break down the types of company OSS projects and then dig into the issues with each.
Types of Company OSS #
Company OSS projects generally fall into two buckets. Some are a mix of both, but I think distinguishing these two is helpful:
- Purely "giving back to the community" projects
- Example: React
- The company isn't seeking to gain anything monetarily by open-sourcing this project.
- However, they may benefit indirectly from it. This is often in the form of what I call "engineering advertising".
- Engineers like cool and cutting edge technology and many want to work at companies perceived to be cool and cutting edge. Open sourcing projects is a form of this "engineering advertising" and may have long-run positive effects on their ability to recruit top talent.
- Upselling projects
- Example: Every OSS startup in the past 10 years. Next.js & Vercel are a prominent one.
- The company has open-sourced their project in hopes that it will see huge user adoption. They've created a hosting platform and/or managed service and/or learning courses on the project.
- Their business model directly depends on the success of the OSS project and by extension their ability to convert some percentage of the OSS users into paying customers.
But unfortunately both these are running into issues, which I'll detail below.
"Giving Back" Projects #
These projects need REALLY strong user adoption to be funded by the company and therefore stay around. They also need to stay perceived as "cutting edge" to keep their positive value for the company's talent pipeline. Unfortunately basically no software can stay cutting edge forever. React was revolutionary when it came out, but these days everyone's new darling is Svelte or SolidJS or (insert x new frontend framework here). Many still believe React is the best choice for building apps due to the ecosystem it has around it, but how long will that be the case?
"Upselling" Projects #
The main problem: these businesses have always struggled to turn a profit. Why?
The primary issue with them is that companies and users don't want to pay for something they can have for free. I'm picking on Vercel here (which i think is a great company and I use their hosting for this blog, it's just a convenient example) but if you want to build a Next.js website and host it, it's really not hard to put it on the many dozens of other hosting services out there. You are then using all of the Next.js team's hard work, but they are getting nothing monetarily out of it.
This becomes especially apparent if you are working at anything beyond the startup level, where the company already has a way of hosting websites. Going to your boss and asking if you can buy Vercel hosting for a project when the entire company is already using AWS is just a non-starter most of the time. They are gonna need to go get that approved by someone in finance, who will have more questions, etc.
The solution to this from some companies is to try to lock down on the most egregious "stealing" of their project. The most prominent is the Elastic License fight that Elastic (the company who makes Elasticsearch) had with AWS, who were taking their project and offering it as a fully managed service inside their platform. AWS responded by forking Elasticsearch into OpenSearch and continuing to support that. The results of this are still playing out, but at the time there was significant blowback against Elastic doing this. So this isn't really a proven "fix" either.
Economic Pressures #
Tech isn't doing so hot right now. The heavy interest rate increases from the Fed and many banks around the world have sent tech stocks crashing. Twitter was buzzing not long ago about "Zero interest rate phenomena" where things were only possible due to an extremely low cost of borrowing money over the past decade. The interest rate increases and the disappearance of these zero interest rate phenomena has led to layoffs in tons of tech companies, and a general tightening of the belt around the industry.
This is going to inevitably put heavy pressure on young tech companies to show their path to profitability. The days of companies like Uber losing money year-over-year are likely gone. For the Big Tech giants, they need to show they can keep growing to justify their sky-high stock valuations, but they are already some of the biggest companies in the world (Yes, this is stupid and bad and a problem with our current flavor of capitalism, but that's for another post).
Both of these put heavy pressures on these "for-profit company" open source projects, which aren't directly earning any revenue for the company. Unfortunately many won't make it and be abandoned, or their pace of new features/bugfixes will slow considerably.
For companies that base their entire model around an open source project in an "upselling" fashion, this focus on profitability could be a death knell. They've already committed to releasing their core product as open source, but many aren't turning a profit from their current business model. If they choose to restrict their product like Elastic did, they risk angering their existing OSS userbase. But if they don't, they face an uphill battle to survive.
I hope these examples have shown why the current OSS models for both individual creators and for companies aren't really working that well. People & companies are putting time, skill, and effort into creating great projects, and they aren't being rewarded in a strong enough way to ensure the project stays alive and healthy. The macroeconomic environment will only put more pressure on these projects. So what can be done?
Revenue Streams #
OSS Projects need new revenue streams. The only one commonly used right now are donations, either by individuals or entire companies. These aren't good enough for someone to stake their livelihood on, especially as those may fall away in tough economic times.
Corporate sponsorships of OSS projects have become more common lately. In the end, these are still donations. There's no guarantee a company will continue to sponsor the project indefinitely, especially if those same companies are currently laying off their own workers.
I'm going to make an argument that will sound totally rational to anyone except those who work with open source software.
If you want to use someone's project to make money, you should have to pay for it.
This is how it works in basically any other industry. I'm even softening it with the "to make money" part. In many cases, you pay regardless of if you make money / are intending to make money from using someone else's work.
The OSS model of "hackers helping other hackers build cool stuff" isn't the case anymore. OSS software is used everywhere, in nearly every company. Those companies are making millions and billions of dollars, and the OSS creators/maintainers/companies that are helping them do that aren't seeing any of those rewards.
- What stops users from simply forking the original project and uploading it to a public registry for free?
- This would likely need to be solved with a new OSS license to forbid this.
- What stops users from simply "pirating" the project, paying once to download it and then just giving the download to other people?
- This quickly opens up the whole existing problem of stopping pirated digital content that no one has really resolved. Except it's worse as you are just giving the user raw source code, not even something precompiled.
- Of course, this is "illegal". But enforcement on this on the internet has been basically impossible across all forms of paid digital content.
Even with these problems, though, this is probably better than the current situation (no revenue stream at all).
But amid all of this OSS revenue model discussion, there's the elephant in the room:
Closed Source Software #
It's everywhere. The vast majority of people who use technology today almost exclusively use closed source software, and are okay with either paying for it directly or being the product to sell to advertisers (if it's social media or search or basically any other "free" internet service).
But developers (in most cases, of those same closed source applications) really hate it. I have often fallen into this category as well.
So why do developers like open source so much more?
- You can see the code.
- It's free.
Seeing the code is great because it allows you to inspect how the thing actually works. This is essential if you want to heavily integrate with it. Documentation is great, but just looking directly at the code leaves you with the most clear understanding of what you're using.
Seeing the code also carries another benefit - a guarantee that if whoever is supporting it goes away, you can take on the burden of maintaining it to add your own features and bug fixes to.
In reality though, how often does this happen? Most of the time if an OSS library becomes unmaintained users will simply switch it out for a similar one, or even just a fork of the same one maintained by someone else. It's very rare for the individual user to begin maintaining a project purely for their own purposes.
The value of the software being free is pretty easy to understand. Developers (and people in general) just don't like paying for stuff if they don't have to.
If an OSS project does the job, why should I pay for something else? It'd have to carry a really strong advantage over the OSS alternative to get people to buy it.
Developers also generally carry an advantage that their skills with developing software make it easier for them to use "hard to use" software that might be extremely difficult for the non-technically savvy. This tends to level out the value of open source and closed source products even more for developers, making them even less likely to pay for the closed source product.
Other Options #
Is there another option that allows users to reap the benefits from open source, while still fairly compensating those who built it?
Honestly, I don't know. PayDevs' solution looks interesting and I won't be surprised to see it or a similar idea take off over the next few years. I also wouldn't be surprised to see a rise in more old-school software "SDK" models, where users pay to get access to the software but then also get access to the source code along with it.
Perhaps either of those along with a new licensing stipulation that if the project becomes unmaintained, the code becomes fully "open" under an Apache 2.0 license or similar alternatives.
My ending advice: This is a space to watch. The open source community needs to adapt its value proposition for its creators and maintainers, because many of its beloved projects are at risk of losing the companies & people that make them great.
My Future with OSS #
Writing this piece caused me to reflect on my work on open source. While I do think the value proposition needs to change, I still have a strong passion for building cool things and helping others build software that solves complex problems. I'm going to continue to contribute to open source for those reasons, and will be around working on wasmCloud as a maintainer of the wash project. Knowing why I'm working on the things I work on gives me a better understanding of what to do in the future, and I hope it also was helpful to you!
I got the image i'm using for OpenGraph sharing (what you see on Twitter/LinkedIn) from this article. Credit for that goes to AIM and the original author Debolina Biswas.