Blog:What is Free Software and why it matters

NOTE: The following is from my talk on the topic 'An Introduction to Free Software' delivered online on October 3 2020 as part of a virtual gathering conducted by Villupuram GNU/Linux Users Group (VGLUG)

Introduction
Before talking about Free Software, let me start with talking about ownership. What is meant by ownership? According to Wikipedia, ownership is the state or fact of exclusive rights and control over some property which may be any asset. So please keep that in memory for a while, exclusive rights and control. Now suppose you're going to buy a bicycle. You go to a bicycle shop, choose a model that you like. It's from a company called Macrohard. But when you're about to pay the bill, you're asked to sign a paper. It turns out that it contains a long list of terms and conditions enforced by the manufacturer of the bicycle. Basically what it tells you is that, even if you purchase the bicycle you don't have complete control over it. For example, you may ride the bicycle as you like, but you can't lend it to a friend as it is against the terms and conditions. Now suppose it was a gear-less bicycle when you bought it. And you have a friend who runs a bicycle repair shop and she can upgrade your bicycle with a gear system, cheaper than you can get from any other shop. But alas, that's against the terms and conditions. If you want to do any modifications to the bicycle, you've to approach the manufacturer. What to say, you don't even have the right to repair it yourself even if you know how and have the required tools. Violating any of these terms and conditions will be considered as a criminal offense according to law of the land and you may even go to jail if you do so. Now ask yourself, can you say you really own that bicycle?

This is the case with proprietary software as well. Even if you purchase it, you don't really own it because you don't have complete control over it. In case of proprietary software, instead of you controlling the software, the software controls you.

What is Free Software?
Now let's check what is Free Software. Free Software is all about freedom of the software user. What freedom, you may ask. To be more precise, a software can be called as Free Software if it gives the following 4 essential freedoms:


 * 1) Freedom 0: Freedom to run the program. No matter who we are, what we do, we're free to run the program for any purpose.
 * 2) Freedom 1: Freedom to study and change the program in source code form. In order to enjoy this freedom we should have access to the source code. By studying the source code, we can change the program as we like. In many cases, it's more easier to learn by playing with other's code rather than writing our own from scratch. Since we're free to change the source as we like, we can improve the program and add any missing features or functionalities as we like. Even if we don't know any programming, we can still approach someone who does. This can be for free or paid. What matters is that we have the freedom to modify.
 * 3) Freedom 2: Freedom to redistribute exact copies.
 * 4) Freedom 3: Freedom to distribute modified versions.

Any software which provides the 4 essential freedoms mentioned above is a Free Software. See, the issue here is not about price. Free doesn't mean something you get for free of cost. Instead, as you just saw, free in Free Software stands for freedom. In English, there's no better alternative for the term 'Free' to indicate that it's about freedom and not money, so sometimes people use the French word 'libre' instead, meaning free as in freedom or liberty. For eg. you might have heard about LibreOffice, which is a Free Software or a Libre Software. The software that you can get for free of cost is called freeware. All Free Software are not freeware and all freeware are not Free Software. For eg. Google Chrome is a popular freeware, but it is not a Free Software because it doesn't grant you the 4 essential freedoms. To distinguish between Free Software and Freeware, we say Free as in Freedom; or as in Free Speech. We can also say 'libre, not gratis', where gratis means free of cost.

There's a famous quote by George Bernard Shaw: "If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."

Similarly, in the case of software we're not losing it by sharing it. In case of tangible products, such as the computers or mobile phones we use, it's not that easy to reproduce them as we like. I mean we need considerable amount of resources and efforts for reproducing tangible products. But that's not the case with software. It's usually a matter of copy-paste and If I share a copy of the software with you, both of us will have a copy. So how do you restrict someone from sharing software with others? It is done with the help of copyright licenses. By adding copyright license, the software developer or the distributor restricts the software users from enjoying the 4 essential freedoms mentioned above. It's like polluting an abundant water source so that they can sell bottled water. See how unethical it is? Basically that's how proprietary software is used to make profit. By depriving us of our freedoms. That's injustice, and by using proprietary software we're helping that injustice to prevail.

