谈谈苹果开源 Swift
在今年的 WWDC 大会上,苹果推出了 Swift 2,给 Swift 语言增加了许多新的特性,同时苹果宣布将开源 Swift 的编译器和标准库。虽然源码还需要等到年底才能放出,但不妨我们来聊聊开源这件事。
开源的互联网环境
从整个业界环境来看,开源似乎是现在互联网的标配。其中 Google 是开源的先锋,现在智能手机操作系统基本被 iOS 和 Android 垄断,而 Android 的成功,很大程度上是因为 Google 对 Android 系统的开源,并且对基于 Android 的定制修改采取鼓励的态度。
Android 开源让苹果很受伤,因为这表明 Google 不指望依靠操作系统来建立竞争壁垒了,但是苹果不一样,苹果的大部分利润来自于硬件的销售,而硬件销售的高毛利是依赖软硬件一体带来的生态系统壁垒。如果 开源 iOS,那么 AppStore 上海量的软件很可能贡献给其他基于 iOS 系统的兼容设备,从而对苹果的利润产生极大的冲击。
相对于开源操作系统,开源编程语言的编译器和标准库对商业的影响要小得多。所以 Sun 开源了 Java,微软开源了 .net,而苹果开源了 Swift。
那开源 Swift 对苹果有什么影响吗?首先现在 Swift 其实 bug 还比较多,开源 Swift 有助于大家更加积极的为 Swift 报 bug,甚至提 Pull Request。这更加有助于 Swift 的普及。
然后,各种语言都在尝试着不用 Swift 和 Objective-C 来写 iOS 程序。基于 Ruby,Java,JavaScript,C#的各种跨平台的解决方案都有。开源 Swift,也有助于 Swift 语言在其他平台上发展,比如用 Swift 来写 Android 或者后台的 Server,这都是可以想象的,比如最近 Github 上就出现了一个基于 Swift 的 Rails 框架( https://github.com/anynines/Swift-rails-example )。
什么是好的开源项目
如果我们观察现在发展得比较好的开源项目,你就会发现开源项目要发展,其实开源仅仅是第一步。为了维护良好的开源社区,开源相关的工作还有很多。 例如完善的文档,及时响应社区提的 Issue 和 Pull Request,对各种设计细节进行解释,这些都是需要大量人力的。如果没有搭配以上提到的这些工作,那么开源本身产生的效果将非常有限。
但是如果我们观察苹果以前的开源行为,就会发现其实文档都是非常简陋的。在苹果的开源网站( http://www.opensource.apple.com/ )上,很多开源代码都是以非常“裸”的方式公开的,相关的代码架构文档非常少,社区的力量也很少参与贡献代码。
不过 Swift 的编译器和标准库宣布在年底开源,让我对苹果的此次开源抱有了一点希望。很可能苹果这次想做得更好一些,所以想将相关的文档和社区搭建完善之后,再将源码开放。
如果我们观察当前市场上成功的开源项目,就会发现成功的开源项目大多还是由商业公司在主导贡献代码。比如 Hadoop 80% 的代码都是由 Hortonworks 和雅虎贡献的。所以虽然 Swift 开源,但是苹果对于 Swift 的主导地位应该不会有任何变化,社区的力量可能更多的会贡献在 Bug 修复上。
跨平台复用代码
今年跨平台复用代码是一个火热的话题,基于 Html5 的 PhoneGap 没有被大多数人接受,所以今年更多的方案是用各种办法产生原生的 UI 界面。我认识的一个前新浪微博的朋友就离职做这方面的创业了。
Swift 的开源让我们对在 iOS 和 Android 上复用一套代码又多了一个选择。不过这个就得完全依靠社区的力量了,我们已经看到有不少这方面的创业公司出现,基于 Swift 的跨平台开发方案能否出现,让我们拭目以待。