Ever the masters of ceremony, Apple did not disappoint at WWDC earlier this week. With typical Apple showmanship, they unveiled numerous features found in the upcoming versions of MacOS and iOS. But the biggest reaction was reserved, not for a shiny feature, but for Apple's new programming language--Swift--which left the consumer press amusingly flummoxed.
Media badge people are silent, attendees going nuts. This is huge huge news, the future of all Apple development.
— John Gruber (@gruber) June 2, 2014
In spite of the mainstream attention it receives, WWDC is a developer event and understanding the significance of Swift requires knowledge of how iOS apps are commonly developed. Apple's official solution for creating iOS apps requires developers to write Objective-C. Objective-C, specific to the Apple ecosystem, is widely considered verbose, temperamental and challenging to utilize when compared to other programming languages (Scala, Ruby, Python).
Consequently, iOS development using Objective-C is often slower and more frustrating than development for other platforms. So it's not surprising that the announcement of a replacement programming language--with features like closures, generics, type inference, etc.--elicited wild applause from WWDC's developer audience.
Swift is irrelevant to the majority of mobile audiences
Swift is a good move for Apple; it makes developing for iOS more attractive. And because Swift, like Objective-C, is only relevant within the Apple ecosystem it encourages developers to commit exclusively to Apple and neglect other platforms. This is clearly a good outcome for Apple, but it's a bad outcome for developers wanting to engage as many people as possible.
Apple's global smartphone market-share is hovering at around 20%. Meanwhile, mobile device usage has already surpassed desktop device usage and continues to grow. These stats make two things very clear: the future is mobile and mobile extends FAR beyond the Apple ecosystem. Developers wishing to engage the majority of mobile audiences need to reach beyond Apple's ecosystem and Swift won't help.
The best use case for Swift is iOS exclusive games
As alluring as the 'write once, run anywhere' promise is, apps based on web technologies have historically performed less admirably than their native counterparts. These performance issues have made it impossible to use web technologies for some types of apps. Games, in particular, are notoriously picky about responsiveness and developers often need to squeeze as much performance out of the CPU/GPU as possible. It's likely no accident that Apple chose to showcase a game for their programming demo.
However, the overwhelming majority of developers aren't creating games. Furthermore, many developers aren't launching their apps with a high degree of certainty. In the beginning, the goal is adoption and learning. During this formative stage, developers aren't doing themselves any favors by committing to a platform-specific language and limiting their potential audience.
At the same time, HTML keeps getting better and better. In fact, during WWDC, Apple announced that iOS8 would extend the performance benefits of Safari to all Webkit based apps. This enhancement is going to improve all apps based on web technologies.
Swift is a great move for Apple and exciting news to developers who are willing to commit exclusively to iOS. But most mobile developers are better served by cross-platform technologies which enable them to engage with everyone; not just the Apple crowd.