The development industry has been seeing a growing towards software that is openly available, shunning proprietary software. For new developers, the reasons for this can be a bit confusing. So let’s try to break things down.
For a piece of software to be open source, it simply means that the source code is openly available for anyone to see, contribute to, and in most cases adapt for your own needs. For example, if you’re curious about how Firefox works under the hood, you can simply visit their source code page and take a look for yourself. Assuming, of course, that you have some basic development knowledge and are able to make sense of the codebases.
You cannot, on the other hand, find the source code for something like Microsoft Office. Or iOS. These software are considered proprietary or “closed source”. The companies writing these software have poured years, if not decades, of research and development into polishing them. From their perspective, releasing the code publicly would not be a great decision.
The differences between open source and closed source software are pretty simple and obvious at the surface. But beyond just the philosophical differences, they lead to very different business models and monetization strategies.
A common perception among a lot of people is that paid software must necessarily be better. After all, the companies are that producing the software need to turn a profit, and so they’re incentivized to make it better so that more people would buy it. Those same incentives simply don’t exist in the open source community.
This is a very logical line of thinking and is true in a lot of cases. But it isn’t true always.
Let’s take Linux as an example. Linux is a desktop operating system just like Windows and MacOS — the two dominant operating systems today. While Windows and MacOS make money directly from end consumers, Linux does not. Instead, it is available for free for anyone to use and modify.
And yet, when it comes to market share of operating systems for web servers, Linux well and truly dominates the industry. And when it comes to supercomputers, Linux has an astounding 100% market share. Price is obviously a huge factor here as companies want to save on licensing fees, but there are also other reasons such as increased security and reliability that make Linux extremely competitive. Similarly, open source databases such as MySQL and Postgres account for nearly 50% of the database market — a number that has been constantly increasing for the last decade.
The prevailing mindset among the open source community is that the software is more reliable simply because of the number of developers working on the project. This would seem counter intuitive but the idea is that because the code is openly available, if there is a bug in the system, sooner or later someone would identify it and put in a fix. The code is available for everyone to scrutinize and dissect making it more secure by default.
At this point, it would be very reasonable to ask how exactly open source software makes money. And the answer is, it depends. Obviously, most people contributing to open source software aren’t going to make any money from it. If you were to submit a patch to an open source library tomorrow, you wouldn’t do it with the intention of making a buck, but rather as a way to give back to the development ecosystem — one that has hopefully favored you a lot too. Tons of open source software are supported by developers working on projects in their spare time.
This does not mean, however, that open source software is all about altruism. Companies like Red Hat, for example, have built multi billion dollar businesses by selling support services and technical expertise on open source software. Companies make money not by selling the underlying software, but rather the infrastructure around it — such as hosting services or technical training.
Additionally, tech companies are increasingly becoming reliant on open source software and so have a vested interested in making sure that the software remains up to date and secure. It is not uncommon for some companies to dedicate developers just to support open source software development. This effectively outsources some of the development efforts to the community but makes the software available to everyone in exchange — a win win situation.
The entire industry is seeing a massive shift towards open source software and regardless of where you stand on its viability, it is important to understand the basic philosophy behind it. Hopefully this post helped with that. If there are other specific topics you’d like to see discussed please leave a comment below! :-)