A case for Linux and Open Source

It’s rather common that a heated debate occurs when the question of which Operating System is better arises. However it’s important to realise that each Operating System has its own advantages and disadvantages, and each was built with a distinct goal in mind. In my opinion neither Linux nor Windows is a one size fits all solution. The main question is this however: what did the Open Source developers have in mind when they created Linux and the thousands of other tools/utilities to facilitate it?

Let’s take a step backwards for a moment and ask ourselves: “What did we achieve with the digital industrial revolution?”. The answer would be rather simple: the automation of repeatable human effort. Naturally we would want the process of automating human work as easy and simple as possible. Linux and the Open Source world has a unique way of allowing us to do just that — by providing modularised programs, which I call the lego blocks of automation, and a flexible interface to join these blocks together. These lego blocks when combined together in various different ways can possibly result in systems as incredible as Google’s search retrieval engine which satisfies billions of queries in a minute, Facebook’s social media network that houses billions of active user accounts and supercomputers capable of forecasting the weather all around the globe.

The great thing about these lego blocks is that you can endow each block with certain special capabilities: some blocks would be able to do something as simple as showing text but others could possibly allow you to connect and communicate with other entire lego projects. A property of these lego blocks is that anyone can make their own blocks with their own special capabilities simply by writing code and running it. What’s even more better is the fact that I can share the blocks I make with anyone and everyone in the world (the concept of open source). This creates a non-exhaustible variety of lego blocks available for use by everyone and at this point one’s imagination is truly the only limit. The ability to make your own blocks, share your blocks with others and endow blocks with their own special characteristics provides incredible power — the power to make computers do exactly what you want. This I feel is the superpower that only some are fortunate enough to wield.

This lego analogy is so philosophically ingrained into Linux and the Open Source world that Linux itself is considered a huge lego project. Many lego pieces put together in a certain way constitute the software that actually makes your circuits, processors, RAM come to life. And just as any other lego project you can modify the operating system to your heart’s content. If you’ve heard about Linux distributions then this is exactly what they are — amendments, extensions, subtractions to the original lego structure of Linux Kernel software. The concept of distributions becomes really powerful when you realise that computational devices take on a variety of shapes and sizes according to their purpose. You could possibly be interested in running a super computer with thousands of cores and petabytes in RAM (1 million GBs), or you might be interested in running Linux on a low-end android phone, or possibly on an IOT (Internet of Things) node somewhere in the arctic. Our requirements change, and hence the operating system would need to change as well to run the hardware optimally. The operating system on a supercomputer might not be able to even start on a small android phone but a Linux distribution for an android phone might not be able to take full advantage of the computational resources at disposal of a super computer.

To solidify things, let’s go through an example of constructing our own lego project / computational system! Suppose I’m a bulb manufacturer that has set up an assembly line and I wish to document the faulty and non-faulty bulbs coming out of the assembly by taking pictures and storing them on a computer over the Internet. I would be able to achieve this by using a cheap computational device called Raspberry Pi which has a Linux distribution already specifically made for it called RaspbianOS (thank God for Open Source!). The neat thing about RaspbianOS is that it has a software lego block “raspistill” that allows me to take pictures with a Raspberry Pi enabled camera right out of the box! (What more can one possibly ask for?!?!). Moreover, the Raspberry Pi allows you to use electrical signals (from a set of pins) in order to figure out when the assembly line has stopped and then take a picture. This is the part where we will have to write actual code and create our own lego block that would have the special ability of converting electrical signals into an activation signal for “raspistill” to take a picture. Let’s call this lego block “signal-convert”. Since the actions “raspistill” and “signal-convert” need to be repeated indefinitely we need a lego block called “watch” to help us accomplish the repetition. And lastly we require a block that can transport the data from the Raspberry Pi to a computer over the internet — the lego block “scp” would help us accomplish that. And that’s it, congratulations! You have automated your work!

Now to showcase how easily extensible the above project is lets say we have a restriction that the data must be sent over a low bandwidth connection ( 256 KBPS for example). To utilise the bandwidth effectively, we would need to simply compress our images with a block called “zip” before sending the images. Thankfully for us “zip” is widely available on most Linux distributions.

Lego structure with zip

Given that Linux and Open Source is explored, its time to contrast it with the Windows world. The greatest disadvantage of the Windows platform starts with the fact that its support for the flexible block joining interface has been rather limited as opposed to Linux where the interface was provided from the very first day of its existence. This interface is also simply called as a “terminal” on Linux systems. Unfortunately, the lower support for the terminal in Windows translates into lower efficiency for the developer. Secondly, Microsoft has always operated on the ideology that programs should not be shared but rather licensed out for a fee. This drove the open source community away from Windows and towards Linux which was entirely based on the open source ideology. In the faulty bulb documenter system that we made, a lot of the tools that we needed were already available as submissions by developers like ourselves, we only had to code a single lego block. But since none of the open source community is on the Windows platform and sharing code is not encouraged then chances are we would have to build almost all of the lego blocks ourselves. Thirdly, Windows as an Operating System itself is not considered as a collection of lego blocks but is rather just one single unamendable lego block that no one can customise as per their requirements. The consequences of this is that Windows is not as portable as Linux and can only run on machines that are endorsed by the people at Microsoft. So the faulty bulb documenter system we created above would not be even possible to implement in a cost effective manner — we would need to pay for far more expensive hardware even when its not required and pay for the software license of Windows as well.

However, Windows does have certain advantages over Linux. Creating a frictionless GUI user experience has been Microsoft’s greatest concern since the early days of the company. And quite frankly, in my personal experience, they have perfected that process. The stability of the GUI on Windows outperforms the GUI stability on Linux based systems. This leads to a low learning curve to getting started to using Windows as the interface is mostly intuitional. Linux, on the contrary, has a steep learning curve that may take some time getting used to.

Although Windows does have its own advantages we have now concluded that if you wish to automate human work as cheaply and as easily as possible you are far better off using Linux and Open Source tools. Almost the entire commercial world uses it to run its systems and servers and the computer thinkers use it as their primary operating system. So why shouldn’t you?