Free and Open-Source Software

This article is mainly a personal research to clear my thoughts about what FOSS is and isn’t. Before we start, let’s quickly mention some famous examples:

Firefox, Linux, Git, Gimp, Eclipse, GitLab, most programming languages and thousands more.

F is for Free

Usually when you publish a piece of software, you publish it “under a license”. Which means you attach a contract to your code that says how it can and can’t be used and shared.

Free licences allow users of your code to change it and republish it. Some are more strict - GPL license forces you to publish all work build on top of the original code. Whilst others are more lenient and even allow you to change the license of the code if you wish (MIT, Apache).

Open-Source

On top of free license, FOSS is open source. That simply means that all the source code is published on the web for everyone to see. This amongst other things allows people to contribute to the software.

Why People do it?

In Czech we’ve got an old proverb, it can be roughly translated as

Even chicken doesn’t peck for free.

Why would people volunteer their time and resources to build something for free? Well it’s not always completely altruistic act. More often than not the company/individual that shares the code gets something in advance be it better security, lower development cost, easier hiring thanks to the popularity of the software and so on. The three most common models are:

  • a company open sources non-core part of their product, e.g. infrastructure orchestration. There is only a marginal risk of them losing business over someone else being able to orchestrate their infrastructure better. But the benefit is that if people start using this orchestration and contributing back to it, the original company will reduce their development and maintenance cost
  • a company or an individual builds their business around providing premium support to the open-sourced software - canonical with Ubuntu is a good example
  • company builds proprietary/non free version on top of open core (I work at GitLab which does exactly that)

Should you use it?

You already are right now, this blog is built with HUGO, stored using Git on a GitLab.com instance, travelling to you over bazillion linux nodes and is shown in a browser that, if you are an average user, is Chrome which at least has open-source core.

But that’s not the point, everybody is using the mainstream FOSS and you will too. I mean should you chose FOSS in the remaining cases? The cases where the market hasn’t converged on FOSS yet. Gimp vs Photoshop, MacOS or Windows vs Linux, IntelliJ Idea vs Eclipse, Sublime vs VS Code, Shotwell vs Picassa, the list goes on.

The answer is: “it depends”. It depends on at least three factors: Do you have enough software skills to debug issues? Do you have time for that? And the most important of all: Is it fun for you to fiddle with your software?

Unless the answer to all three questions is yes, I’d strongly recommend paying someone to worry instead of you. That comes from a person who spent the whole yesterday trying to make my vim show me details of error that it was already highlighting. I failed miserably and it plunged me into depression mixed with “screw FOSS” attitude. But I’m going to be spending countless hours debugging FOSS issues in no time. Don’t you worry.