This post is a part of a longer series we’re publishing about Linux and open source from A to Z. It’s made for new users, so if you are already using Linux, then you probably don’t need to read this. You may view all the articles published in this series here.
Before you learn what open source software is, you need to know what is source code and binary code.
When someone writes a computer program, they don’t simply write the code directly to be used by machines. Instead, they write the source code which is in plaintext using a specific programming language, and then that code gets compiled/interpreted using special programs so that binary code is generated. Machines can only understand and work with binary codes. Binary codes are large chunks of files that are only like 0101001010, and they represent a computer instruction that machines can understand and use to do work.
Now, traditionally, since the beginning of computing in the modern age, and talking about eras before 1980, source code was almost always given for free with permission to redistribute the program and modify it however the user likes with no extra fees. But things started to change in the 1980s, people realized how much effort it started to take to develop software and stopped giving the source code, and kept distributing only the binaries (either for free or for a fee).
Software companies started to appear, and they started to create “Licenses” regarding their software and charge money accordingly. Each license had its own legal terms that allowed you as a user to do some specific things in the program/source-code and prevented you from doing other things. For example, a lot of programs require you to sign an End User License Agreement (EULA), stating that you don’t have the right to modify, redistribute or read the source code of the program you are about to use. You only have the right to use the software as stated in the agreement, and you don’t have access to the source code. We refer to those programs as closed source or proprietary programs.
In 1985, a man named Richard Stallman, who didn’t like the current situation, created what’s known as the Free Software Foundation (FSF), which promoted the alternative of free software (free as in freedom, not as in free coffee). He drafted 4 criteria for a software to be considered free:
- The freedom to run the program as you wish, for any purpose.
- The freedom to study how the program works, and change it so it does your computing as you wish. Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor.
- The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
All of this without requiring a pre-given handwritten permission from the program author to the user. By just seeing the license, and knowing that it is a free software license, you can do all the 4 things stated above, and that is what refer to as free software.
Today, there are tens of free software licenses that software developer use to put their program under. The most famous one for that is the GPL (GNU Public License), which was initially released in 1989. There are millions of free software around the world today.
In 1998, people didn’t like the illusion created by the term “free software”, because it may push people to think that it’s talking about free (as in free coffee), not as in freedom. So in order to remove that illusion, the Open Source Initiative was established and the term open source was used for the same software that fulfills the criteria of free software. Today, we refer to all the software that its source code can be accessed freely as open source software (It must be licensed under an approved open source license to be considered so).
There are some small technical details about the real difference between free software and open source, but both of them can be considered like the two sides of the same coin. Free software is a philosophical movement that thinks that making free software is a moral choice, and that all non-free software are immoral. However, the open source movement states that it is a technical movement that is focused completely about the code, how to improve it and collaborate around it, and is not a philosophical movement and doesn’t look to the topic from that point of view.
Today, tons of most the software you’ll probably encounter in your life are open source. Things like Firefox, the famous web browser, or Linux, the famous operating system, or WordPress, the well-known CMS, are all open source.
We use the term “open source” more than we use the term “free software”.
- They allow you to access the source code, study it, modify it, redistribute it and publish your own modifications according to the license.
- Since the source code is open, you can be sure that there are no backdoors or spyware in the program because you can see it yourself. If you are not a programmer, you can ask someone to do the job.
- Usually, there’s a good community about the open source software that you are using. This means that the developers would accept looking into your issues and suggestions if their time allows it, meaning that you can become a participant in developing that open source program to make it better.
- If you are a company that is using an open source program, and suddenly the original developer decides to make a change that you don’t like, then you can “fork” the program, meaning that you can take the code before the newly introduced change and use that version and develop it yourself.
- It is true that open source programs can also be paid, but in general, most open source programs are also free in charge.
- Helping community! You can get a lot of help and support for free from your fellow humans. Read: In the Love of Open Source Communities.
Not all open source software are free of charge. The authors of a software may decide to require a fee from you before you download the software. You are still given the source code along with the rights to redistribute it and modify it, just like any other open source software.
This, of course, means that the first user who’ll download the program has the right and ability to simply take the source code and give it free of charge to everyone else. That’s why while open source developers can charge a fee for their software, it is generally impractical to use such model. Instead, most open source projects earn their money via providing services, support, addons and other extra features for only those who would pay them.
Everyone has their own reasons:
- Big corporations such as Facebook, Google, Apple and others depend a lot on the same software to run their infrastructure. Instead of developing everything from scratch in their warehouse, they can collaborate to a certain extent to develop a specific software they need.
- Normal programmers enjoy developing software, and they want to showcase their work and get tips and reviews from their peers, so they release their programs as open source. Or they may just want to solve a problem they had, and decided to help others too.
- In most cases, the main motive behind developing open source software is that there’s a proprietary closed-source program that charges people a lot of money to use it. So in order to allow everyone to do their tasks, people simply collaborate to develop an open source alternative.
Don’t forget that open source isn’t just about developers. Even normal average users who are not developers do contribute to open source projects in a lot of ways, such as promoting it, providing support for other users, other logistics and many things.
We use the term “open source” in a lot of other domains too. For example, we have something called “open hardware“, which is any electronic device that provide its design scheme or hardware drivers under an open source license. We have what’s known as “open source education”, which is the process of teaching using open source methodologies and tools. We have open source in a lot of other places too.