December 18, 2019
In this time where information technologies take more and more space in our lives, what behaviour can we adopt to maintain some sort of control? Can we at all escape all those unknown algorithms that try to optimize the profit of a couple of super-corporations? At first, let’s dive into what a program is, exactly. Then, we will take a look at the impact of licences on softwares. All of this will allow us to better understand, as a user, what choices are in front of us when deciding on a software.
What is a program (or software)? For a majority of the population, it is a black box that sends emails, allows us to share photos or play video games on our smartphones. But how does all of this work? Reality is, all those possibilities have been conceived by someone, then transcribed into computer instructions. This is called development or programming. These instructions are nothing less than lines of text written by someone using a programming language. Many of the latter exist, a bit like spoken languages.
Example of code which once executed displays “Hello, world!”:
object Main {
def main(args: Array[String]) = {
println("Hello, world!")
}
}
At this point comes an important step. Once software is written, we need to be able to run it. However, a computer understands only binary (sequence of 0 and 1) ! This is why a program must be compiled before it can be run. The compilation being the translation of a source code to a binary understandable by a computer.
Installing a software usually means downloading the binary (.exe extension in Windows). It is then possible to run it (usually by double-clicking on the icon). Let’s take note that this binary file is completely unreadable for a human being. A source code, on the other hand, is at least clear for a developer. It is this very important difference that will be of interest for us in the next section, specifically the access to the original source code of a software.
A developer or a company that publishes a software chooses or not to divulge its source code. This is decided by the licence under which this software is published. Without going into details of the many licences that exist, let’s focus on a few key aspects. A program that doesn’t give access to its source code is called proprietary. We can name for example Photoshop for image processing or Microsoft Word for handling text documents.
Proprietary software: the source code is kept private.
A second broad family of licences are the “open-source” ones. As you might have guessed, those programs disclose their source code to the public. Whoever wishes to read, try to understand or even compile them himself can do so in complete freedom. The author is being actively transparent.
Open-source software: the source code is available for anyone to read.
Let’s finally talk about a third type of licence (and the main topic of this article): free software. Free as in freedom. Open-source is all well and good, but how could we avoid someone simply grabbing the source code and creating a proprietary software? Furthermore, an open-source program is available to read but does not entail changing or sharing it. So, let’s add the following possibilities: everyone can modify and share the source code at will, all changes having to be upstreamed to the original project. We just described what a free software is. A free software is open-source, but the inverse is not always true.
Free software: the source code is available, anyone can modify and share it, and all changes must be published openly under those same conditions.
Let’s illustrate this with a few examples.
Proprietary | Free | |
---|---|---|
Image processing | Photoshop | Gimp |
Text processing | Microsoft Word | LibreOffice |
Operating system | Microsoft Windows | Linux |
BSD is an example of an open-source project upon which Apple based its operating system, MacOS.
Let’s not get confused: free software does not always mean free as in free beer. Similarly, a proprietary software can very well be given out for free.
Proprietary software are usually developed by companies who aim to maximize their profits. It is how capitalism works. The problem is that profit and user experience are not always aligned. Examples are legion. For instance selling private user data (Facebook, Google), getting locked up in a closed ecosystem (Apple), being tracked for advertisement purposes… Or ending up being forced to upgrade and buy the next version of a software. It is in fact the nature of proprietary softwares itself that is the cause of all of this and triggers sooner or later some sort of abuse. The creator finds himself having full power over the user. At some point, a shift towards the creator begins to happen, all the while undermining the end users.
In conclusion, we saw that the behaviour of a software lies in its source code, the latter not being necessary to run a program. Software not disclosing their source are called proprietary and are usually in the hands of companies looking to maximize their profits. On the other hand, free software is developed openly by communities, volunteers or enthusiasts. For an end-user, opting for a proprietary software is synonymous to trusting some company blindly (and forever). On the contrary, choosing a free software means actively supporting a more transparent and open world, community driven and where the end-users are more likely to be respected.
Of course, the world is not black and white, and all proprietary software is not to be avoided totally, nor all free software to be adopted blindly. Some proprietary softwares don’t have a free equivalent. Free software can also sometimes feel less polished than the alternatives. What matters most is to be aware of the choice when selecting a software. It is then possible to weigh up the pros and cons rationally and in full knowledge. This choice matters even more when it comes to choosing an operating system, this big program that runs all the others! This is the reason why my next article will be dedicated to Linux, a free alternative to the famous Windows.