微软 linux mysql php Windows google 编程 云计算 centos wordpress shell apache java Python Ubuntu Firefox 开源 nginx Android 程序员

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

延伸阅读

评论