Open Source Software is Broken

Open source software is everywhere. It is a part of basically every piece of technology you can imagine from massive operating system projects like Android, ubiquitous libraries & tools like curl, and perhaps most importantly, every major programming languages in use today (C++, Java, JavaScript, Python, ...). However, open source has a big problem:

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 #

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.

The developer:

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:

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.

Let's quickly dig into these:

Passion #

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:

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:

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:

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.

Solutions #

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.

So, how can OSS projects be monetized? One interesting way I was recently approached about was PayDevs. It's basically a paid monthly version of NPM, a public open source package registry for JavaScript. You upload your packages there, and then users pay a monthly fee to be able to download your package from the registry. I like this general idea, but it comes with it's own problems:

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?

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!

Credits #

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.

Thanks for reading! Feel free to share this article on your favorite social media network. For feedback, please ping me on Twitter.