Choosing a Development Operating System

Picking an OS for daily development tasks

Can Linux or Windows replace Mac OS?

After using Mac OS as my primary operating system for development over the last eight years it's time to find a suitable replacement for my new workstation.

As a fullstack software developer I have a lot of experience managing headless linux systems but it’s been a decade since I have used a Linux distribution as my primary development operating system. Ease of use, tooling (especially via the command line), reliability and some form of smooth user experience are of particular importance to me. If selecting for a laptop I would also put emphasis on battery life however as this is for a desktop workstation I will not be taking this into consideration.

For the most part Mac OS has been a perfect blend of Unix based operating system, with powerful tooling, excellent battery life and a seamless user experience - but the time has come to try something else (unless I want to try a Hackintosh) build).

Windows

May 2019 and Microsoft announced the introduction of an updated Linux kernel in Windows 10 (codenamed WSL 2) it is now possible to run linux commands on a Linux 4.19 kernel inside a Windows 10 session. This is a big deal, especially for developers like myself who write software for linux but use their workstations for other purposes (video & photo editing) - it is now possible to run native linux commands inside Windows. After battling Windows when trying to set up a development environment and my dislike for the builtin command prompt/powershell I am very happy.

Combined with a large majority of photo and video editing software optimized (and sometimes only available) for Windows I will definitely have a dedicated partition on my boot drive for Windows 10.

Privacy issues and invasive request for permissions as Microsoft pushes Cortana will however deter me from using this as my primary operating system for the time being.

Linux

With Windows out of the picture - Linux is my go-to solution but with hundreds of distributions which one is the best for me? Based on past experiences I’ve narrowed my choice to the latest releases of Fedora 31 [Linux 5.3.7] or Ubuntu/Linux Mint 18.10 [Linux 4.18]. These are less stable than their server counterparts (Cent OS and Debian respectively) which is perfectly acceptable for a day-to-day workstation where I can afford the occasional crash in favour of more up-to-date software.

Ubuntu/Mint

Ubuntu and Linux Mint - a modified version of Ubuntu focused on ease of use - have an incredible amount of community support available; often receive prioritization of packages (developers offer their source code with “Install for Linux from source” and “Install on Ubuntu” options); and are arguably the most polished options available when choosing Linux as a desktop operating system (although I have been hearing good things about MX Linux which is based on Debian Stable).

For a developer they offer a native Linux experience - crucial when writing code for a Linux production system - with the latest packages for popular programming languages and plenty of packages available to install for media playback and manipulation. Other than the lack of “it just works” that you get with Mac OS - Ubuntu is an excellent option.

Fedora

Released under two weeks ago (October 29th), Fedora 31 is an appealing choice. The Workstation edition advertises itself as “created for developers” offering a superb developer experience out of the box. With Python 3 becoming the primary command, cutting edge packages and the latest Linux kernels I’m seriously tempted to try Fedora again.

My previous forays with Fedora left a bit of a bitter taste. Back in version 21 I was having consistent trouble with suspend and hibernate on my laptop (although I think this was common across all Linux distributions at the time) and found it too overwhelming and complicated for my experience levels.

However as I have been running primarily Cent OS/RHEL/Amazon Linux servers in production for the last 7 years I have grown more comfortable with the intricacies of a Red Hat distro and I’m ready to try running Fedora again.

Other distributions

I have been experimenting with a few other distributions to get some experience and see if I could use them as my primary OS. Most experimentation happened in virtual machines on Macbook (one reason I’m running out of space) or on virtual machines in the cloud however in the case of Manjaro - an Arch linux based distribution aimed at being simple and user friendly - I installed it directly onto my old desktop

Conclusion

Mac OS has served me well and this is definitely not goodbye. With a Unix background and being comfortable with Linux for my primary OS it was a decision between Fedora and Ubuntu/Mint. Ultimately the decision was made by my choice of operating system for production deployments. When employed I have used Cent OS/RHEL/Amazon Linux (a form of Cent OS) which are solid distributions and what I would like to use for my own production code. With a 10 year support cycle for Cent OS and a solid reputation I have no fear of my production code running in Cent OS.

To keep similarity between development and deployment I have chosen Fedora 31. Similar package management, commands and layout but with more up-to-date packages available to me as I work. Ubuntu/Mint would be a great choice with the vast community support available online and my initial distribution of choice; if you are primarily working with Debian servers in production then I would stick with it.

Result: [primary] Fedora 31 Workstation with Cinnamon desktop dual boot with a [secondary] Windows 10

Development aside I’m looking forward to seeing how well a Linux system can also be used for photo and video editing.

[Bonus] Hackintosh

A Hackintosh is a computer that runs Apples Mac OS software on non Apple hardware. While it does appear to be possible to get Hackintosh running on Ryzen 3700x with AMD graphics, the chance of instability and lots of upfront & continued effort is really off-putting. For now I will continue with Linux, modding it a little bit for that “Mac OS feel”.