26 September 2024

Why do I choose Linux in 2024

Computers are my hobby, my passion, my bread & butter. I’ve used them since infancy and I spend a lot of my time in front of them now. This makes much more involved in art of interfacing with a computer than an average user.

I’ve tried three major desktop operating systems for a long time. Windows, macOS and multiple Linux distributions. This is my honest review of my experiences and not just a rant than Linux is better.

My usage of graphical applications is mostly limited to a terminal emulator, a browser & games. I do have a lot of terminal applications with neovim in the head of the pack.

Windows

I have a long and pleasant relationship with Operating Systems developed by Microsoft. It started with MS-DOS, the reason I’m aware that terminal exists, and I consider it to be cool. I followed Microsoft to Windows Mobile 2003 for a Pocket PC and later to Windows Phone for HTC Titan.

Windows always had its quirks, but it was never a bad experience. XP startup & shutdown sounds are forever living in my brain rent-free, and I’m happy to host! Classic, Luna blue from Windows XP, aero and even Metro styles still give me joy!

It wasn’t bad enough for me to look for something else, I always got my work done. But I was curious. And once I’ve got familiar enough with Linux, Windows was not good enough to keep me. Though, I’ve dual-booted for at least 4 years.

The last version of Windows I’ve used on a bare metal was Windows 10. Then it moved to a VM on a server. Then it was no longer useful & we finally parted our ways. Nevertheless, I do still keep an eye on it.

🪟 pros

Besides fun memories there are things that are objectively good about windows.

Software availability. Windows is the most popular Desktop Operating System by quite a margin & for a long time. It’s the main target for software developers. Cool professional software? You can find it for Windows! Audio & video editing, 3d, CAD, simulations. “Developers, developers, developers” was a good idea. Doesn’t mean that software is stable & coherent, but it is there and it works.

Gaming. While games are art, they are also software. I guess, Windows has the biggest list of exclusives and definitely an enormous amount of supported games that takes more than a lifetime to complete.

Hardware compatibility. Desktop computer parts & laptops manufacturers are almost exclusively focused on supporting Windows. Peripherals are developed with Windows drivers & software in mind. The bigger chunk of Virtual Reality headsets work better or even work at all with Windows. Steering wheels, macro pads like a Stream Deck work with Windows. It’s a first class citizen experience from the get go.

Windows Subsystem for Linux (WSL). Running native Linux applications in Windows! Most of my development under Windows was concentrated in one IDE. Usually the one I don’t like. WSL help to bring UNIX way of development when there are multiple parts that do their job well and interact with each other. Cherry-on-top - piping from one distribution to another. This is a unique feature that allows to collect data with Kali, process it on Ubuntu and visualize in Fedora.

🪟 cons

Software repository or a store. Even though Windows has a lot of software, in many cases you have to download it from a developer’s web-site. For a long time there was no centralized software delivery mechanism. When Microsoft/Windows Store finally emerged, it was limited to Universal Windows Platform apps. So it had almost no software. I’m not sure how the store works nowadays, I saw claims to make it more open to any kind of software. Of all the software I use only blender was there. There is a third-party solution - chocolatey. It is good and has almost everything I need.

It’s a target. Since Windows is the most popular desktop OS, it attracts hackers attention. A lot of it. Event if it is the most secure OS which it is not, it is an extremely huge piece of software that changes at a rapid pace. It’s doomed to have bugs and vulnerabilities. Which paired with extra attention from nefarious makes very susceptible to attacks.

Ads & changing behavior. Start menu was completely redesigned multiple times. It keeps changing in Windows 11, and it has ads for 3 generations of Windows. But adds are not limited to Microsoft. You may occasionally encounter popovers with a logo of a video card manufacturer or a codec implementation. It might be fine in the window of a product I’m opening, but they exist on their own. It’s not a deal-breaker, but it does give me an unsettling feeling that I’m not in control of my machine. And I’m not in control of the OS I’ve paid for.

macOS

I’ve got into daily driving macOS after using Linux. So I’ve expected the same UNIX versatility with Windows UI polish. Well, it was not, what I’ve expected. It was good nonetheless.

🍎 pros

Power efficiency of M series which lead to mind-boggling battery life. Since I don’t render videos and compile software all the time, there are only Safari and a terminal emulator to sip the battery. Going through multiple work days one charge - easy! I’ve never experienced such a thing before.

Ecosystem. iCloud for photo & file sync is convenient. It just works and does so in a background. Syncing Obsidian vaults is a better experience with iCloud than with native solution. I’m not afraid to lose any valuable date with a device. Connecting to iPad or iPhone tethering from another Apple device is a bliss. It’s possible to turn on tethering from a device you or a trusted person wants to tether to. No need to look for a phone. Forwarding calls and messages to your other devices just works.

brew & nix software availability. Event though these are not official ways to get applications, they often provided software that I needed and that was not packed or brought up-to-date in official Ubuntu repositories.

Hardware. It’s a debatable topic. Louis Rossmann has already said a lot on this topic. Apart from longevity & repairability issues, macbooks have gorgeous displays & speakers. Rigid aluminum bodies that can withstand some beating up. M series performance is astonishingly good for a laptop form-factor, especially with such a long battery life.

