WWDC2019 Keynote

Apple just finished the introductory keynote to its annual World Wide Developer Conference, and while the keynote always stays pretty high-level and consumer-oriented, there's already a lot to unpack here, while we wait for the State of the Union.

I'll start of with the developer-affecting announcements that struck me most, and first thoughts of how they will impact/affect your use of our tools. Of course, things will become a lot more clearer after the State of the Union session this afternoon, and once we had a chance to dive into the actual bits of Xcode 11 and the new SDKs.

watchOS

watchOS gains what Apple called "standalone watch Apps" that can be deployed and installed without an iOS app to wrap them. I'm not sure yet what this means/how this will work on a technical level, but I'm hoping it is a first step in cleaning up the watchOS development tool chain which — frankly — has been a huge mess due to how watch apps need to bundled and deployed within a shell app.

I'll know more once I dug into this deeper over the week, keeping fingers crossed.

A new native UI framework was also mentioned; I assume that's the same SwiftUI framework later introduced for all platforms.

iOS

Not much visible information for the developer side for iOS in the keynote (I've not analyzed feature word clouds yet ;), but iOS 13 seems to shape up to be an impressive release.

The iPad's version of the OS has been rebranded to iPadOS, but from a first cursory look inside the Xcode 11 SDKs, this seems to be a pure packaging effort — there's, at least for now, still just a single "iOS" platform (actually still called "iPhoneOS" internally ;), for both iPhone and iPad — just as in Xcode 10 and earlier.

Curiously, this iOS platform does not seem to encompass Marzipan, sorry, I mean Project Catalyst — Apple's effort to bring iPad apps to the Mac. The SDKs for that live in a separate subfolder in the macOS SDK. Anyone who ever dealt with Windows might be prone to getting some nightmares about SysWOW64 folders over the coming few weeks and months.

Another curious mention that I'm intrigued to find to more about is the 50% decrease in app download sizes and the (at least in Craig's wording on stage) related increase of 2x in startup speed. What could Apple be doing that would half over-the-wire app size and launch speed? Weird.

macOS

macOS was left to very late, and also got very little developer-specific details, if we leave aside Project Catalyst.

Swift Native Frameworks

Now that Swift has (almost) reached module stability, we were bound to see the first Swift-only frameworks pop up this year, leaving those tied to the Objective-C runtime behind them.

There's two here, the first a more corner-case new AR framework called RealityKit, and the more exciting one being SwiftUI, a brand new framework for creating UI in a declarative code-only way. While SwiftUI was mentioned being for "all platforms", at this stage I am assuming that it sits on top of UIKit, and only comes to the Mac via Catalyst, and not for traditional AppKit apps — we'll know more as the week goes on.

SwiftUI is a combination of both a library/framework and a fancy new designer in Xcode that helps you "write"/adjust the UI code and test it live both in an embedded simulator and on device — very nice.

Project Catalyst, née Marzipan

The most intriguing, if expected, news from the keynote, in my opinion, remains Project Catalyst. I cannot wait to dig into the toolchain more, to see how it all fits together. From what we have seen on screen it will be using projects based on the iOS SDK, but its supporting frameworks live inside the macOS SDK. This will be interesting.

To be honest, I was hoping for this to turn into "just" a few extra frameworks inside the macOS SDK, that could be used instead (if not next to) AppKit in "native" macOS apps, but it seems that — at least for now — Catalyst apps will continue to live in a simulator-like shadow universe next to their "real" macOS siblings, with separate copies of all the core system frameworks.

I suppose that makes sense while we wait for the re-merging of the underlying OS foundation that Apple hinted at during last year's WWDC. Remember, iOS was essentially branched of from macOS sometime before the Leopard days, and while the two OSs remain similar, the code bases have continued to diverge over time. For apps to truly build once and run against both iOS and macOS' "native" frameworks, these need to be brought back in line...

State of the Union Updates

A couple updates from the State of the Union talk:

  • It seems that SwiftUI is available for AppKit apps, not just iOS and Catalyst; so that's good. Still not sure if it's a layer on top of UIKit/AppKit or a totally fresh rewrite of the core controls (it seems the latter, but that sounds scary).
  • Notarized Apps will be a requirement for macOS 10.15. This too is scary because at least on Mojave, we've run into several unsolvable issues getting a sophisticated app such as Fire running on the Hardened Runtime. Let's hope Apple fixed these!