History of Free Software - Richard M Stallman, GNU and FSF
Now let me talk about some history of Free Software. Earlier, it was very common among the programmers to share the source code of the programs they write. People used to be a part of hacker culture. Hacking here doesn't mean the popular meaning of breaking into someone else's computer without their permission. It's actually called cracking. If you enjoy coding and use your technical skills to solve problems, you're a computer hacker. Dr. Richard M Stallman, also known as RMS, who used to work in the Artificial Intelligence lab of MIT, was such a hacker. In 1980, Stallman was refused access to the source code for the software of a newly installed laser printer at the AI lab. He wanted to add a feature to the software, but without access to the source code it's almost impossible. This event and his concerns about the lack of freedom of the software users, led him to start the GNU project in 1983. The full form of GNU is 'GNU is Not Unix'. GNU is a recursive acronym, which means the first letter of GNU expands to GNU itself. He considered it more like a pun or a play on the words. Unix was a popular proprietary operating system at that time. The primary goal of GNU was to offer a Unix-compatible system that would be 100% Free Software. Not 90% free or 99% free, but 100% free. Free as in freedom of course. Later he also founded the Free Software Foundation (FSF), in 1985, which is a non-profit organization, in order to promote Free Software. We also have FSF India which got inaugurated in 2001 by RMS.

Under the GNU project many Free Software applications were born, including gnome, emacs, libc, GCC, etc. But it still lacked a decent kernel which works well for everyday purposes. A kernel handles the low-level tasks such as handling input and output, task scheduling, memory management, etc. GNU developers were working on a kernel called GNU Hurd, which didn't get a stable release by the time the other OS components got ready. That's when someone called Linus Torvalds, in 1992, hearing about GNU, offered the kernel he developed, called Linux, in order to be used with GNU. That's how GNU/Linux is born. When people usually say they use Linux operating system, they're referring to GNU/Linux in most cases. For eg. Ubuntu, Debian, Fedora, Arch Linux, etc. are all examples of GNU/Linux distributions, or distros for short. Talking about Linus Torvalds, he is a coding genius who also became popular for writing git.

Free Software Licenses
Now let's come back to licenses. If we write a software, how do we publish it as a Free Software? Just like proprietary software uses copyright license to restrict freedoms of the user, we can use Free Software license to make a Software free. Free Software licenses are also copyright licenses, but unlike the proprietary licenses, it grants the 4 freedoms to the users. GNU General Public License, or simply called as GPL, is such a Free Software license. MIT License and Apache License are also some of the popular Free Software licenses.

Free Software licenses can be divided into two: Protective and Non-protective. Protective licenses, also called copyleft licenses, not only just grant us the 4 freedoms, but also ensure that the same freedoms are preserved for the derivative works created from the original. In case of non-protective licenses, no freedom can be guaranteed for the derivative works. GPL is an example of a copyleft license, while MIT is an example of a non-protective license.

Free Software v/s Open Source Software
People often confuse the difference between protective and non-protective licenses as the difference between Free Software and Open Source Software, which is not true. In fact, almost all Open Source Software are also Free Software. The difference between them lies in the values they uphold.

The Free Software movement values the freedom of the software users, it is a movement for freedom and justice. On the other hand, the Open Source movement values mainly practical advantages. Hence if you want to stand for freedom and justice, it's recommended to use the term Free Software instead of popularizing Open Source.

Why you should use Free Software?
As we saw before, proprietary software is a social injustice. It hinders growth. It prevents people from helping each other. If you value freedom and justice, you should use Free Software. Free Software is not just an optional alternative to its proprietary counterparts, instead it is the only way to use software ethically.

Free Software and Privacy
Free Software can also be seen as a prerequisite for protecting our privacy. Because without access to the source code, we can't audit a program. But access to the source code is also not enough in many cases. Suppose we're using some online service. Even if we know it's powered by a Free Software, we can't guarantee that the service provider is actually using the unmodified version of that Free Software. The ideal solution in such cases is to self-host the service so that we can be sure that it is fully Free Software and it also provides data ownership. This way we can protect our privacy. In case if we don't have time or expertise to do so, we can still depend on people or organizations we trust rather than blindly trusting profit-hungry tech giants with our private data.

Vendor lock-in v/s Federation
There's also this concept called federation. Consider the case of Signal, a popular privacy-friendly instant messenger. Despite being privacy-friendly, it is actually a walled-garden because it's a centralized service. Which means it's run by a single entity and the signal users are forced to depend on them forever without any choice. This is called vendor lock-in. The case is no different with Telegram as well. Instead, if it supported federation one could sign up with any other service provider offering the signal service and still talk to signal users on a different server. Consider it like email service, I can email a Gmail user even if I'm using email service of a different service provider. So in order to avoid vendor lock-in and enjoy privacy, we need Free Software and federation.

