Mac app evolution: Bringing UIKit to macOS

Stocks was part of iOS 1 (iPhone OS 1). Voice Memos was part of iOS 3 (iPhone OS 3). News and Home, iOS 10. With Mojave, all of them are finally coming to the Mac. That they're finally coming is good. That it took so long is terrible.

I know I sound like the parent yelling about the messy room just as the kids start cleaning it up, but Mac customers are people too and addressing longstanding gaps in functionality is one thing — addressing the issues that cause longstanding gaps in functionality is another, far more important thing.

Apple needs to do both and, starting with Mojave, it is.

Back (and forward) to the Mac

News, Stocks, Voice Memos, and Home all kinda look like the iPad versions wrapped in Mac-specific interface elements and mouse and pointer support. And that's exactly what they are.

When Apple first began planning the App Store for iPhone, there was some internal debate over whether the company should use the existing Mac frameworks of AppKit or the increasingly popular web frameworks of WebKit.

Apple ultimate decided it needed to do something new and created UIKit.

For the last decade, AppKit has advanced considerably. But, thanks to the popularity of iPhone and the iOS App Store, UIKit has exploded.

Because of everything Apple's done over the years with AutoLayout, size classes, and app bundles, making iPad versions of iPhone apps has been relatively easy. tvOS versions, even.

Not so with the Mac. If a developer of a popular iOS app wanted to bring it to the Mac, large parts of it had to be ported from UIKit to AppKit. Even if the developer was Apple.

That's why many developers of popular iOS apps didn't bother. Even Apple.

In many cases, it wasn't because they didn't want to. They simply lacked the resources necessary to move the apps over given how much work they felt they still had to do to maintain their success on iOS. Yes, still including Apple.

The good thing about problems Apple has to solve for itself is that it typically solves them for developers as well. And they have, even if the solution has been obvious to some and terrifying to others for years:

UIKit on the Mac.

From Classic to Carbon to Cocoa to... UIKit

Apple is positioning UIKit as another option for developers, alongside AppKit, WebKit, and the graphics engines often used by games and some design apps. (And, yeah, the horrible Electron — localized Chrome tab — apps that are the new Adobe Air or Java apps.)

It's part of a multi-year project that's being worked on by many teams within Apple, and should result in pushing not just Mac Apps but all Apple apps forward.

Because iOS and macOS share common foundations, sliding UIKit apps in alongside AppKit apps, it's not like starting from scratch. But, because iOS and macOS share very different user interface paradigms, a lot of work still has to be done.

Apple is going to make that easier by moving key UIKit frameworks to the Mac, and adapting them for trackpad/mouse and pointer control, Mac interface conversions like the window-controlling traffic lights, scroll bars and resizing, and the Mac versions of copy and paste and drag and drop.

That where News, Stocks, Voice Memos, and Home fit back into this. Apple is using them to dog-food the first phase of this project.

They're all iPad apps that have been brought to the Mac with "very few code changes", according to Apple.

Evolve or die

I've been using the "Marizpan" — or UIKit apps on Mac — for a while. They're way better and more resource efficient than Electron apps — hi, Slack! — and feel better than progressive web apps, which still feels like something being pushed on the market to serve program manager and not engineering or customer needs.

They don't feel like traditional Mac apps to me, though. At least not yet. They're so freshly ported their touch-centric interfaces still squeak of iPad every time they spin around too quickly.

Maybe that'll change over the course of the year. Or maybe what we consider to be traditional Mac feel will change, just as it did when we transitioned from Classic to Carbon to Cocoa. And there'll be just as much grumbling and hot-taking along the way, I'm sure.

The Mac has to keep evolving, though, and Mac apps along with it. It's been doing it for going on two decades already and it'll keep on doing it, hopefully for many more.

Again, it's going to take a couple of years to get through it but the Mac app ecosystem should end up all the more vibrant because of it.

Phase II starts in 2018 when Developers are going to get a chance to start working with it.