Why Linux

After spending a ton of time using Linux, it occured to me, why should one use Linux? Why pick one distribution over the other?

Apart from the obvious, it is the philosophy.

You prefer Linux over Windows, because in every essence of it’s design, it assumes that the user knows what they are doing, and that in the default state of the OS, the user should have complete control over their system.

You pick one distribution over the other, not because it has ‘Gnome’ and the other has ‘i3’. Linux systems are the most versatile and modulars, so you prefer one because you agree more with it’s philosophy regarding installation of apps, or how bleeding-edge it’s update-cycle is, or it’s stand on keeping non-FOSS software in it’s repositories.

That is the only thing that is truly different, and truly matters. Everything else is a matter of picking the most convenient starting-point for how you want to configure a system to your liking.

If you want to learn about computers, ditch Windows, run Linux for a year and figure everything out. Windows was built for comfort and consumption. Do all your assignments, try to run different programs and script on Linux for a while. It will help.

The nature of Linux is such where you have to gain a deeper respect for software - edit config files, understand how things work, that you gain horizontal / peripheral knowledge of operating systems.

However, beyond a certain point, expect these gains to level off. You are going to spend most of your time in a code editor - writing code, compiling and debugging. That part stays the same on either OS, you just have to get better. So, keep exploring, but also go in depth vertically. Dive into books and documentation too.

A big problem for new Linux users is the paralysing number of choices they have to make before even getting started. But, why?

The reason behind the existence of tens of distributions (short: distros) of Linux lies in the freedom of the ecosystem.

There is one Windows 11 Home and MacOS Sonoma, because their usage licenses do not permit modification and redistribution of code. Today, there is Ubuntu 24.04, Fedora 41, Debian 8, and tons more.

There are many layers of software on your system that together make things work. An operating system is an init system, bootloader, driver, kernel, coreutils, package manager, window manager, user apps, … etc.

Each of these software components have open-source licenses in the Linux ecosystem. Every distribution is a permutation of the various choices of these software components.

Behind each choice to be made, lies an opinion to be had. Due to differing opinions and requirements, there are multiple options of each of these software. For example, would you like open-source or proprietary drivers, frequent app updates or staggered ones, seperate apps for individual things, or big apps that handle many things?

This is also why Linux is generally used by more technically-able people, who understand the landscape of computers better, they are able to make their own choices. Users of Windows and MacOS tend to keep the choices given to them.

Even though there are many distros, there is a lot of overlap between them. All Linux distros share having a similar kernel - the Linux Kernel. Most distributions are not unique, they piggy-back on existing ones, and change some things to their liking.

For years, this fragmentation has perhaps evolved into a problem. There need not exist so many distributions. Usually, the changes introduced by piggy-back distros are updated to be available in it’s parent distro.

In terms of app packaging and installation, I don’t find Windows inferior.

First, let’s go over drivers. The point of using Windows is preferring the proprietary software and drivers. Today, most drivers are automatically downloaded by Windows Update.

Similarly, on Linux, most people don’t have to think about drivers at all. There is no comparison unless you have some specific requirement.

When it comes to apps, both systems are equal, albeit with different approaches.

On Linux, the cherished terminal is touted as a fast and straightforward way to install apps. I am a hardcore terminal user and don’t shy away from it. However, on Windows, installing apps is better than people like to believe, and how it is perceived online.

The problem historically with Windows has been hunting for downloads on websites, incomplete appstores and pointless installation wizards (most users just click next anyways). This is all scriptable.

A CLI package manager on Windows makes a lot of sense because there one target binary to compile for - amd64 (others being 32bit and ARM, but that’s a minority). Even Mr. Torvalds commented on the relative ease to compile binaries for Windows.

This was solved by Winget. The community can add packages, and it can update all the apps in your system. It’s perfect.

The Windows Store, Winget Package Manager, and it’s slew of GUI wrappers, and simply searching for apps on Google gives you access to an equal or greater set of apps to install, and they work reliably.

The problem with Linux is fragmentation, 20 distros, many package managers, and target formats. Windows has the holy exe (and msi).

The idea way to go about this is to provide a tar.gz, and distribution maintainers package it for their distro, but why add that extra overhead?

On Linux, although it is nice to open your terminal and install popular apps in one command, it is not always that simple, with version, availability, and permission issues.

The problem with Linux is needless redundancy. There are a lot of disparities in package managers and packaging formats, and one can easily run into version and availability issues. Having to package apps for an increasing list of distros and their versions, is incredibly wasteful. The various app standards are repetitive and confusing for new users.

In my experience, the ‘correct way’ to navigate this web of standards to install apps is to use system-wide dependencies for most things (your distro’s package manager) and Flatpak for certain apps. Not everyone is clear about this, and at times, I do stumble across Snaps and AppImage as the only available formats for apps that may be non-negotiable for me.

You can just not care about these issues and install whatever you want, that leads to another issue, “dependency hell”. So, it is not a perfect solution. What matters is getting used to either workflow.

The AUR on Arch Linux solves this. The truth is, everything is a tar.gz and a desktop file, that you need to symlink in /bin or /opt. I don’t use any other package-format, and am satisfied with my current setup.

When it comes to availability of apps, I suppose that there are some non-negotiable apps not present on Linux, which make people stray away from it. I run developer apps every day, and appreciate what Linux offers.

Notice why Windows and MacOS are called operating systems and Ubuntu is called a ‘distro’ (short for distribution)?

I suspect this is because Linux distros don’t have a singular, unique, defining experience, other than interfacing with the terminal.

W11 and Mac have this specific feel and vibe. With Linux, there is no one defining characteristic. You could make it look like either, or something completely different (with a tiling WM).

Using Microsoft Windows 11 is like using MS Office to edit your PowerPoint, share it through Microsoft OneDrive, then use Microsoft Edge to install another browser :p

You get it? A defining experience.

Lately, I’ve absolved my skill issues, and completely switched to Arch with KDE. Most of my work is done in fully-maximised windows, in the terminal, code-editor, browser or obsidian. My machine runs on 1GB ram, 1% usage on idle. It’s good :')