I’ve used both Mac OS and Windows every week for the last decade, but eight years ago Linux became my operating system of choice. What was so appealing about an operating system that was often difficult to use and featured an unpolished desktop experience?
Windows offers an incredibly diverse variety of commercial and free software; the ecosystem is rich and there is lots of potential to find software that perfectly suites your needs. Both OS X and Linux also have a great software selection available to them, but there aren’t 50+ different kinds for each type of software. You’re for the most part limited compared to Windows, and will often have to make due with a lesser option.
I don’t dislike OS X nor Windows, the platforms make interesting innovations and have thriving ecosystems. However, it’s getting harder and harder to ignore that both platforms are constantly pushing for more and more control at the expense of user freedoms. Apple and Microsoft’s attempts at making Mac App Store and Windows Store the go-to-place for software, makes complete sense from a business perspective and it’s a great way to bolt-on a top-down security model to keep their users safe from themselves and attackers. It’s telling that none of my favorite programs are available in the Windows Store. Their functionality simply can’t be created using the limited set of programming interfaces that are allowed in the Store.
The key differentiator that separates Linux from Windows and OS X is that you’re allowed and even encouraged to fix problems yourself. That doesn’t mean that your computer will break and you’ll constantly have to fix it if you’re running Linux. (Those days are thankfully behind us.) What I’m talking about are software bugs and misbehaving or missing functionality. I’ve got high expectations for what I can do on a computer, and I find it unacceptable to be hindered from achieving a goal by some small bug or tiny missing feature from a program. With proprietary software, you’re out of luck at this point but with free software this is were the challenge and the fun begins.
Open source software allows for modification and many projects even encourages it. The best you can hope to do on Windows is to find a replacement software that solves your particular problem, but introduces other issues in its stead. On a free system, I can look into the issue and either fix it myself or at least identify it and file a bug report with the project. In some instances, I’ve just made a tiny change in the appearance or some small piece of functionality in programs and services for my own use and preference; without contributing them back to the projects. However, since I adopted Fedora Linux, software updates have been arriving much more timely on my system which means my local changes were being overwritten all the time. It pushed me to start submitting code back to the projects and it also meant that changes I pushed would eventually trickle down back on to my system. It’s more fun to write code when you get to share and see the results of your work out in the wild.
I’ve also grown to like the GNU core utilities and life in the command line under Linux. I can get a lot of things done on the command line that would take much more time using desktop programs. Most of the same tools are available on OS X as it ships with a fully featured BSD-based command line toolset and the Bash shell. On Windows, you’ve got PowerShell which can be made to do some great things, but it will resist you all the way. PowerShell clearly has a very limited intended user base in system administrators working at large and medium sized organizations. PowerShell is clearly not a general purpose tool like Bash. Furthermore, many of the default cmdlets — as Microsoft calls PowerShell programs — have serious issues with regards to quality. The experiences I’ve shared earlier for the Windows Task Scheduler in PowerShell demonstrates the poor level of quality you can expect from many of the core PowerShell cmdlets.
The Windows Subsystem for Linux with Bash was introduced to Windows Insiders just five weeks ago to run the GNU and Ubuntu Linux toolchains natively on the Windows platform rather than on a Linux kernel. I’m definitely all for having easy access to these great tools on yet another platform. Skills I’ve acquired over the years on Linux and OS X suddenly becomes available at my disposal in Windows.
Having access to these tools doesn’t really change the underlying problem of not being able to modify the underlying operating system or the desktop environment. There are so many small problems and details of the Windows 10 shell I’d like to fix to make me more comfortable with using Windows that I can’t do anything about. Bash on Windows 10 is a nice addition to the Windows ecosystem and it’s good to have the backing of Microsoft and the Windows kernel behind it. But at least for now, it’s just another Windows command line interface that will be plagued by limited functionality and poor quality.
To provide some extra historical context about my opinions here is the background story of my migration from Mac OS X to Linux:
The inability to fix problems in core desktop applications on OS X was actually the tipping point for me. The Mail application in Mac OS 10.4 had a bug that prevented the character encoding option from being saved. This wasn’t really a problem to many users as the default automatic option did a good enough job. However, if you tried to set it to always use UTF-8 as I did, the option would get permanently stuck on the first option in the drop-down menu, US ASCII, and every email containing characters not available in that limited character set would be stripped out of every message I sent. What really got to me — along with the fact that there were nearly no alternative email clients for OS X at the time — was my inability to do anything about the problem. I concluded that it was most likely just a tiny little problem with how the Settings dialog saved the option, maybe how it read data out of the drop-down box, or something equally silly. As OS X is proprietary, they don’t share their source code so I had no means to inspect the code and make alterations; or even determine whether it was within my ability to identify the problem yet alone resolve it.
I felt more like a prisoner to someone else’s choices and definitions of acceptable quality than I were comfortable with. The Linux desktop at the time was not as polished nor nowhere near as pleasant and convenient an experience as it has become in recent years. But at least I’d be in control of my own computer. There were mailing lists and public bug databases where people where engaged in the software they used rather than being enslaved by it. I’ve missed the uniformity and polish of the Mac desktop over the years being a Linux user, but the GNOME 3 desktop has really made big headway on the design front over the last couple of years. Linux now feels more like “home” to me than Windows or Mac ever did.