Reading (Underscore) David Smith’s excellent post about expectations for WatchKit got me thinking about some of my own. The idea I keep coming back to is: Wouldn’t it be interesting if WatchKit APIs were Swift-only?
Swift-only Watch APIs wouldn’t prevent Apple from re-using other iOS APIs on the Watch. (I’m assuming that Watch OS will be some variant of iOS.) Because Swift can access Objective-C APIs (albeit a little awkwardly), Watch apps could still use existing APIs that make sense across devices. (Take the notifications and extensions APIs as an example.) Basically, Apple would do what we’re all expecting them to do eventually: Make new APIs Swift-only, without backwards compatibility to Objective-C. Existing apps that don’t need the new APIs, like iPhone apps, would continue to run just fine. But if you want access to the new goodness (including new devices), you have to write some Swift code.
The Watch represents Apple’s best opportunity to jump-start their new language in a production context. There will be a lot of developer interest in the Watch, and this gives Apple a chance to push developers into giving Swift a try. Apple has been extremely aggressive in pushing new versions of their OSes and developer tools, and this is a chance for them to go further. Most developers I know are hesitant to use Swift in a production app because it’s so new. That situation could persist for years unless Apple gives us a little nudge or two.
The Watch is an ideal candidate for that kind of nudging. It doesn’t have the backwards-compatibility issues that the iPhone and iPad do. Nobody needs to maintain support for previous versions of the Watch OS, because they don’t exist. Nobody will complain because they have years of experience with the old way of doing things on the Watch, because there is no old way. Just as the first version of the iPhone SDK set the tone for iOS development, the first Watch SDK will set the tone for Watch development. Now is Apple’s chance to make that tone be Swifty.
Of course, we have no idea whether the Watch team knew anything about Swift before WWDC. It sounds like Swift was as much a surprise to many Apple employees as it was to the rest of us. If the Watch folks didn’t know about Swift, it’d be extra work for them to go back and update APIs to be Swift-only. But wouldn’t it be just like Apple to go back and remove Objective-C compatibility, or make things Swiftier, just to promote a larger objective?
Either way, with the Watch SDK set to drop sometime this month, we won’t have to wait long to find out if I’m right or spectacularly wrong.