For the last 15 years I have been flopping between Linux and MacOS as my primary desktop; whenever I owned a PC I would run Linux, and whenever I owned a Mac I would run MacOS. As long as I was running some form of a Unix-like operating system I was a happy camper. However, even when I was running MacOS on my primary machine, I still had Linux machines somewhere; either for hosting websites or on other computers in the house, Linux was somewhere and I was constantly learning on it.

During my last switch to MacOS, GNOME 3.0 wasn’t a thing yet and GNOME 2 and KDE 4 were arguably the most advanced desktop environments available for Linux. Compared to MacOS at the time, the Linux desktop environments weren’t even in the same league.

A lot has changed over the last couple of years though; GNOME 3.0 is better than any other desktop environment out there (including MacOS and Windows), my stance on the proprietary-ness of certain software has changed, my stance of government has changed, and on top of that Apple has been going in a direction that I’m not quite happy with. For the last point, the following are just some of the reasons why I no longer like Apple:

  • Their strive for thinness has caused them to compromise in certain areas unnecessarily, including battery size, overall system specifications (likely driven by battery size), and port availability. Other than discrete GPU and SSD performance, new Retina MacBook Pro you can buy today barely beats the 2014 version that I own; passmark scores are barely better and you can still only get 16GB of RAM. Additionally, all you get are 4 USB-C ports and a bag full of dongles.
  • The removal of MagSafe on new models, the port that has probably saved tousands if not millions of Macs from being flung to the floor, and in my opinion was one of the primary differentiators of their hardware.
  • The remove of the headphone jack on new iPhones.
  • Their hostility against third-party repair shops and their reluctance to even fix some of their own hardware, even brand new.
  • The slow movement towards only being able to run Apple-approved signed software on MacOS; while you can still enable the “Anywhere” option via the command line or manually approve apps, this is more than likely going to become completely required over the next few years.
  • Regularly dropping support for hardware about seven years old or older (sometimes earlier) even if they’re more than capable of running the current version of MacOS.
  • Inability to easily replace batteries, requiring a lengthy procedure of removing the logic board and using chemicals to loosen the glue that’s used to hold the batteries in.
  • Extremely short-travel and noisy keyboards.
  • The Touch Bar; not only do I not want a touchscreen interface on my keyboard (I’d much rather have the f-keys), the Touch Bar itself requires iOS-like activation and MacOS will refuse to boot without the appropriate firmware. While Apple still sells a model with a normal function key row, it cannot be configured to the same specifications as the Touch Bar version.

On top of that, the world has also changed quite a bit. Vendors are constantly under attack from several governments to place backdoors in or hand over security keys to their software, and at the same time served with gag orders preventing them from publicizing what is going on, all in the name of “national security”. The only way to prevent this is to only use open-source software for infrastructure-type use cases so that the code can be audited and compiled by individuals. Operating systems and their kernels, networking software (including routers, modems, etc.), security software (SSL/TLS, PGP, dm-crypt/LUKS, etc.), communications software (which should use appropriate cryptography), any and all software that runs with elevated privileges including drivers since they run in kernel-space, and languages/frameworks and their compilers. Any other software that doesn’t meet this criteria such as games, text editors (including IDEs), etc., are just fine as proprietary software as they’re then being run in a controlled environment. In fact, I used JetBrains’ WebStom to edit this article.

Because of all this, I finally installed Linux on my 2014 Retina MacBook Pro about a year ago and have been using it more-or-less happily since. There have been some issues and roadblocks, however it has yet to be anything that isn’t fixable with a flexible Linux distribution. The only piece of proprietary software I currently use on my MacBook that meets the above definition is the driver for the built-in Broadcom wireless/bluetooth card. Unlike other laptops, this “card” is not removable as it’s soldered to the board, and therefore my only option to not use it would be to use a USB wireless card. I have also managed to disable the built-in NVIDIA graphics and enable the integrated Intel graphics, so I’m able to use the open-source Intel drivers, though I have lost the ability to use external monitors via the built-in HDMI and DisplayPort ports. I however am still able to use external monitors via a DisplayLink adapter which, while the software that runs the compression and communicates with the hardware is proprietary, the piece that hooks into the kernel is open-source and the rest runs in userspace.

Therefore, I now exclusively use Linux on all of my personal computers and servers, along with encrypting everything when possible and practical. At the moment, I’m even able to use Linux for developing .NET software (mainly thanks to Microsoft’s open-sourcing of the .NET Core framework and JerBrains’ .NET IDE, Rider) at my place of employment. On top of that, if Apple keeps going in the wrong direction, this MacBook will be the last piece of Apple hardware I ever buy; if they do wise up, however, I might consider buying a new MacBook to run Linux.