談談蘋果開源 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 的跨平臺開發方案能否出現,讓我們拭目以待。