1 APR, 2025

Open source software: infection or salvation?

I hope you're heard the term "open-source software" or "FOSS" by now. If not, don't worry, I'll give a defintion and as non-technical an explanation as I can think of!

What is closed-source?

Before we get to open-source, it makes sense to define closed-source, as it is more familiar and traditional.

A software developer writes code, and uses magic to transform that code into an application, which can be sold and downloaded and used by customers.

The original code is not shared or distributed, and remains part of the intellectual property of the software developer.

As this is not 1980's or 1990's anymore, there is typically a company that employs several software developers to write code, along with other staff to support the sale and distribution of the applications.

Examples

Some common examples of closed-source software you may know are:

What is open-source?

Now that we know a bit about what closed-source software, we can use it as context to explain open-source software.

For the more pedantic amongst you, I am going to focus my discussion on free and open-source software (FOSS), and we will discuss commercial open-source software in another blog post.

A software developer writes code, and makes it fully accessible to the public, which can be downloaded, modified, redistributed, and used by anyone.

Whew, that is quite different! But wait, how is this economically viable?

Examples

Economics

Open-source software is providing something for free (as in free beer), or for free (as in free speech), or even both! How on earth can this possibly be economically viable?

Well, for starters, a lot of open-source software are small projects that software developers make in their free time, usually to help them solve a problem they're personally facing and thought would be help to other developers with similar problems to solve. In this case, they would've made it anyway (just for themselves), but they are choosing to release it for everyone to use, because digital distribution is typically free (as in free beer) these days.

Just as an artist may create a piece just for their own personal enjoyment, and then display it publicly for others to enjoy, a software developer can create for themselves and provide to the public, too.

Organisations

Now, this does not cover all open-source software development. Indeed, the majority of open-source software is made by individuals (and typically one individual will make multiple applications!), there are a not-insignificant number of projects with more people behind them.

There is a sharp drop-off beyond c. 25 people on a project, though some projects are popular enough to draw support from hundreds of developers.

It is important to note that although 25 people is a lot, these are still people who are contributing their free time, not their full-time effort.

Larger projects are typically those which are backed by a company. A company may produce some software and sell it, and also realise that tools and utilities and libraries of code that they created to help them make their intended product would be useful for others in the community to use. Thus, they provide these libraries as free and open-source software, enabling anyone to use them.

Contributions

A key distinction between closed-source and open-source software is who can do work on the code: who can make contributions to it. With closed-source software, only the developer (or company) creating it is able to make contributions. On the other hand, with open-source software, anyone in the world can make a contribution.

This is a massively important distinction to make, because it helps to shift the conversation from mere economics of monetary exchange into a discussion around what people care about: value.

Value?

Yes, money can (from time-to-time) be a reasonable representation of how much a person (or people) value some commodity. However, humans aren't calculators with pockets of cash. We understand and run on a values system that is not inherently physical, it is inherently immaterial. Attempting to make a purely material system must still make some concessions for this, such as companies putting "goodwill" on their financial statements as a real, tangible asset, despite it being intangible.

The value of open-source software

From a user's perspective

What do I mean by intangible value? Well, people expect software to work (and to continue working), in many different situations, and to be able to receive support if it doesn't work in their situation.

The value of open-source software is that you can test if it works quite easily, as there is no need for demos or trial versions or buying licences and refunds — you download it and use it and see whether it works for you.

"Hey, there are software that have good trial versions which are just as easy to try out!"

Absolutely, I use them, too! But the value of open-source is not just in the trying — if it doesn't work, I can fix it so that it does! If it doesn't have a feature, I don't have to wait or beg the developer to add it, I can add it myself. If it stops working, I can go back to a version that did work, or I could fix it myself.

From a developer's perspective

Now, these is just the value for end users. Open-source software is enormously valuable for other software developers, too. It means that instead of having to write everything from scratch yourself, or paying someone for their library, you can use someone else's tried and tested code and build upon it for your own purposes.

In the 1980's, if a developer wanted to write software for a computer, they would have to worry about the specific processor and specifications of the computer, they would have to write an operating system (or buy someone else's), they would have to write drivers for interacting with physical hardware devices (such as printers), and then on top of that they would have to write their application and all the tools and utilities they'd need to make it. Nowadays, much of those technical challenges are easily overcome by open-source software.

If I want to generate a QR code, I don't have to read the specification for QR codes and write code to do it: I use code that someone else already wrote — a library. This saves me so much time and effort and potential mistakes that would lead to me making bad software, or even no software! Open-source software enables more software to exist, and to be better.

Company interactions

Anyway, back to the economical interactions of open-source software. Let's say that a company uses open-source software, and has an issue which needs to be resolved by some change to the code.

There are four ways that a company can interact with open-source sofware support:

  1. Pay the original developer
  2. Pay another company
  3. Pay your own developer
  4. Hire a freelance developer

1. Pay the original developer

Many open-source software platforms (such as GitHub or GitLab) provide ways for anyone to financially support the developer(s). This is usually done with donations, though it is also possible to add a "bounty" to a specific issue, which may help motivate the developer to spend time fixing that issue.

This is effectively a traditional exchange of goods (money) for services (changing the code), so it should be perfectly understandable and appealing to companies. An issue may arise in the fact that there are no guarantees that giving money to the developer will actually make them fix the issue, or even that it can be fixed. The financial interaction is not bound by any particular contract or licence, and so they are free to do as they please.

