昨天半夜看到一封邮件《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 的工作,希望也能做得更好吧。
一年两年后再来回顾,希望一切如期望般进行吧~
谢谢分享,学习了