Why I Choose Linux, and not Windows
Published on 8/18/19, 2:13 PM
My computers, be it my gaming rig, or otherwise, generally run Linux. There's maybe one computer I have that runs Windows, and it isn't my gaming rig. Time and time again, people I encounter have difficulties understanding why I CHOOSE to use Linux over Windows (note: MacOS/FreeBSD and other OS' are not in the scope of this blog entry). I hear the same rhetoric, time and time again, just dual boot, run it in a VM, or just switch back to Windows because it's "better". All of them, don't work for me, and I'm tired of having to explain myself every time. Some people, are genuinely curious what my reasoning is, and others don't really care, they're just frustrated I'm not using Windows at that time. This blog is for those who actually want to understand why I CHOOSE Linux, and not Windows. And make no mistake, this isn't because I don't "understand" Windows, it's actually because I know Windows so much, I expect Microsoft to do a better job, and they don't. I've been using Windows since 3.11, and Linux for over 15 years now. I am a SME in both. I will probably update this blog repeatedly over time, as there's a lot to it. Enjoy!
Windows crashes lots, Linux almost never
Do you know what a BSOD is? A Blue Scren Of Death? Sure you do. Ever since Windows 95/98, Windows has a crash window that everyone knows about, and nobody likes. Microsoft chalks it up to "OS saving from data loss" but the fact it is still a thing, demonstrates that Windows really isn't reliable. If a driver that passes WHQL can trigger a BSOD, then what's the fucking point of that WHQL to begin with? And yes, WHQL drivers cause BSODs and other instability all the time.
Yes, Linux has a Kernel Panic equivalent scenario, but it almost never happens. Meanwhile, I hear all the time about Windows crashing, BSODs and other instability. Considering Microsoft has been developing Windows for over twenty years now, it blows my mind this kind of a behaviour still happens, and naturally is viewed as "acceptable". I can't remember the last time I had a kernel panic in Linux, and I run 20-30 Linux systems all the time. Want to update that Audio driver on your Windows install? Better hope it doesn't cause a BSOD while you're in the middle of a competitive gaming match, because you'll be powerless if it does. This isn't a thing in Linux.
Linux is faster
Linux boots faster, shuts down faster, updates faster, and for native games (and other exceptions for non-native), it even games faster than Windows. Don't get me wrong, Windows 10 is the "fastest" Windows to date, but even with the latest builds (1810), it still is plenty slow compared to Linux (on identical hardware). I've installed Windows 7, 8.x and 10, and then compared how they behave to Linux on identical hardware, and every single time, for identical tasks, Linux is faster. When I say identical tasks, I mean, turning on, browsing to websites, shutting down, getting updates (inclduing applying them). Why would I use a slower OS? This one is a no-brainer if you actually know how fast it really is.
Windows updating is garbage, Linux updating is superior
Have you ever had a Windows Update break your computer? Or perhaps the update needs to be "rolled back"? Ever get frustrated because you can't stop updates? Or perhaps it's taking FOREVER to complete? I have. I've had Windows Updates break servers, desktops, and so many installations. Windows 7, 8.x, 10, server editions, it doesn't matter, it's all garbage. Meanwhile, I haven't had a Linux update break anything in over 8 years now, and that's just the tip of the reason Linux updating is superior.
Windows Updating uses a differential engine, and in the past this has been a good idea, but it is a terrible idea in modern computing. When Windows Update checks for availble updates the first time, it needs to create an index of what's fully installed, what's partly installed, and so many other variables. This first check takes a very long time, and in my most extreme example, I've had a fresh OEM Windows 7 install take 5 entire days just to complete the first check, and then present the updates available. This example didn't even include applying any updates whatsoever. Yes, even Windows 10 has this same update mechanism in-place.
Part of the justification is because Windows needs to be able to deal with sitautions where updates are only partly applied, whether it was due to say a power failure, or a bug in the code, or whatever. This differential engine not only identifies if anything is partly installed, but it also determines which version of an update to download and install. What's that, you thought every update had only one version of it? Yeah, that's not how that works. Windows Updates (KB#'s) have many permutations of themselves, and this kind of stuff becomes more visible when you start dealing with things like WSUS. This differential engine has helped Windows in the past to apply updates to older versions of Windows, but again, it is not "good" modern computing.
Oh, and Windows Updating, yeah there's three phases to that. When you first apply it, when it applies during shut-down, and when it applies when it starts back up. Everyone that uses Windows gets anxious when they see "Update and Shutdown", because they just want their computer to turn off, not update at the most inconvenient time. And once you start it, you can't cancel it, because if you do, it'll probably break.
Linux Updating, by comparison, is a breath of fresh air. Linux uses package managers, and there's no differential engine. Package managers are generally aware of everything that is installed on a Linux system, and how it determines what updates are available is ludicrously basic. It checks the current version of a package, vs the latest package version it can see. That's it. Holy crap that is so much more simple, and it's way faster. When a Linux package manager updates software, it literally rips out the old version and installs the new version. And it downloads one version of the update, nothing tailored for the specific scenario. Plus these packages are typically way smaller than Windows Update packages, we're taling Kilobytes to Megabytes in size, meanwhile in Windows we can be talking about hundreds of Megabytes to sometimes Gigabytes. Checking for updates, downloading, and installing updates on Linux is so much faster with a Package Manager ecosystem. And there's none of this "Update and Shutdown" bullshit, there's no updating on shut-down or powering-on, it updates right then and there. And generally, you probably don't need to reboot if you update in Linux. With Windows, you almost always need to reboot after an update. What a pain in the ass, what a waste of time.
Oh, and I have NOT ONCE had a Linux update "roll back" on me, or repeatedly fail to apply because of an obscure reason that requires decyphering. Meanwhile, I've seen Windows Updates fail all the time on dekstops, laptops, servers, any version of Windows. An update rolling back should be unacceptable, and yet Microsoft thinks it's okay. I don't want to deal with that shit.
(Un)installing software is easier on Linux, painful on Windows
Linux uses a package manager ecosystem, and Windows doesn't. This is just one part of why Installing and Uninstalling software on Linux is so much better than on Windows. Also, Linux doesn't have a registry, Windows does, as well as shared link libraries, the SXS section and so much more. Installation and Uninstallation of software on Windows breaks regularly, and never breaks on Linux (unless you use a more manual method like installing by script).
In most regards, to install softrware on Windows you go to a website for each software title, download it, run the program to install it, give it parameters, and then after a good bit of time it's actually usable. This worked twenty years ago, but it's now archaic and error prone. Firstly, there are chances you could be downloading software from "bad" sources. Secondly, not all installer programs correctly set the environment up to "nicely" uninstall, if you want to. Thirdly, typically this all relies on the registry, which is a fragile, error-prone aspect of Windows. A substantial amount of IT work worldwide goes into just repairing the registry, and at times, this can be a very tall order. This whole manual process is time costly, inefficient, and error-prone. Hell, you might even be infecting yourself by accident.
Now what if you want to update, or uninstall that software? Well, Microsoft has been improving that over the years, but it is still error prone. Updating the existing software varies from one software title to the next, sometimes they update themselves, sometimes you go download and "install" the update, and in extreme examples you remove the existing application and install the new one. Not all that bad, but not all that good either, and just as time costly (maybe moreso) than installing the software in the first place!
Uninstalling, you go to "Add or Remove Programs" (or equivalent for your version), and find the software you want to uninstall. Oh wait, what's that, you don't want "Xbox App" that came with your Windows 10 default install? Or any of the other "bloatware" included in Windows 10? Well you can forget that "convenient" "Add or Remove Programs" because it WILL NOT remove it for you, you don't even get a button to try! You have to run a Powershell command, only, to remove it. Meanwhile most other programs you can uninstall with "Add or Remove Programs". But Uninstalling isn't always reliable, nor tidy. Over the now literally decades I have spent supporting Windows, it's generally presumed that any software being uninstalled in Windows will leave crap behind, be it registry entries, DLL files, or any number of things the software developers were too careless to keep track of. Over time this has consequencies, be it performance, or even stability issues. This has given rise to tools such as "Registry Cleaners" or other things that shouldn't be needed in this day and age anyways. And the long term results are generally that you should reinstall Windows to "solve" this problem, which in my opinion, is unacceptable.
Comparatively, the package manager ecosystems used in Linux (Apt, Yum, Yast, etc) are far more convenient, streamlined and secure. Generally, it does everything for you. It starts by either using a graphical tool like Gnome Software or a command line instruction (eg. "sudo apt install firefox"). Once you tell it to install the software you want, it does everything else on your behalf. Downloads, installs and does initial configuration for that software and everything it needs. All from one instruction! Plus you can have it run in the background while you're doing other stuff (watching stupid internet videos).
But wait, there's more. The package manager ecosystem is just as convenient for uninstalling software AND updating it. I'll get periodic notifications that updates are available for the software I have intalled. When I tell it to update, it downloads installs and sets it all up in one step! Much more handy than how it's done in Windows. And Windows Update only updates Microsoft products. Package managers update EVERYTHING (unless you installed it manually through another method).
I can customize Linux in ways Windows can't even imagine
I can't stress this enough. I can customize my Linux setup in ways that make it completely my own, and Windows is an embarassment in lack of cusotmizations by comparison. I'm not even going to go into this fully, because it's honestly just so much it's up to your imagination as to what you want to do. But you can customise the boot logo or animation you see, the boot menu graphics and sounds (yes, you can have it play a melody when your computer starts up), change how the graphical interface works (seriously drastically too), change how the login prompt looks and works, and on and on and on and on.
You may be thinking "oh, but I can customize Windows, there's settings for that, or mod packs I can get". Trust me, those things are a joke compared to what you can do in Linux. For example, in Windows you cannot replace explorer.exe. In Linux, you can replace EVERYTHING if you want. Hell, you can even have multiple graphical interfaces to switch between, depending on how you're feeling at that point in time. It's actually quite easy!
Windows has loads of shit you can't turn off, Linux you can turn everything off
Show of hands, who actually uses and likes cortana? I haven't met a single person who actually uses or likes it. Sure, I bet they exist. But the fact is, you can't uninstall, or fully turn Cortana off. Just look at a recent update (KB4512941) that causes a 40%-90% CPU spike just from Cortana! You also can't turn off telemetry or diagnostic data that goes back to Microsoft, even if you have the most expensive SKU! And there's tonnes of services running in the background, many you probably won't ever care about.
Windows breaks regularly and has intentionally painful error codes
Windows breaks in such absurd (and avoidable) ways. I have a Windows 10 Tablet that I bought for validation of a project several years ago. After multiple update and performance issues, I had to trigger it to reset to factory defaults (effectively), this is different from a fresh reinstall. This improved the situation, but I would expect this to be equivalent to a fresh install (and it generally was). This reset was about a year ago, and today, I'm trying to get the 1903 update from Windows Updates and I'm getting a fucking hex code for an error code. Naturally, the first solution on Microsoft "Support" forums is to wipe and reinstlal from an ISO (what a fucking joke for advice).
Whether it's a BSOD, Windows Update, or you're trying to actually read the Windows error logging, chances are, you're going to see this bullshit hex code as the only real part of the error reporting. While I do appreciate the value in a serialisation of error codes across the vast software menu that is Microsoft products, these error codes are intentionally written to be harder to work with.
Every time a programmer puts this error code into Microsoft software, they KNOW what it means, but intentionally do not put a human-legible error message in. Instead they give a vague human-legible message (which never means anything) and a hex code, that's it. It would be extremely trivial to actually say something like "insufficient disk space", "RAM test failed/RAM errors", or any number of things, while also including the hex codes. But this is not the case, and has been for the entire history of Microsoft software (since Windows 95/98 era, onwards).
Comparatively, when I go look at error messages in Linux logging, it actually is human legible, and if I need to go look up the meaning, support forums are actually helpful. If I ever have to go troubleshoot a Windows/Microsoft issue, I usually avoid any Microsoft website (unless it's a KB article) because it's usually the same solution, "SFC /scannow", "DISM command de jour", etc, and never actually addressing the original issue. With Linux error logging, I can fix my problem in orders of magnitude faster than in Windows/Microsoft Software. Oh, and if you can't tell from the rest of this page, Linux breaks at a substantially lower rate than Windows/Microsoft Software.
The obligatory "Hello World" when you start something is boring and sets the bar too low. We should expect more of ourselves.