Software & peripherals compatibility. Many professional & industrial solutions support macOS. Stream deck has official support. Support for macOS is not as broad as for Windows, but it’s coming close.

Rosetta is actually cool. Instead of waving goodbye to all x86 software, Apple came up with really good translation layer that even made gaming possible.

🍎 cons

UX breaks when you “hold it wrong. Apparently, having multiple keyboard layouts is wrong. Beautiful pop-up that shows current layout prevents actual layout change until it disappear. It’s possible to fix, but it requires much more than one check box. iCloud used to be transparent about files being stored locally, in cloud or both. Users had control over it. Now it’s “magic” that users have no control over. I was stuck with full drive and no way to delete just a local copy.

Tiling window management is holding you windows wrong, so it has no official support. It is provided by a third-party software - yabai. It occasionally breaks with macOS updates & requires deep system manipulations that lower security level.

No official ecosystem for terminal apps. brew & nix are community add-ons with little to no support from Apple. When I’ve used nix on macOS it couldn’t add an application to the application launcher.

No native Docker support. It runs in a virtual machine, sometimes event with x86 emulation. Better than not running at all, but it’s slugging & drains the battery.

Limited hardware with ridiculous prices. You are not allowed to run macOS on anything but Apple hardware. Not even a VM of macOS. I’m not saying that you can’t, but you’re not allowed.

Isn’t suited for server use. There haven’t been publicly accessible Apple server for a long-long time. Why do I even bother with macOS server? I want my CI/CD to build macOS and iOS software, but it’s not possible without macOS. Mac Mini is a neat & compact alternative, but macOS user & service management spoils whole experience. The last time I’ve tried to use remote access it meat using actual session streaming instead of a virtual one. This way everyone could see what happened on the computer and could interact with it.

Linux

First time I’ve encountered Linux as a gorgeous login screen on a cheap laptop in an electronics store. There were plenty Windows laptops. There were several DOS laptops. And then there this different one. I haven’t even logged in before blasting Windows on it.

Even though that instance of Linux hasn’t survived, it made me aware that there is something else & it’s beautiful. I’ve ended up playing a lot with Ubuntu 10.04, reinstalling it multiple times a day because I’ve bogged my installation & had no idea how to fix it.

A lot of distro-hopping later I’ve ended up on Fedora 22 with i3. Then Arch with sway from 2016 till 2021. NixOS with hyprland and unstable channel since 2021 and still rolling.

🐧 pros

There Is More Than One Way To Do It (TIMTOWTDI). Do whatever. It’s the most incredible thing about Linux. Customization is king. My computer isn’t usable by even a proficient Windows or macOS user, and it’s OK. It is tuned to get out of my way and not to be understood by everyone.

Tiling window management is a first class citizen with a plethora of options.

Developer are reachable. You complaints and suggestions might be not only heard but actually implemented. There is a community to help you and option to do it yourself or hire someone.

Software management depends on a distribution. In general there is a central place to install & update almost everything you want. Side-loading is available in common download & install way, but it’s better to connect additional repositories. This big brain move plugs updating external software into the general install & update procedures. nix or guix support tracking and pining particular versions just like .lock files do for developers dependencies. And there are alternative packaging formats their central and alternative repositories with even more software: spans, flatpak, docker.

Demystifying servers & cloud. This one is for developers. It helps to figure what hides behind a green play button of IDE and CI/CD magic after git push command.

Development with UNIX philosophy. While it’s possible to install a full-blown IDE, it’s also possible to use OS as IDE.

🐧 cons

Popular proprietary software availability & support is lacking. Adobe Suite, SOLIDWORKS & Microsoft Office are not available. Figma, Notion and many-many more are not available. It’s not all bad. There are DaVinci Resolve, Quartus, Obsidian and many more. Plus browsers versions.

Variety and smaller user base make getting support more difficult for an average user. There are several versions of macOS and Windows but the amount of supported ones is small and almost manageable. With Linux there is no single target for developers and support people. Even Ubuntu 24.04 can be absolutely different beast comparing to another Ubuntu 24.04 because user might choose to use zen kernel and non-default DE. Your combination of things might be unique. It significantly complicates figuring the problem out. My advice it to stick to defaults until you feel comfortable to dig around on your own.

Hardware compatibility. It’s good enough that you have good chances to run Linux on your current x86 hardware, but it’s not guaranteed. Before buying new hardware for a Linux setup it’s safer to search for support situation. It’s still easy to encounter WiFi card that doesn’t work or had bad performance under Linux.

Game availability. Even though SteamDeck brought Linux gaming into public view and massively increased Linux support for Windows games, there are new games that run on Windows only. Usually due to unforgivingly invasive anti-cheat system. Even old games can become unplayable due to an update, because developer doesn’t care about Linux compatibility.

Steam renders shaders all the time. It’s not an issue for SteamOS on a Steam Deck and probably something else. My NixOS setup spend some time rendering Vulkan shaders after every update.