It is no secret that programmers love Linux. This is despite the fact that many better IDEs for software development are available for use exclusively in other operating systems like Windows and Mac’s OSX. I myself have recently switched to Linux and have moved all my software development work to Linux from Windows. In this article let’s explore some of the reasons which push Software engineers to Linux.
The Short Version of the Answer
The Top 7 reasons that make programmers love Linux are the following!
- Reason#1: There are more devices running Linux than Windows and OSX running devices combined!
- Reason#2: Freedom that comes with Open-Source free software
- Reason#3: Lack of options on the other operating systems
- Reason#4: Ability to automate tasks using GNU Tools
- Reason#5: Sophisticated tools
- Reason#6: Easy of installing and updating software
- Reason#7: Efficient usage of resources
Now that we have looked at the short answer, let’s go ahead and look at the longer and more informative version and explore the above reasons in more detail. If you want, you can jump to the section of interest using the table of contents below.
So let’s begin!
Reason#1: There are more devices running Linux than Windows and OSX running devices combined!
Yes, you read that right!
If you are a beginner to the Linux world you might wonder doesn’t Microsoft and its Windows Operating System hold the majority of market share in Laptops and PCs!
Yes they do, but desktops and PCs are a small portion of computing devices worldwide. An average household that has 2 Windows devices has almost twice as many Linux devices! No, I am not talking about your Android smartphones, I am talking about the other silent Linux runners in your homes like your smart TV, your routers, DVD players, your cars GPS and navigation system perhaps even devices like refrigerators and washing machines, if bought in recently, then they are probably running Linux!
These devices are also known as embedded Linux devices and if you wish to learn more about Embedded Linux, I have written an article about it and also made a youtube video which you can find in the link below.
Other than embedded Linux devices in your home, the supercomputers of the world, the web servers and cloud services, all of these devices run Linux!
It is just logical that programmers that develop software for these Linux devices would like to develop natively on a Linux computer than using cross-platform tools and make things complicated on other OSes!!
Reason#2: Freedom that comes with Open-Source free software
To understand this reason we need to look at the story behind the evolution of Linux
Before the Beginning of the Linux Era
Before Linux, Windows and Mac came into existence, there was an operating system named Unix which was developed at Bell Labs in AT&T. (The same place where C Programming Language was developed!) But AT&T was not allowed to sell this Operating System as they were a huge company back then in the Telecom industry and the U.S government wanted to make sure a monopoly doesn’t form in the computing industry. So instead of selling Unix, AT&T decided to license its source code to Universities and other companies for a fee.
At that point in time, a group of young software professionals, who licensed this Unix operating system wanted to make some changes/improvements to Unix as they had the source code and they wanted everyone to benefit from it by distributing those improved versions of Unix. But the license prevented them from doing so, which they felt was unfair as all the work they put in is not going to have a good impact on the rest of mankind.
Also, there were other software at that time, which did not even give them access at the source code, as it was distributed as plain installable binaries (as most paid software is distributed today)
They then decided to form an organization called the “Free Software Foundation” with some simple rules to achieve their goal which is to make sure that the user of the software has control over what the software does on his/her computer and not the software maker.
To accomplish this goal they made 4 simple rules/guiding principles/freedoms
- the user decides what this software can be used for
- the source code will always be distributed with the software
- the user is free to give out copies of that software
- the user is free to make changes and give out those changes
By using these guiding principles, they wanted to make their own software to replace Unix and the GNU project was formed to make their own copy of the Unix operating system by writing all the code themselves.
GNU stands for GNU is not Unix, a recursive acronym.
All the software was ready but the kernel was getting delayed. The kernel is the core of the operating system which makes an interface for the software and the hardware.
Luckily for them, a Finnish student named “Linus Torvalds” was making a kernel as a hobby project. He contributed his code to the GNU project and thus GNU/Linux Operating System was born!
How these Free and Open-source software help modern-era developers?
Alright now that we know how Linux came to be, let’s see how this philosophy helps developers build systems.
When we build any system other than personal computers or laptops, you need to first program in an operating system before you can start programming your application. The commercial options fail here most of the operating system is locked down via intellectual property rights and only a very basic API is available for the application programmers. For example, you can’t just install Windows 10 on the washing machine or smart TV your company is manufacturing as it can only be used with PCs.
But Linux on the other hand, being Open source, the source code can easily be edited to accustom the peculiarities of our device. This way the manufacturer and developer will save tons of money on custom operating system development!
A famous example of this is the Android operating system and smartphones! No one can deny the fact that the smartphone world as it can be seen today would not have existed if Android OS was not developed on top of Linux!
Modularity of Linux
Also I have mentioned a little earlier that Linux can run even on simple routers and fridges. What makes this possible is the extreme modularity of the GNU/Linux operating system.
Building a Linux based device is more like playing with Legos. If you have a resource-constrained machine, you can strip away parts that you don’t need for a specific application and just keep the modules you need to make Linux run on simple hardware without PC grade CPUs. For example, your router does not need output devices displays and speakers or input devices keyboard, mouse or joysticks, and hence all the operating system’s module related to these input/output devices can be removed and a very simplistic operating system can be created whose whole job is routing IP packets to the internet!
On the other hand, you can add more modules and make use of multiple CPUs to create a really powerful supercomputer using Linux! Most of the world’s supercomputers run Linux!
Thus Linux being opensource has changed the tech industry a great deal in the past few years!!
Reason#3: Lack of options on the other operating systems
Consider this situation, you are using Windows 10 or OSX and you don’t like the way your desktop looks, then all you can do is change the wallpaper that’s it. But in Linux you can change the entire way it looks and works just in 5mins but installing another Desktop Environment!
I have written a separate article on Desktop Environment explaining what these are and how they differ from Linux distros in the article given below. I suggest reading that if you are interested to learn more about Desktop environments and how they fit in the Linux distro world!
It’s not just about Desktop environments, in Linux, you can change just about everything. You can choose an init system, you can choose keyboard shortcuts for your favorite apps, you can even choose to boot with a specific Kernel version if you want! You just need to know what you are doing!!
Everybody likes having options and programmers are naturally tech-savvy and they spend a lot of time in front of a computer every single day and hence they like making their computers more personalized. Since Linux gives them this option, this is just one more reason for them to love Linux!
Reason#4: Ability to automate tasks using GNU Tools
Linux gives its users the ability to automate repetitive tasks so that the programmers can focus on the more important things. Say you need to take 10 steps each time you need to upload the program you are working for to your repository. These steps can include
- building the code to make sure it compiles and links,
- running some unit tests,
- running some system tests,
- making a package, etc.
You can simply write a bash script one time and let it run for every time you need to push your code to the repository!
This is just one example of automating tasks using scripts. Basically, every task that you need to do on a repetitive basis can be automated on Linux, and it just saves so much of the programmer’s valuable time!
Reason#5: Sophisticated tools
During the early and middle eras of the Linux history, it was used by tech-savvy people and as such a lot of efficient sophisticated tools were developed to satisfy the developer’s demands. This led to the present day leaving Linux with a rich eco-system of developer tools that everyone can get the benefit from.
A good example of this is Kali Linux, a Linux distro used for penetration testing by organizations all over the world! This distro has a very rich set of tools particularly targetted to discover network vulnerabilities and operating systems like Windows and OSX are not even in the same ball-park when it comes to penetration testing tools!
On top of that you can make your own custom tool just with the help of GNU tools, piping there inputs and outputs together and making some bash scripts!
Reason#6: Easy of installing and updating software
Softwares have dependencies. Any software you install is built on top of other software and hence they are dependent on the base software to be present in the system for them to run on top of. That’s just the nature of the Software world. It’s just easier to build on top of an existing system than to reinvent the wheel each and every time!
For example, if you need to run a java-based application, then you need to have a Java Virtual Machine installed first. If you need to run python-based apps, then you need to have the python interpreter installed. These are just some simple examples.
Practically any software will not just have one dependency, it can have tens and sometimes even hundreds of dependency packages. This posted a need for automating this process of downloading the dependencies along with the packages that the end-user needs
In non-Linux operating systems, it’s the software provider’s duty to make sure the dependencies are packaged along with the application. If a bad version of one of the dependency is already installed this can cause further time investment on troubleshooting issues and this can make the entire installation process last hours instead of a couple of minutes it really should have taken!
Linux on the other-hand has built-in package management software, which will automatically resolve all the dependencies leaving the end-user focus on more important tasks. All you need to do is give your Linux computer a single line command and it will do the rest for you.
You can read more about package managers on a previous article that I wrote in the link given below.
Reason#7: Efficient usage of resources
This is the reason that made me switch to Linux in the first place. I had this laptop, which started getting really slow with time to a point when it became unpleasant to use because of lags. Initially I thought the software has evolved too much over the years and now the hardware can’t keep up anymore. But as I analyzed the situation I began to understand that the software did evolve but the evolution only hindered my workflow and was of no help!
Most of the background services that were running in the system slowing it down to a crawl were of no use to me personally for the kind of work I need to do with my computer but they were “essential” for the operating system and hence the end-users had no option to stop those services (without leaving behind some security vulnerabilities at least).
Hence I decided to go ahead and switch to Linux, on which the exact same workload which is of importance to me consumed about half the RAM and CPU, leaving a smooth and responsive system, thus giving my laptop a second life!
These are just a few in a list of hundreds of reasons why programmers love Linux.
And with that, I will conclude this article!
I hope you guys enjoyed this article and learned something useful.
If you liked the post, feel free to share this post with your friends and colleagues!
Here are some of my other articles that might interest you!