昨天半夜看到一封郵件《Announcing Server APIs work group》,讓我激動地去發了一條微博。

簡單地說,Swift 官方成立了一個 Server APIs Work Group,這個小組的目標是在當前 Swift 的基礎上,做一套純 Swift 的、跨平臺的、專門面向 Server 的底層庫,提供給 Web Framework/Backend 的開發人員使用。也就是說,Swift 官方攜手社群,正式進軍 Sever-Side 開發領域了。

Server APIs 的由來

話說 Swift 從誕生之初就定目標為一個通用的程式語言,到了不久前 Swift 3。0 正式釋出,不僅已經正式支援了 Linux 平臺,社群和企業也萌現了一堆 Web 相關的架構,比如 IBM 的 Kitura、創業公司 Perfect,來自社群的 Vapor 和 Zewo。可以說這個生態已經漸漸起來了,儘管還比較早期和稚嫩。那麼 Swift 官方成立 Server APIs Work Group 的意義是什麼呢?在我看來,就是起到「催化劑」作用。

如果你研究過當下 Kitura, Vapor, Zewo 等基於 Swift 開發的 Web 框架,就會發現他們各種去實現或者包裝了一堆非常底層或者常用的庫:底至 HTTP 協議、WebSocket、SSL,高至 JSON、XML 的解析。這是因為 Swift 的標準庫 Foundation 只提供了最基礎的諸如 Array、Dictionary、Set 等資料結構等東西,並沒有更多了(Swift 有 JSON/XML 解析,但是介面不好用)。可以說第三方花了很多時間去做了一堆原本應該是語言標準庫應該包括的東西,而且各種框架間因為開發理念的不同,很多東西各自實現,浪費了資源。

所以,官方 Server APIs Work Group 的出現,正是來解決這個問題,幫助第三方能更 focus 在他們的領域,而不是去實現應該是由官方做的事情上。我覺得官方在這個點上宣佈做這件事情很合適,Swift 3。0 剛剛釋出,這個語言特性差不多算穩定了,儘管 Swift 4。0 還會有很大變化,但不至於會有很大的原始碼級別的 Break 了。此時補充標準庫 Foundation 的不足,達到「催化」原本就已經發展起來的生態圈的效果。

Apple 的開放性

這次宣佈,讓我比較讚賞的一點是,Swift 官方繼續以非常開放的態度來做這件事情,Server APIs Work Group 的 Steering Team 共四名成員,分別來自 Apple、IBM、Vapor 專案、Zewo 專案,公司和社群各佔半壁江山。

可以說,自 Apple 宣佈 Swift 開源以來以及之後的連續動作,Apple 作為一家軟體公司已經習慣以開放的姿態來面對全球開發者了。當然這是時下趨勢,Microsoft 也是大型開源公司了呢。開源/開放已經不稀奇,重要的是維護好開發者關係以及營造更好社群的氛圍。相信搞了這麼多屆的 WWDC 的 Apple 能做好這件事情。

背後的 IBM 力量

既然前面提到了 IBM,不得不好好地擴充套件一下。相信大家最近都聽到過 IBM 把企業內的機器大量更換成 Mac 的事情了吧?而這次 Swift 官方上宣佈 Server APIs Work Group 的文章的作者,也是 IBM 的人寫的。根據介紹,Chris Bailey 是來自 IBM 的,同時有 Java、Node。js 背景。

可以說,自從 IBM 與 Apple 達成企業級戰略合作後,真的不僅僅是一個 PR,非常多的合作相繼展開了。這次 Server APIs Work Group 的成立,與其說是 Apple 主導的,不如說是 IBM 主導的。畢竟在 Server-side 下注 Swift 並且投入大量資源的,不是 Apple,正是 IBM。

看看 Swift@IBM 這個 Blog,就知道 IBM 已經做了多少工作了。

背後的社群力量

光有企業級支撐可能還不夠,社群的力量也很重要。不過目前來看基本不用擔心這點。在 Swift 還極不成熟的時候,Zewo、Vapor、Perfect 等等都冒出來了,現在有官方配合社群來做這件事情,這就是給這個社群投入了新的希望,相信力量會進一步加大。

期望

好了,分析到些,我已經在我的微博上看到「大 Swift 就要一統天下了」這樣的言論了?老實說,我在幾年前看到過類似的比如「大 JavaScript 就要一統天下了」的說法,JavaScript 好像真的離一統天下越來越近了呢。像我們寫 Cilent-side 的人,看到自己慣用或喜歡的語言就要面向 Server-side,自然是一件欣喜的事情,在前後端專案中能用一個語言甚至共享程式碼,也是 Node/JavaScript 社群實踐了好多年的事情。

Swift 未來到底會發展的怎麼樣,可以預見的是肯定會越來越好,最終也能讓開發者開開心心地在前後端只用它來做成一件事情。我敢說肯定不能和 JavaScript 去比,Swift 在 Server-side 真正可以類比的,應該就是 Go、Rust 等社群了。過個一兩年,Swift 的 Server-side 力量應該會更成熟,當前的框架應該也能滿足日常需求了吧。相比之下,只能用在 Client-side 的 Objective-C 就真的會被 Swift 慢慢蓋過去了…

關於具體的計劃,官方說是 Server APIs 這個專案不會與具體的 Swift 版本繫結,而是會按照自己的步調去進化至「成熟」。作為獨立於語言的附加庫,這也是它應有的發展模式。按照蘋果的釋出節奏,一年應該會達到一個里程碑了吧?所以,期望 Swift 4。0 釋出的時候,無論是這個語言本身(ABI 穩定還有更多特性被開發),還是生態圈(Cilent/Server),都達到足夠完備,不僅可以開發 Client,也可以開發 Server 了。

總結

寫到這裡,這對 Swift 語言是除了開源以外又一件里程碑意義的事情,不過對於目標為「通用語言」的它來說,這也是必要不可或缺的一步。就像 Swift 開源一樣,當時讓人覺得激動,事後想想也是正常的,現在還有啥主流語言不開源的呢?

所以,能不能把這件事情做好才是最關鍵的,就像 Swift 開源一年下來,確實是吸收了大量外部的意見在改進這門語言。這次 Server APIs 的工作,希望也能做得更好吧。

一年兩年後再來回顧,希望一切如期望般進行吧~