May 29, 2019
In anticipation of this year's WWDC, here's the last half of a piece I wrote last year on Marzipan. We'll find out Monday how wrong I am - From the rumors, I expect to be happy with whatever I see.
I love Swift.
So much of what makes Swift great is it is a fresh start that builds on what we know from so many other languages. Swift is still evolving - we still don't have the new ownership model or a great asynch solution - but they're coming.
One of the biggest pain points for those of us coding in Swift is interacting with Objective-C.
I'm not saying there's anything wrong with Obj-C. I'm saying that Swift and Obj-C are fundamentally different in their approaches to many things (in particular nil).
UIKit and AppKit are built in Objective-C and are class based hierarchies. We're used to inheriting from classes that inherit from NSObject or UIViewController. We put up with implicitly unwrapped optionals because of the way Storyboards and Nibs are loaded.
Now that Swift is stabilizing, one of our greatest needs is for a Swift friendly UI framework.
The fact that it is declarative or cross-platform is less of an issue, but...
As long as they are rethinking the UI framework, they can certainly consider whether we need NSColor and UIColor or whether a single Color class will do. Are NSButtons and UIButtons really different or can we just have a Button. That doesn't mean that we are headed towards a single UI from the consumers point of view and it doesn't mean that developers are writing a single UI that works on multiple platforms. It just means that perhaps our building blocks are the same.
This audit is most important in UIKit and AppKit but other frameworks benefit from this second look as well.
CoreData is built around NSManagedObjects and is written for Objective-C style coding. A more Swift friendly data abstraction would be welcome.
There are so many frameworks that could benefit from being reconsidered in the world of Swift and multi-core processing.
Couple this with the (no-doubt correctly) rumored move to ARM chips on the Mac and the time is right to revisit these pieces.
While I'm dreaming, I imagine a world in which Apple gives us the tools to build these new apps or even reconsiders what it means to build apps.
Back to Marzipan. Back to UIKit and AppKit and a new UIFramework. In my dreams, Chris Parker and Ali Ozer each choose five engineers and work out the details of this new world.
Yes, I understand why this can't happen, but it's my dream.
It's the same dream that gives me a phone that turns into a flying scooter.