Open Sourcing Is No Longer Optional, Not Even for Apple

Coders have myriad languages available to let them do their jobs the way they want; to keep them in-house, it turns out, Apple has to open up.
WIRED | Apple WWDC 2015
Bryan Derballa for WIRED

The biggest round of applause at Apple's Worldwide Developers Conference keynote yesterday didn't come when the company announced new versions of iOS and OS X, or even the new Apple Music service. It came when Apple's vice president of engineering Craig Federighi announced that the company will open source the next version of its programming language Swift.

Why the excitement? Developers have demonstrated a growing preference for open source tools and platforms over the past 15 years. Apple, meanwhile, has pushed iOS developers towards its own in-house development technologies and away from third-party tools, such as Adobe Flash, that it deems inefficient. But even Apple can only risk alienating the developers on whom it relies for so many third-party apps and services so far. Coders have myriad options available to let them do their jobs the way they want; to keep them in-house, it turns out, Apple has to open up.

To be sure, Swift is already growing like mad. But many other new programming languages have been created in recent years that are vying for devs' attention. Facebook is experimenting with Hack and D; Google open sourced its Go language; and Mozilla just released the first full version of its language Rust. Each of these languages has its strengths and weaknesses and one or more of them could become the next de facto standard for software development. And each one is open source.

Most significant, however, was Microsoft's decision last year to open source its .NET framework. In doing so, Microsoft gave its official stamp of approval to all developers using its languages outside of the Windows ecosystem, including for OS X and iOS, and provided code to make it easier for others to modify and extend the .NET platform for their own use. Faced with the prospect of developers using Microsoft tools to develop apps for Apple products, Apple really had no other choice but to make Swift equally dev-friendly.

Apple's Objective

Apple first announced Swift a year ago at the last WWDC event. It's meant as a successor to Objective C, a language owned by Apple that dates back to 1983 and, until Swift, was the primary language used for developing iOS apps. Swift is a more modern language that adds some ambitious features designed to help new programmers learn to code and help experienced coder avoid making serious programming mistakes.

Although Apple is no stranger to open source---it released the code for both Darwin, which underpins its OS X operating system, and WebKit, the foundation of its Safari web browser---it never open sourced Objective C. Though it's technically possible to use Objective C on other operating systems, lack of support from Apple has typically made cross-platform coding difficult. That presented an opportunity for Microsoft and its .NET development platform.

A company called Xamarin has long offered tools that allowed developers to use Microsoft's languages to build software that could run on Windows, Linux, iOS, Android and more. That meant developers didn't have to write apps in both Java, to target Android, and Objective C, to target iOS. They could even use the same code as the basis for desktop and server side applications as well.

Although most iOS and OS X developers still use Objective C or Swift, Apple could be trying to head Microsoft off at the pass by making Swift available on other operating systems. The upshot could in part mean Apple's own programming language could eventually be used to make apps for archrival Android. But the company appears to believe that the risk is outweighed by the reward of ensuring developer loyalty and support.

How Open Is Open?

In a blog post, Apple writes that its open source release will include core parts of the Swift ecosystem -- including the compiler and standard library -- under a standard license, though details remain sparse as to how open open will really be.

It's entirely possible that Apple will retain key rights, just as the company that originally created Java did. Apple could even end up backing out of making Swift open, as it did with FaceTime, which it once promised would be an open standard for video communications. Regardless, it's a big change for Swift, which has only been available for Apple's own platforms.

Apple itself is helping bring Swift to the Linux operating system, and having direct access to the code Apple uses to actually run software written in Swift, other companies will have an easier time supporting Swift as well. There has been no mention, however, of open sourcing its Cocoa interface, another core piece of most iOS and OS X applications.

Still, open sourcing Swift on any terms should give developers some assurance that they won't end up in a legal morass like the one faced by Google in its ongoing fight with Oracle over the search giant's use of the Java programming language. Oracle alleges that Google violated its intellectual property by creating its own Java-like programming platform for Android. It's too early to say how the case will wind up affecting everyday developers. But by moving programming languages and other core developer technology into the realm of open source, companies like Apple can provide some assurances that developers will be able to adopt these tools to their own needs without facing legal action. After all, app development is hard enough without the threat of a lawsuit landing in your inbox.