2. Pay anoher company

In this example, the open-source software is developed by another company, made freely available, though they also provide paid support. In this case, once again the company can engage in a traditional business-to-business transaction and each benefits from the exchange.

3. Pay your own developer

If the company using the open-source software employs developers, which is highly likely, they can ask their developers to devote some time to fixing the issue. Hopefully they are paying their employees for their time, so this is literally business-as-usual for a company. In fact, this likely already happens at many companies without anyone other than the developers knowing about it!

4. Hire a freelance developer

If the company is in the situation where they are dissatisfied or unable to do any of the other ways of financial compensation, they can hire a freelance developer under contract, to fix the issue in the code for them. This is only possible because it is open-source software.

Tradesperson

I think it is worth spending some time on a small tangent, used as an analogy.

Washing machine

Let's say your washing machine stops working. That's highly inconvenient, but you can call a relevant tradesperson, who will take it to bits, figure out what is wrong, and replace parts or tweak settings and do whatever it takes to restore it to working order. You pay them and they go on their merry way, both of you satisfied with the exchange.

Open-source software

Let's say the software you use stops working. That's highly inconvenient, but you can call a relevant developer, who will take it to bits, figure out what is wrong, and replace code or tweak settings and do whatever it takes to restore it to working oder. You pay them and they go on their merry way, both of you satisfied with the exchange.

What's so revolutionary?

Well, nothing. Except that you can't do that with closed-source software. It would be like having the tradesperson arrive and discover that the manufacturer has used extra special screws which mean the washing machine can't be taken apart or worked on by anyone. Thus, you are stuck with a broken machine, and they are out of a job.

The concept is not revolutionary at all, but it requires open-source software to even be possible, let alone commonplace.

The value-add of open-source software

I mentioned earlier the value of open-source software inherent to itself being available for use and modification by individuals. However, this was a simplification that ignored perhaps the most important part of open-source software: the community!

Network effects

Every change, addition, and fix to an open-source software project doesn't just affect one person. It's not fixing one person's washing machine, it's fixing everyone's washing machine!

Let's re-evaluate our four options from earlier: each option results in a relatively normal financial transaction, except that it has a by-product. The software itself becomes better. It has gained value.

The most incredible part is that this value has no financial cost: not time or money or effort, as the fix to the code would have been done whether it was open-source or closed-source, regardless of how money changed hands and to whom.

In our wachine machine example, only the tradesperson and I benefit from the exchange. The manufacturer doesn't get anything from it. Whereas in every open-source contribution, everyone who uses that software is able to benefit, including the original developers!

This is incredible, because even though I might choose option 3 or 4, where no money goes to the actual creators of the code, they still recieve value through contributions which make the software better.

In fact, every single contribution to open-source software adds value to it, which benefits everyone who uses that software, which makes it easier and faster for them to make better open-source software for other people, and so on...

Thus, from a single, ordinary business transaction, we have created a recursive exponential positive feedback loop of value-adding to open-source software!

Wait a minute...

"Hang on, this can't truly be free. Something has to give."

I hear you, you're skeptical. What must we give up in order to generate value like this?

Well, it's quie simple: we must engage in practices of genuine collaboration and transparency.

Why don't companies do this?

Well, it requires...

✝️ Surrender

Companies are quite keen to maintain a notion of "ownership" over their products. Open-source software is incompatible with the concept of "ownership", and instead focusses on "organisation" (or administration) as the determining factor of who "has" the code.

Furthermore, you may have noticed that I made a comment about the washing machine manufacturer not receiving any monetary value from the interaction between me and the tradesperson. Companies fear that this sort of freedom and openness in software would make it uneconomical for them to exist. In fact, companies fear that it makes it uneconomical for them to exist in regards to physical products already! They can accomplish this with the exact opposite of what we need for open-source software: by employing opacity and ecosystems, they can ensure that customers will only buy their products, and can only reach out to them for support.

We are seeing this happen with semi-digital platforms, too. Mobile phones, laptops, games consoles, and many more devices are employing closed-source software to restrict the hardware to do only things that financially benefit the manufacturer.

Surrender?

Yes, surrender. The incredible benefits of open-source software (yes, for the companies, too) can only be realised if companies decide to surrender their "right" to ownership, and their "right" to maximise monetary gain over generating value.

Unfortunately, modern capitalism and consumerism fights against the latter, and human nature conflicts with the former.

Fortunately, humans are the solution to both of them. People can choose whether to follow their own self-righteous human nature that assumes ownership, or to realise that they are already standing on the shoulders of giants, and that we can all reach higher if we work together. Likewise, humans can choose to work towards long-term value over short-term money, and rebuke modern corporate practices.

Standng on the shoulders of everyone

"Hang on, how can you say that? Surely not everything is open-source software..."

Actually, it almost is. Studies show big numbers.

96% of commercial, paid, not-free software uses free and open-source software. Remember that bit about needng to write everything yourself? Turns out it's basically impossible.

"Okay, surely that's just because they use a couple things here and there?"

Actually, no it isn't. Between 70% and 90% of all software is open-source. Yes, even the commercial, paid, not-free software is (statiscally, on average) mostly open-source software.

The core technologies and infrastructure that modern software relies on are all based on open-source software and implementations.

Everything from figuring out time zones, to audio editing and graphic design, to whole operating systems are available as open-source software.

It's unavoidable, inevitable, and inescapable — perhaps it's time to join in and start supporting it?