Before I start this article, I wanted to say how excited I am to be featured on top 35 hashnode articles. This is all thanks to you, the readers.
Linux is not currently the most used Desktop operating system in the world, despite being the number one choice in Smartphones, servers and even super computers, but as time goes by, more and more developers and programmers are switching to Linux or at least considering it as their next stop.
Is Linux really a better Desktop OS than Windows or Mac? Can you rely on WSL and continue using Windows? These are the kind of questions that most users ask when they hear about Linux as a replacement and in this tech debate, we are going to answer them, as best as we can.
What is all the FOSS about?! (Free and open-source software)
To answer that, we should review some of the biggest advantages of Linux for developers, makers and programmers.
Where UNIX and Linux systems shine, is the philosophy of the system itself. Having small simple tools that can be easily composed together. Having easy to use package managers that contain every tool you as a developer could possibly need. Having the possibility to tweak something easily, should you really need it.
Linux allows you to do upgrades when you want to, and in most cases without requiring that annoying reboot. Windows 10 will forcibly upgrade itself, even when you don’t want or need it to. Imagine being in the middle of a presentation, how embarrassing it would be to tell your audience that you have to wait for Windows to finish doing its thing?
Having to reboot Windows with OS updates, or just because it wasn’t working properly. Contrast that with Linux, which can run updates that don’t usually require a reboot and can run, well, sometimes for months and years without needing a reboot.
Windows basically wants to hide you from how your computer operates. This makes things “nicer” for non-experienced users, but it makes things difficult for more expert ones.
More Sophisticated File Systems
As a developer, you work with lots of small files that get read, written, temporarily written and deleted. Unlike the NTFS file system that is being used by windows, which doesn’t like writing small files too often, Unix and Linux file systems (such as ext4) are good for that. Linux file systems support Journaling, journal check-summing, delayed or pre-allocation, improved timestamps and permissions, online defragmentation, snapshotting and lots of other features.
Windows is expensive and cost starts from $100. Linux is free and anyone can download and use it. MAC is costlier than Windows and the user is forced to buy a MAC system built by Apple. The much bigger cost for all these environments will be your ongoing maintenance expenses, as well as the amounts you need to pay for the 3rd party software licenses.
Open Source and free software
Open-source license criteria focus on the availability of the source code and the ability to modify and share it, while free software and public domain focus on the user’s freedom to use the program, to modify it, and to share it.
Linux ecosystem offers lots of free and open source software to rival paid programs on other operating systems, especially when it comes to internet, media, or computing use.
Raspberry Pi and other Single Board Computers
Today there are many different SBCs available on the market, and many of them have one thing in common: they all use the Linux operating system. Linux offers high-performance with low price and low power. It is typically the most desired OS for embedded computers. Lightweight Debian based distros are highly optimized for minimal CPU and RAM usage, ensuring your SBC always runs at its maximum potential.
Makers turn to Linux to add another useful tool to their kit that will help them build their projects more easily. Linux can be used in a headless manner for SBCs that don’t offer any video output. You can use the command line interface over a SSH connection to control the board and run different programs.
The Command Line freedom
Developers are usually not afraid of the command line and actually they embrace it! They are curious users. You can make a SSH connection to a remote server without any extra installs, right from the terminal. It is tabbed and colored, you can split the shell to several views and even run tasks in the background using screen. It has tools for searching, downloading, editing and all other basic needs (sed, grep, awk, curl, wget, nano and even make). You can also use Git very easily right from the terminal.
A production-ready environment for web developers
Most web servers like apache, Nginx and LiteSpeed run on Linux, so the difference between development and Production is much less pronounced if you use Linux. Windows uses backward slashes for directories while the rest of the computer world uses forward slashes for that and we still don’t know why! Why Microsoft?!
Today, dev tools are first built for Linux (and very often on Linux) and then ported on other OSes. If you are familiar with Docker, you know that it was a Linux-only affair and has been like that for several years. Linux has better support for dev tools and from day zero.
Docker and Containerization are getting stronger and more popular
With Docker images going stronger and stronger, this popular solution is now finding its way everywhere. It is fast, flexible and controllable. Docker is an important tool when you’re creating the groundwork for any modern application. It enables easy deployment to the cloud. After all, dev environments today, are installed as containers and they work the same, on different operating systems and run-time environments. They are self-contained, no files going around, no PATH setup. So things are changing and the playing field is becoming even for different OSes.
Docker shines compared to virtual machines when it comes to performance, because containers share the host kernel and do not emulate a full operating system. However, Docker does impose performance costs. Processes running within a container will not be quite as fast as those that run on the native OS.
No “telemetry”, Right?
Well, almost! Software, whether open source or not, sometimes includes functionality to collect Telemetry Data, which is a term to denote data about how the software is used or performing.
Microsoft collects machine and user behaviors to different degrees of details, but it seems there’s no way to completely switch it off at system level. A lot of system admins try to block the Microsoft telemetry servers in the firewall.
Any Linux Foundation project is required to obtain permission from the Linux Foundation before using a mechanism to collect Telemetry Data from an open source project. In reviewing a proposal to collect Telemetry Data, the Linux Foundation will review a number of factors and considerations.
Most of the Linux distros let you disable the telemetry very easily and with their open source nature, it’s easy to investigate the type of data they collect and where are they sent to.
In Linux, sometime even a simple C++ compiling is faster than windows on the same machine! There are various benchmarks and test videos that you find on YouTube. Most of the user benchmarks show that software building and compiling takes less time in Linux and the file system, kernel robustness and better dependencies play an important role in the final outcome.
OS degradation by time
Windows relies on a central “Windows Registry” for storing a lot of configuration settings, not just of the OS, but most of the apps you install. Every time you install something, the larger the registry gets and eventually the Registry will cause the OS to slow down. Sometimes defragging the registry helps, but there are times that you are forced to reinstall the OS. Some apps are poorly written and they leave orphaned registry data clogging up space even after uninstalling them and worse, when the registry becomes corrupted, you are kind of screwed.
Contrast that with Linux, where configurations for individual apps are stored in hidden directories and files. If one gets corrupted, the rest are safe, and, you’re not having to load all the settings for all things; just the ones you need.
Lack of consistency for tracking and making software updates
Virtually every program you install on windows has its own way of checking updates, if they do so at all. Many of them would check for updates during the program startup. Some install separate update apps to check for updates periodically. Think about the resource usage when you have a few of these running in the background. Some apps don’t check for updates at all and you have to manually look for updates and apply them individually.
Contrast that with Linux, which uses repositories that are regularly checked and you can run all of your updates at the same time with minimal interaction.
Haters gonna hate
Although some developers love Linux, some are windows haters and believe that with windows:
· More system resources are wasted on a bloated OS.
· There are more annoying interruptions to your work, because Windows knows better than you what you should be paying attention to.
· More loss of productivity because windows knows better than you when it’s a good time to install updates, reboot, or just crash and lose your work.
· More security risks and yet more system resources wasted mitigating them.
· More spying on you.
· More suspicious, malicious, and garbage software to avoid, contain or mitigate. Some of it even comes pre-installed!
· More expenses for commercial software if you want to avoid trash software.
· More time wasted installing and updating both kinds of software, because app stores and/or trusted software repositories are for geeks! There is a Windows app store now, but it only covers a small amount of apps.
· More time wasted on system maintenance, updating drivers and reinstalling Windows.
· Windows has a very long and nasty track record of poor security.
Windows Subsystem for Linux
A fair amount of people believe that WSL is the answer to some of the shortcomings of Windows. Although it’s a cool addition to Windows, it doesn’t fundamentally change the answer, because it still isn’t what “Windows has to offer”. It is still Linux offering it, you are just using it via Windows. If you need Windows for other reasons, yes it’s a reasonable, yet limited alternative, although you can use Windows inside a virtual machine in Linux.
After all these years, there are a lot of free and open source alternatives that you can use for day to day usage and it gives the developers the confidence that they can switch to Linux without worrying about the apps they need. The UI of Linux Desktop distros have evolved drastically over the past few years and now they offer a modern and sleek GUI, although there are some lighter Desktops that are more suitable for older machines.
A lot of programmers choose Linux because it is fast, secure, modern, the community is getting bigger and bigger and they have access to the apps they need, very easily and in most cases for free. They can work in an environment that is close to their production platform. They can develop apps on a reliable and consistent environment, with distros that offer long term support releases with 3 to 5 years of active development and support.
One of the greatest things about no longer using Windows is when friends and family ask geeks to help troubleshoot their Windows computers, they can honestly tell them that they have no idea how the latest versions of Windows work and they are not able to help.
If you have a lot of friends and family who constantly run into complicated and frustrating windows problems, you too can also consider switching to Linux!
Let us know your opinion in the comments. What do you think about Linux as the daily driver for your development work? Are you using Linux and if so, which flavor of it are you using.