Switching to elementary OS

So I’m switching from macOS to elementary OS.

Why am I doing this? History time!

Long ago, when I was small, I received a Commodore 64 for my 9th birthday. It started as a toy, but became the main thing I spent my time on right up until I was 18. Its where I learned my trade: hardware, operating systems, programming. It’s also at least partially responsible for my poor posture and damaged fingers. More on that later.

In 1998 I went away to university to study computer science. I didn’t have a lot of money, but I managed to scrape together enough to buy an old 486. It came with a late version of MS-DOS, but not Windows, and I certainly couldn’t afford a copy anyway even if it had been able to run it. I used the university internet to get hold of some tools and programming languages and so on so I was happy enough, and I used the computers on campus for my studies. I was given accounts on the shared Unix servers, and started to learn all about them. Having come from a long history of command-line operation, these made a lot of sense to me and I liked them.

A few months in I happened to be talking to a classmate about my wish for a Unix that would work on my little home computer. A couple of days later she gave me a Redhat 5.1 CD and suddenly I had a Unix of my very own! Not long after I gave Debian 2.0 a try, which appealed to me a little more (why, I can’t remember). Like so many of us, I was hooked.

Fast-forward to 2016. By now I’ve been working as a Unix/Linux sysadmin and programmer in a number of jobs since 2000, most recently (and still) at Fastmail. I’m still running Debian with XFCE on my laptop, having long learned how to get things working sensibly and be happy with it. I’ve never even considered using a non-Linux computer, since its all I’ve ever really known.

But by now I have grown old. I’ve been married a long time. My kids are now teenagers. I have other, non-computing hobbies. I now run a fleet of ~100 Linux servers, where I improve them and tweak them and solve problems all day long. Computers are still interesting, but my own computer is now just a tool, at its best when its letting me work and staying out of my way. But Linux on the desktop is not like that - it takes some handholding, and even though I’m good at doing it I just don’t want to spend my days, or worse, my evenings fiddling with my computer.

I remember the moment I got sick enough of it all to do something. I was visiting our Philadelphia office, then a co-working space, and every time I connected to the wifi there, NetworkManager would crash. After the umpteenth time I looked to my left and saw my boss working on his MacBook Pro and doing very Unix things and getting plenty done. I looked to my right and there’s my fellow sysadmin on his MacBook, also working efficiently. And right at that moment I knew that I couldn’t bo bothered with this crap anymore.

I thought about it quite a bit on that trip, and came up with a fairly simple criteria for what my computer needed to be:

After some discussion with aforementioned sysadmin colleague, I got back to Australia a couple of weeks later and went straight out and bought a MacBook Pro of my own.

I’m typing this post on that very same MacBook, which is in its last days as my daily driver. Sometime in the next couple of weeks a new Thinkpad will arrive, and I will be installing elementary OS on it, going back to Linux for the first time in years.

What happened? A few things.

For the most part, the MacBook Pro has been fantastic. It’s probably the best laptop I’ve owned, and I will miss it. But there’s a few reasons for not wanting it anymore.

Perhaps unsurprisingly, the main one is the keyboard. The problems with Apple’s butterfly keyboard are well known, but the problem for me is not just about unreliability. It’s actually about the lack of key travel. I’ve been typing for many hours a day for thirty years now. My fingers are wrecked. One of the things I absolutely need is keys that actually move some appreciable distance when you hit them. The low travel of the newer Apple keyboards means that my fingers are taking a lot more of the impact of every keypress, which leaves me in a fair bit of discomfort after a long day.

If the last couple of iterations of Apple hardware had kept the same keyboard, its likely I would have bought one and we wouldn’t be here. But although they look like they’re reversing to some degree, I’ve already spent the last couple of years idly considering alternatives and being disappointed, and rational or not that feeling has been directed at Apple.

Oh, the alternatives. I knew I would have to get a non-Mac computer at some point, but nothing met the above criteria. I knew Linux would fail on “just works”. Windows with WSL was shaping up well enough as a Unix, but would it be good enough? I hadn’t really been able to tell, so I held out in hope that Apple would sort out their hardware.

