I try to use free (freedom-respecting) software and avoid proprietary (aka non-free) software. I am not a software developer but a user as most of the public. This post deals with an introduction to free software and licenses. There is almost no technical details in this post, only philosophy. In this post, I will show you the arguments that why this philosophy is ideal and adopting it is necessary. In another post, I will show you that it is practical, for most of us if not all, to only use free software. I am doing it right now.
If you are a software developer, I hope you are already aware of the issues and use GNU GPL license or a compatible one for your programs and respect your client’s freedom, while promoting free software. If you use a proprietary operating system and got used to it, you can start gradually using free programs. After answering all your needs with free software, then you can, much more smoothly, go ahead and switch to an available free operating system, like GNU/Linux.
Free Software movement started by Richard Stallman (RMS) around 1983. For the philosophy, I suggest you to go and explore the videos and audios in gnu.org. For a more detailed definition of free software see this page. Briefly, free software respects users’ four essential freedoms:
(0) to run the program,
(1) to study and change the program in source code form,
(2) to redistribute exact copies, and
(3) to distribute modified versions.
Now, the natural questions to ask. Why do we need all these freedoms? Why are you giving me this definition? What is wrong with using the plain old copyright law to deal with software? Let’s find out.
Why Free (Libre) Software?
Let me begin by emphasizing that this post is about software. In another post, I will talk about other works, such as scientific papers or art works. But why software must be treated differently from the other works?
A software, or a [computer] program, is a list of instructions, and asks computer to do a specific job. This list of instructions is called source code. It is written by human and read by a machine. The machines, unlike humans, speak in binary (aka gibberish). In practice, often, people do the translation by compilers. But compiling takes time. So we save binaries in our system, and feed it to the machine whenever we want to do that specific job. The machines are really similar, so, often, I can give you only the binary and you just run it in your machine to do that specific job.
Translation from source code to binary is done in a way to make the binary really efficient at each run. This makes the translation from binary to source code (decompiling?) really difficult. Unless machines start writing binaries and enslave us to translate them to source codes, which then the source codes define jobs that humans would do, translating from binary to source code is not that practical.
There is a fair analogy between computer programs and recipes. You can think of a non-free (aka proprietary) software as a company-made sausage, which you, or almost anybody else, will never know what it is made of. There is absolutely no FDA involved! And you cannot change or ask someone to change anything in it. Gotta swallow it as it is. It might taste good now and then but that’s missing the point. Remember that you don’t have to eat it. There are other options; aka Free (Libre) Software!
Consider this scenario. You want to do a specific job in your machine. X gives you only the binary (gibberish) which does the job, but not the source code (usual scenario with non-free software). You are happy that you can feed that binary to your machine and do that specific job. But you can imagine the amount of power X has over you. You have no idea what else X might ask your machine to do. Later you find out X has a backdoor to your computer, through the program she gave you, and X can install any changes on your computer, whenever she wants (a universal backdoor). You can only learn this by observing. To compare with the list of four freedoms, basically, you have the option to run the software as X wishes. She can disable the program as she wishes. But as long as you are lucky enough you can use the program, i.e. you have a permissive option which at best serves you as freedom 0. You will never know how the program works (if interested as a software developer or an eager student), or what it actually does (if you do not trust X). History have shown us many times, in questions of power, you should not trust human or companies. So, to wrap up, you have to trust X and assume that there is no malicious features, have no interest in how the program works or changing it yourself, have no interest in asking a community to change the program as you wish, and have no problem being dependent on X.
In contrast with software, other mentioned works, such as scientific papers and art works, shall run directly on human mind, which there is no binary format for it (yet). So, by default, you publish all the work, and you can not publish only some binary gibberish which runs on some CPU. So one can argue against this unjust secret power that X has over you, as we did, and conclude that for software we better be transparent and publish the human readable code (freedom 1). If you are a programmer, freedom 1, also, allows you to modify the program according to your own needs. So you are free to change the program as you wish. The program was a tool to serve you, like a recipe. So you will have control over what it does.
If you are not a programmer, then source code might look almost as gibberish as the binary. And you cannot change the program to fit your needs and you do not have control over it. You cannot understand what it does. Or you might be a programmer who does not want to work on that specific program. Most of the programs nowadays are big and working on them must be done collectively with a group of people. Freedom 2 allows sharing the program in a group so they can work on it. Freedom 3 allows that group to publish their own version of the program. Also freedom 3 is a self-correcting solution which is explained in the next paragraph.
Let me elaborate on the unjust power issue. As written here or briefly discussed in this video there are quite a few malicious features that a non-free software can have and often does. This is a minimum list. People found out about these malicious features by observing them. You can only add to this list after you find out more. This mistreat only stops if they change to free software. It is coming from the unjust power a non-free software has over its users. By four freedoms above, a free software can not have power over the users and potentially will not practice any of these malicious features. I said potentially, because one might, deliberately or by mistake, put one of these malicious features in a free software too. But, in this case, next person who will read the code, to understand, fix a bug, or add some other features, will see it and delete it, and will distribute the corrected version. So you need all the freedoms above to be able to have a software without any malicious features. Also the practice have shown us that it works, see next post on this series. We have plenty of developers willing to develop free software so we have free software for almost all our needs, with an ease of mind that we can share, teach, modify, hire people to modify, without concerns about any of the above malicious features.
The conclusion is that the freedoms 0, 1, 2, 3 are necessary and enough. You cannot dismiss any one of them and still think the user (most of the times users collectively) are controlling the program and they are not subjugated by the program. Also having all these freedoms you can be sure, being a programmer or a non-programmer, that you and other users are controlling the program and no one is mistreating you, making you dependent, compromising your privacy, …. So this is a necessary and enough list of freedoms to have to ensure computing freedom in a society, hence the name Free Software. Our computing freedom, which made possible by free software, is vastly interconnected with other freedoms. And by this comment I finish the post, leaving you with some additional notes and references.
A Bit of History
GNU stands for “GNU’s not Unix”. RMS started GNU Project on 1983, so we can have a free operating system. Unix was back then, and still is, a proprietary (aka non-free) operating system. It was more accepted as a standard. That is why RMS decided to design GNU to be compatible with Unix, so people easily can switch. But to emphasize it is not Unix, he named it with the phrase “GNU’s not Unix”. A recursive joke with some other subtleties. The reason we should use the term GNU/Linux, instead of Linux (only kernel), is threefold. First, to name the system correctly. Second, to give credit to the people who worked on GNU Project (a fully free operating system, which started free software movement and GNU Project which was a part of that movement.). This helps people to recognize the history with a low cost of typing GNU/. Third reason is that the “Linux” and open source community, like Linus Torvalds, are emphasizing on technical issues and how their software is better and they, more or less, forget about the freedom issues. Naming the system GNU/Linux will refer people to the main issues that started the whole movement. RMS has answered frequently asked questions about this matter. You can read the history with more details gnu.org/gnu/gnu-history.
Ownership & Economical Arguments
Say you are a developer and already aware that you must not mistreat your client. You are developing a proprietary software, and you think, “I need to make money” or “I put my sweat into this program and it’s mine”. Both these arguments are answered in this article. Richard Stallman explains why ownership of the software, in physical property sense, will cause much more harms than benefits to our society. Similar arguments are repeated about other works, in much more detail, with more historical notes, in the book “Free Culture” by Lawrence Lessig. I mirrored a pdf version of this book, or get it from here, or listen to it from here. The pdf version is licensed under CC BY-NC. This book is not only about the software, but all cultural works, and actually got inspired by the work of Free Software Foundation.
A copyleft license requires all derived works to give users the same list of freedoms, and to be licensed similarly or compatibly. In contrast, a lax or permissive free license, does not require the modified work to be published under a similar license. The lax licenses must be used only in special cases and for strategic reasons. There are different levels for a permissive free license; in other word how permissive a copyleft license can be. A bit more details about this you can find on Wikipedia page.
Using a copyleft license is a clever way to use the existing copyright law to make your work, and any derived versions of it, remain free (defined with above four freedoms). If you put your program in the public domain, one might get your work and use it in a non-free software. So you have helped promoting a non-free software, a software which is unethical. Read this article for more info.
GNU GPL is the most famous copyleft free license, used mostly for computer programs. See the Venn diagram in figure 3.2 which I got from this page.
The first copyleft license, Emacs GPL, was invented by Free Software Foundation (FSF) team.
The Other Movement
The other movement, which was initiated on 1998, is Open Source Initiative (OSI). You can read the official definition of the term “open source” here. As you see in the Venn diagram 3.1, practically, if a software is open source, most probably it is a free software. Richard Stallman explains “Why Open Source misses the point of Free Software”. Benjamin Mako Hill also argues how the point of view that OSI has in a sense failed. He concludes why it is better to stick to the principles and values that free software is based on, instead of false advertisement. Let me explain briefly. The problem is that open source puts too much emphasis on being a better model to produce (practically, but not necessarily ethically) better software. Unfortunately this can cause distraction from the main issues. One should understand the harms that non-free programs causes and avoid using them as much as they can, and use, promote, and help free software projects, even when they lack couple of features or conveniences that a similar non-free software has. Read this article for a more detailed version of this argument.
Free Software Gang
You can read and learn about the free software gang. Of course there are so many others, but this list is the well developed and famous ones. Some of them even do the job better than similar non-free programs, but again, one should not push on this matter. In the next posts in this series, I will describe my experience with free software. I hope to cover most of the list below and convince you to switch or even better support these,
> essential programs: GNU/Linux (often erroneously referred to as ‘Linux’) operating system, Desktop environments, Window Managers
> general programs: Firefox, Inkscape, GIMP, LibreOffice, Emacs, Vim, Xournal, GoldenDict, FFmpeg
> scientific programs: Sage, Python, IPython, Julia, C/C++, Ruby, Haskell
Additional thoughts, links, and references:
[3.1] http://www.gnu.org/licenses/license-list.html: You can read about different licenses and whether or not they are free software, copyleft, compatible with GNU GPL or FDL. Having no license means non-free under today’s copyright law or sometimes quoted as “All rights reserved.”. This is not a good choice for software or any other works. We will discuss licenses in another post.
[3.2] https://www.gnu.org/philosophy/words-to-avoid.html: A list of confusing words with clear explanations why it is better to avoid using them.
[3.3] If you have some digital audio players with non-free firmware, check out Rockbox. I am using Rockbox on my SanDisk Clip Zip. Avoid DRM.
[3.4] You can follow Richard Stallman’s political notes on his page.
[3.5] One of the ways to make surveillance over IP less powerful, is to use the idea of open wireless movement. Simply, delete your WiFi password. Clearly this will have other benefits! To be safe, put password on the router’s admin account.
[3.7] Lawrence Lessig is actually focused on a project called mayday.us. I did not contribute by money, as I am not a US citizen nor permanent resident. See the rules here. But I will try to spread the word.
[3.8] If you are a purist, and want to have a fairly decent laptop go check out The Gluglug shop. All their products got endorsed by fsf.org/ryf. If you have money and want to get a high-end laptop I recommend Purism.