Open-Source Software Explained
Open-source applications are widely used, many users though are not aware of what this terms even means. In fact, this term is frequently mistaken with freeware, which is not exactly correct. In this article we’ll go through the concept of open-source software, and how it has contributed to programming and the development of computers.
What is "open-source" software?
Open-source software is software that provides its source code available to view, modify and distribute for free. Originally, the term "open-source" was related solely to the way programs were created, and the freedom to adapt these programs.
However, open-source software nowadays covers a wider range of values, such as open exchange of ideas, collaboration, and community-led growth.
What is a source code?
As you may know, any electronic device can understand only one thing: whether there is any voltage that passes through a circuit, or not. When it does, it is represented as "1", otherwise it is represented as "0". This very elementary logic is the base of all programs, from the smallest application to an entire operating system.
Inside any executable file, there is a sequence of countless 0’s and 1’s that tells the computer what exactly to do. This code is called “machine code” or “machine language”. In theory, a programmer can enter commands to the computer directly in machine code, using only 0’s and 1’s. In fact, in the very early years of computers, that’s how commands were given. But this is extremely time-consuming and difficult, leaves a lot of space for mistakes and no space for corrections or future changes. It is practically impossible to develop an extended program with this method.
So, since many decades ago, programmers work on “high-level” programming languages. Instead of using 0’s and 1’s, they use natural language concepts to develop programs.
When a code is completed, a programmer goes through a process called “compilation”, in which a special application (the “compiler”), converts the high-level programming language into machine language. This is why the original code is called “source code”. It is the source from which the final executable file will be created through the process of compilation.
Why is the source code important?
For most programs, the source code is sealed and only its creators can get their hands on it. A simple user, or even a random developer, has absolutely no access to it. The reason for it is that anyone who has the source code and can work on the specific programming language it was created with can make any changes he wants, so as to make his own version of the program.
For instance, if one had access to the source code of Windows, which is estimated to be 40-50 million lines of code he could make a version of it that is identical to Windows in all respects, but contain additional code that records all passwords entered. Not like an additional, third-party keylogger, but as an integral part of the operating system.
The key here is that, when you have access to the source code, you can simply and easily compile it and turn it into machine code. But when you have the final form of the code, which is just an endless sequence of 000111101 101110101 010110011 011000011
, it is extremely difficult to figure out the source code.
There are methods developed in order to understand parts of the source code given its machine code, using a process called reverse engineering. But reverse engineering is not done automatically with an application; it is performed manually by expert programmers that specialize in the subject and make use of multiple tools. Additionally, a significant amount of time is invested into this process.
How are open-source programs different from other types of software?
As we already mentioned previously, usually the source code of a program can only be modified by the individual, group, or company that created it. This kind of software is called proprietary software, or closed-source. The user has no right to modify it, and he even has to agree to the terms of the creators before he even installs and uses it. If the user disagrees with the terms, he cannot proceed with the installation.
In open-source programs, things are completely different. The creators, in addition to the final deliverable, also give access to the source code they used. So, if one wishes to study the code, copy it, use it in his own program, perhaps learn a few things about programming, or even share it with someone else, he is free to do so.
In the case of open-source applications, the terms of use that may exist during installation are completely different. In general, they allow users to use the software in any way they wish. However, some of them state that anyone who publishes a modified version of the program has to make the source code available to the public, and without any charge of course.
Does open-source software mean free software?
Speaking of charge, let’s clarify a significant misconception with open-source programs. Many users confuse free programs with open-source programs, which is wrong. While the majority of open-source programs are indeed distributed for free, the creators may wish to charge users for the developed software or for further support, especially when it comes to complex open-source applications.
The fact that the user is able to view and modify the source code of the program does not imply that the program has no cost. One typical example is Redhat Linux, which is mainly used on servers. This is an open-source operating system, which has different versions that can reach even $15,000.
When a company owns a large corporate server, and there is a problem with the operating system, Redhat's support can solve it quickly and efficiently. Conversely, all free programs available are not necessarily open-source programs.
Linux
Linux is undoubtedly the most famous open-source software. Perhaps its not so popular for home use, but most servers on the internet are running on some version of Linux.
It is an open-source operating system, the code of which is accessible to everyone. So, unlike other popular operating systems like Windows, MacOS and iOS, the Linux code can be accessed and modified by anyone. For this reason, although the operating system’s core remains the same, there are countless Linux distributions with many variations and different software included.
For example, the most popular home distribution, Linux Mint, begun virtually as a copy of the well-known Ubuntu Linux, but with major modifications added.
Linux was created in 1991 by Linus Torvalds, who was then a student of the University of Helsinki in Finland. In fact, his purpose was to name the software “Freax”, which was a combination of the word “free”, “freak” and the letter “x”. “X” resulted from the last latter of Unix, on which was Linux was based. Fortunately, one of the FTP server administrators in which Torvalds had uploaded his files thought that Freax was a terrible name. Thus, on his own initiative, he named the project “Linux”, using the author’s name and the “x” from Unix.
Linus Torvalds kept that name, and that's how the story of the popular operating system’s begun.
GitHub
You may have heard about GitHub, or perhaps you've come across a link pointing to GitHub when downloading an open-source program.
GitHub is more than just a database of open-source software. Through its system, developers upload the open-source software that they create, and at the same time they can make changes to the code, update the program, and perform several other operations. GitHub, through its version control system, keeps all these updates sorted. This way, developers can easily modify their software, manage changes, and upload updates.
In addition, each GitHub developer can view the source code of the software and download it, as well as make his own modifications, and share them with the rest of the users if he wishes to do so.
It is worth mentioning at this point that this particular version control system is called “Git” and its creator is Linus Torvalds, the same guy who created Linux.
So, if we wanted to give a brief description of GitHub, we would say that it is something like a social network targeted at developers. Of course, since we are talking about open-source programs, anyone can easily download the programs and use them in any way they wish.
Google Open Source
On March 28, 2017, Google created Google Open Source a page that collects all of its open-source software. This page is not used to host code of open-source software, nor to replace GitHub. We would say that it is something like a central list of Google’s open-source programs.
By visiting to the projects website, you can see an animated graph with lines and circles.
The circles represent the programs that the page hosts, and the corresponding lines indicate their possible connection to other open-source programs. Clicking on one of the dots will open a “bubble” into the foreground with its description.
By clicking on View Project, you are transferred to the program page, from where you can view various information about it, or open the page where its code is hosted. Additionally, you can view projects to which it is connected.
The company has stated that, in addition to a simple list of open-source programs, Google Open Source aspires to show users Google's attitude towards open-source software. For this purpose, there is the Docs tab located at the top right corner of the home page, where Google accurately describes its internal rules of open-source software. This section is divided into three categories, where you can learn about the process of creating, using, and expanding Google's open-source programs.
Most popular open-source software
So far we mentioned Linux, the most popular open-source software. But there are hundreds of other programs that you probably use everyday, and perhaps you are not exactly aware that they are open-source.
For example, Mozilla Firefox and Thunderbird are open-source programs. Chrome, even though doesn’t fall into the same category, is based on Chromium, an open-source project by Google.
As for media players, the well-known programs VLC and Media Player Classic are categorized as open-source software as well. Kodi, the popular home theater software is open-source too.
In the category of multimedia editing, GIMP and Audacity are open-source software.
Other miscellaneous open-source programs are Filezilla, Peazip, as well as OpenOffice and LibreOffice.
The list of open-source software is endless actually- the web is full of open-source solutions for any task that you are interested in performing.
What’s your take on open-source software? Let us know your thoughts and opinions in the comments section below!