Why you should contribute back to Free Software?
Many people contribute to Free Software because they love what they do. Many people work voluntarily, spending their free time on what they're passionate about. Most of the times it is someone who's scratching an itch, i.e. one starts with developing a software for their own needs, probably because no existing solution met their needs or simply because the developer loves to try something new/adventurous. Later if the developer realizes that their solution could also help others, they may choose to share it with others. In fact, that's the background story of Linux. There are people who work on Free Software on their spare time for free and then there are also full-time Free Software developers who work for money, as a freelancer or under a company or a crowdfunded project. If you use Free Software, you should consider giving back to the Free Software community. That way it helps to create a more just world where everyone can enjoy software freedom. By contributing to Free Software you make the world a better place. Remember, sharing is caring. During the process, you'll learn how to collaborate with others. If a Free Software you develop or maintain is useful to others, contributions will come from different parts of the world. You can experience how wonderful it is to work with people around the world, working towards a common goal, whom you don't even have met in your life. Even if you're not a programmer you can still contribute to Free Software. The first step to start contributing to Free Software is by using it. Try to find alternatives for all the proprietary software you are using and make the switch even if it is less convenient. When more people use Free Software, then there'll be more demand for the same which can attract more developers. When you find some issues with any Free Software such as a bug or a missing feature or even a simple suggestion that could make it better, consider filing a bug report or contacting the developers/maintainers. Even if you don't know programming, you can still enjoy the benefits of Free Software developed by programmers around the world. You can also help in various ways including but not limited to improving the documentation, maintaining the project website, spreading the word, etc.

How do people make a living out of Free Software?
This is a very common question and it often stems from the thought that Free Software is free of cost. We already saw that is not the case. One can still make a living out of Free Software, without being unethical. There are different business models for revenue generation using Free Software. One can make money by developing Free Software for the specific needs of a client, either from scratch or by modifying any existing Free Software. There's no one solution that fits for all, so there'll be always some requirement for customizing programs according to different needs. Other model is to charge for setting up and maintaining Free Software services on behalf of others. People in Free Software business also offer paid consultancy and training. These are different models which help you make money ethically. Consider it like a lawyer providing their time, effort and expertise in exchange of money. You always have an option to learn law by yourself and handle your own case in the court, but if you don't have time, interest or confidence, you can depend on someone else. This is also the case with Free Software, you always have an option to learn it yourself and make it work for you as you needed, but if you don't have time or interest, you can outsource it. So as a Free Software developer, you can use your time, efforts and expertise to help others and make a living out of it. Another model is to crowdfund the development, that is depending on donations or bounties. There's also a less ethical way called the open-core model, where the core software is free but additional features are proprietary, GitLab is a popular example. While I don't personally recommend that model to anyone, it's still lesser evil than being fully proprietary.

Now let's check some Free Software companies:

Red Hat
Red Hat, one of the largest open source companies, sells subscriptions for the support, training, and integration services that help customers in using their open-source software products.

DeepRoot Linux
A Bangalore-based company founded by Abhas Abhinav (a member of FSF India). DeepRoot Linux provides support for hosting Free Software services such as self-hosted mail servers, video-conferencing solutions, etc. It was one of the earliest companies in India to adopt Free Software as a business model.

UnTang Tech
Untang Tech is a consulting firm in Kerala, consisting of official Debian Developers, including Praveen Arimbrathodiyil a.k.a Pirate Praveen who is the one who introduced me to Free Software and the Free Software Community of India (FSCI). They also help in software packaging for Debian and its derivatives.

Alpha Fork Technologies and the Janayugom Free Software Migration Project
Alpha Fork Technologies is the company in which I work as a software developer. It provides different Free Software services ranging from web development to commercial support for helping companies to migrate to Free Software. One of the popular projects of Alpha Fork Technologies was the migration of Janayugom to Free Software. Janayugom is a Malayalam daily newspaper with nearly one lakh subscribers and 14 bureaus in Kerala. The success story of Janayugom is explained in detail in this diaspora post and it got featured in FSF newsletter issue 140, December 2019.