On//Being//NIXED

During university in 2005, I was introduced to the mac as a viable option for someone interested in programming as a career. Somone pitched it to me as a beautiful and well thought-out OS, with UNIX under the hood.

At the time, I was using Linux for school work, and Windows for games. I persuaded my parents that I could get university work done on an iBook G4 and over time became enamoured by the idea of being a Mac indie developer.

2006 saw the start of the Delicious Generation - a resurgence of new developers pushing the design aesthetics of the Mac, and exploring different ways of engaging the Mac users community. Whilst I wasn’t quite focused enough to be able to contribute apps, that time period left a mark on me. In 2007, I got a student scholarship for WWDC and managed to at least get a sense that being a Mac indie was something I could potentially have my career as. It took until 2011 before I started working on indie Mac apps, and that didn’t last too long due to VISA issues.

I didn’t really put my energy into being a Mac indie developer either full-time nor in my spare time. Once I became confident enough in my programming skills to do serious work on the Mac, the open source community tools community was really where my heart lay. I discovered I was a tool builder, not strictly a product one.

I never got a job with a focus on the Mac again.

It’s somewhat nebulous, but during the announcements of Apple’s new macOS 11 this year, I felt like a line had been crossed in my mind: The Mac isn’t really the right OS for me anymore.

I’m not bitter, things have just changed since I first made the decision to move to the Mac. My priorities have changed, and so have Apple’s. That’s OK.

The Mac is for iOS Users

I think it’s great that people who use iOS can re-use their apps now and access them as first-class citizens. I think it’s great for them that the user interface of the Mac has been re-designed to be more in line with iOS. People with iPhones are the majority here, and the Mac is a getting closer to being a rounding error in Apple’s financial reports (today the Mac is 8% of all Apple profit, and a generally shrinking %.)

https://images.macrumors.com/t/N7MLkfnlwvkle7Xs2CSzK7f2Myc=/1600x0/filters:quality(90)/article-new/2020/01/1q20_earnings_line_labels.jpg

The Mac reaps benefits of all sorts from the halo effect of iOS’s stunning growth (more engineers, more eyes on the platform, shared tooling). It’s also the only platform for making iOS apps, and Apple cares about it.

The bit that’s tricky for me is that I don’t use a phone, and I want my computer to be more like a truck than a car.

I don’t find a phone to be a useful device for me. When I’m not at a computer I don’t want to be instantly available to others, nor do I use a phone as a media consuming device. It’s hard enough to find a life balance with my code contributions without another place to get pings from.

That means that roughly the last 5 years of Mac changes have passed me by. Desktop OSes are mature, and so Apple has prioritised a lot of porting iOS features, APIs and building syncing systems between them. Again, lots of cool stuff for most folks, but not pushing the Mac, it’s pushing the consumer device ecosystem.

Progressively more restricted computing

It’s unlikely Apple will ever truly force an App Store only system on the Mac. However, that doesn’t mean that the incentives aren’t there for apple both financially (because Apple gets a 15-30% cut of all transactions) or from a security perspective (Mac apps have a stricter sandbox and can be trusted more by users.)

Inside Apple, I bet keeping the Mac a good general purpose computer is a constant uphill battle. The screws keep on tightening .

I must stress, for nearly every Mac user these are good things. They don’t want a fully general purpose computer. For most folks a web browser, a useful file-system and their own edge-case purpose apps provide all they need.

The move towards a more app-store focused, sandboxed OS means that whole genres of apps aren’t possible anymore. I’m particularly sad about what happened to Safari extensions over the last few years. I don’t want to put my time into a platform where the people starting today work in an increasingly smaller domain.

Native is less valuable

The last decade of focus on mobile by everyone has drastically reduced the value of writing a native app for a single platform. The Mac has kinda been hit the hardest by this in my opinion. Mac software used to be about HIG conformance, consistent design and interaction models - all of which tended to come at a pretty expensive price.

The Mac software ecosystem was like a street of local shops run by people in the community, and then post-iPhone all the big shops moved in because they just wanted to make sure they were represented in the area. Modern desktop environments now feel quite same-y, but this also trivialized OS switching costs.

