Apple announced today at WWDC it is open-sourcing the Swift programming language. I’ve been working with Swift over the last few months, and I like it a fair bit. The language itself is much more elegant than its predecessor, Objective-C. To be fair, that’s easy to do given I find Objective-C’s syntax to be clunky. As time moves on, we’ll find Swift to be more and more elegant as Apple provides Swift versions for all of their APIs. This will take time, but it will make the iOS and Mac OS platforms much more approachable from a programming perspective. The more folks you get programming for any software platform the better — and Swift makes it easier to code for the Apple ecosystem.
More developers and companies are embracing open-source code, so Apple’s decision makes sense from a marketing perspective. But if we dig into the details, I’m not sure just how much of an impact that Swift will have on the open-source community. First off, Apple will not loosen the reigns on all of the iOS libraries (or the Mac OS libraries ). From the Apple perspective, this makes sense. They want iOS to be as secure, fast and reliable as possible. Opening up the core of their platform puts this at risk, so they will not do it. Plain and simple. Is it possible to open up the core and maintain security, reliability and performance? Sure it is, Linux itself is living proof. That doesn’t matter. Apple will not loosen up their core.
So what’s the value in open-sourcing Swift? I see no developers jumping into the fray to provide Swift-based user-interface libraries for Windows or Linux (ok, maybe on Linux). If you are building Windows clients you’ll be coding in C#. Apple is very strong on the client side of things with iOS and Mac OS. They are very weak on the server side of things — think “cloud”. You’ll bring more developers into the Apple family if there are killer versions of Swift and the Swift run-time on a variety of server-side operating systems (Linux, Windows Server). And it would be even more of a coup to integrate Swift into some popular cloud platforms (Amazon, Azure, Rackspace, Salesforce.com).
Theoretically, coding in Swift on the client side and the middle tier/server tier would make life a lot simpler … or will it? Personally, I doubt it. While I like Swift’s syntax over Objective-C’s syntax, the real productivity issue is the myriad of libraries and interfaces that make the iOS and Mac OS platforms what they are. Syntax isn’t the problem. Having Swift running on Linux with a clunky Eclipse IDE will not make my life more productive.
As a science project it’s interesting, since Apple is giving us access to the whole enchilada. My bet is that developers are going to write nice clean RESTful web-service endpoints in their favorite server-side language and then server ‘em up to iOS and Mac OS just like they have been doing for years.
That’s why I’m learning Google’s “Go”.