But this year especially, Apple have also fallen behind on the software side. The latest version of macOS, Catalina, has had enough reported problems that I’ve held off upgrading for the moment. Meanwhile iOS 13 had bugs in its calendar backend that made it non-standards-compliant in such a way that when used with Fastmail, it would spin in a loop making server requests, draining the battery. This was frustrating for us, and terrible for our customers.

In addition, my kids all have iPhones and/or iPads, which I have to maintain. I’ve done two factory resets on my daughter’s iPad in the last six week because it appears unable to reclaim some internal cache storage, resulting in it running out of space so badly that it can’t even take a backup of itself. The internet broadly does not seem to know anything about this problem, while the Apple Store boffins are content to factory reset, something I can do quite well myself.

In short, I no longer trust Apple to produce software and systems that “just work”.

So I thought hard in the last couple of months trying to work out what to do. Eventually I came to the conclusion that if there are no operating systems that will not require some amount of stuffing around, then the best choice for me is going to be something based on Linux, where I know whats going on under the hood and at least have the chance to actually do something when it goes wrong.

So why elementary? Why not just back to XFCE, which I used for years? Well it’s about macOS, of course, but maybe not in the way you think.

A lot of people look at elementary and think of it as a macOS clone. It’s not, but there’s a reason why it sort of feels like it. And that’s because elementary has, or is trying to have, system-wide opinions on how things should operate.

My sysadmin colleague came to macOS a few years before me, from one of the BSDs, and his advice to me on switching was not to fight the way the system wanted to work. It would work out better for me in the long run if I tried to understand why its put together the way it is, and not try and make it into the system I knew before. That’s something I’ve tried to do and although I’ve made plenty of customisations, I haven’t fundamentally changed anything under the hood.

The problem with most Linux-based desktops in my experience is that they don’t have enough consistency across the entire system to actually have a distinct way of doing things. There’s always going to be some wart, some application, some stupid thing that breaks it all.

As far as I can tell though, elementary is trying to be different. They’ve spent time trying to put together a proper design language that covers the entire system. They’ve built their own applications, none of them trivial. They’ve even built an app store to encourage people to write applications the same way, and are trying to establish a sustainable ecosystem.

I’ve seen criticism that all this is dumbing down the Linux experience, that its too simple and for new users only, and so forth. I disagree, because I’ve seen this before: at Fastmail. When I started, they were just about to launch their new UI. The previous one had been a traditional power user application: config options, buttons, things everywhere to let you do anything. The new one looked like any UI upgrade of recent times: fast, flashy, but apparently without all the bells and whistles. It received similar criticism.

It’s also been the UI that I’ve used for email every day for over five years, replacing mutt. mutt! That hyperconfigurable powerhouse of email, and I prefer a flashy webapp? What’s up?

I can’t explain to you exactly, because I’m not a designer. But what I think is going on here is that being able to configure things every mad thing is more a byproduct of something not quite knowing what it wants to be. If the entire system can be designed such that everything looks and feels familiar no matter where you are and what you’re doing, you don’t end up needing a ton of options, because the system naturally suggests the right thing to do and it couldn’t be any other way.

macOS gets this too. so does elementary, I think, which is why I’m going to do my best to take its recommendations as much as possible.

Not on everything, though. There’s some things that I can’t work without which I will have to bring across, most notably some automatic window layout mechanisms I use for my terminal windows (which are a given: I am a sysadmin). But for the applications I use, and the features I need, I’m going to try do things “the elementary way” and avoid, as much as possible, tweaking anything in the OS directly. I could, and I will if there’s no other way, but I hope to not need to even if it requires very different ways of working to what I was used to from my previous Linux experience, and from my time with macOS.

Of course, the difference this time is that I know fundamentally how things are bolted together, so if I need to write code I can absolutely do that too!

I expect to learn a lot, and possibly to have to do some fairly strange things along the way, we’ll see!