The rise of Electron being the most accessible developer environment for desktop OSes has meant that all sorts of apps are available on all platforms. They’re performant enough, and far more importantly they actually exist. You have to have a lot of resources to ship a Website, Windows App, Mac App, iOS App and Android app just to somewhat be where your users are.

Unless your company builds an app for just one platform, it’s just not worth the engineering investment to make something work amazingly for each platform. In part that’s the initial cost, but the maintenance is also a long term pain because OSes do re-designs or change the underlying tech. At Artsy we used to think it’d be roughly 1 month per year in just keeping up with iOS updates, imagine that but also per platform and you’re struggling to even stand still.

Using something like Electron, and to some extent React Native, and you get to skip a lot of the OS update rat-race and just work on a stable platform that runs across many OSes. Any engineer can create a feature that works across all platforms. On top of that you get to use the world’s most popular programming language (JS) and UI toolset (HTML/CSS) to make your apps.

These incentives means a lot of the apps I use today are all cross-platform Electron apps: VS Code, Slack/Discord/Matrix, Spotify, Keybase/Signal

As the Mac software market gets harder to make money in, a few of the native apps I used have also moved to be subscription services. This is in large part due to the app store de-valuing software (can’t pay for software updates, you realistically have to keep providing updates for OS changes, trial system barely exists, people have lower price-point expectations due to iOS’ scale) but sometimes due to these apps wanting to build and provide syncing systems to account for mobile devices.

I’m all for paying money for applications, I especially like “pay for x months of updates” but generally subscriptions are a trap to me. Which has meant independently of switching platforms, I’ve moved off more native software over the last few years.

I do think there’s still a space for optimized native single platform software on the desktop (Sketch, Paw, Pixen, Nova and Screenflow being great examples) but they are progressively becoming more and more niche.

Apple knows this, and the Mac has slowly become a better platform for time-cheap iOS ports in the last 2 releases.

Summary

The point is not that the Mac is terrible, or that the ecosystem is dying etc. I don’t think that. It’s that the bits of the Mac that kept me tied to it (building native apps for a living, a cohesive well designed UI, specific applications which I use daily) don’t have the same pull as they once did. These used to be great trade-offs against the closed-source nature of the OS/apps, and Apple’s occasional devrel hiccups.

So 2020 became the start of looking for alternatives. The result being elementary OS which seems to be ticking all of the things I want. It’s well designed by a small team, they seem to be focused on providing a cohesive OS by building all of the main apps for the OS and has the added bonus of being easy to contribute to. I’d love to be able to put some time into fixing some of my papercuts with the OS.

It’s elementary

In a way, elementary OS is like using an older build of macOS (elementary OS 5 feels a lot like macOS Snow Leopard, with 6’s feature-set echoing macOS Lion). This might sound like a insult to elementary, but honestly I can’t remember what’s new in the Mac anymore because I don’t really use the new features.

There’s quite a lot of modern features you may be used to that aren’t on elementary OS, but the features that make you productive as an engineer are. There’s a great terminal, web browser, file manager and your key IDE apps are likely cross-platform by this point. Keyboard shortcuts work solidly. Almost all of my hardware worked out of the box.

I’ve not done a hard switch, probably never will, my laptop still runs macOS and I have a Mac Pro still around - there’s no need to junk them, but I’m competent in using Linux as my daily driver.

I think moving to an OS which I can contribute to, and especially elementary OS which is mainly contributed to by a few individuals using the same toolchain, is something I can do now. I’m really interested in diving more into the OS, all of the apps seem to be built in a straightforward way and I’ve found a way to write native GTK applications with TypeScript to scratch my own itches. Hopefully the write-up next year will include a discussion on how that’s gone.

Migration Pattern

Roughly my route to switching first was about making long-term changes to my Mac usage:

I bought a new computer for it, as it was a good excuse to get a machine which runs the TypeScript test suite in a reasonable timeframe, but anything other than the newest M1 Macs can run all these OSes. Once you’ve got one dual-booting, or on a fresh computer:

Don’t take the transition too seriously, you’re not defined by this choice, switch back when you need to and get comfortable rather than going head first and making a hard switch. Linux may never be as polished as a Mac, but it is something you get to improve yourself.