IBM近期终止参与服务器端Swift的推进工作。IBM自Swift开源以来就参与其中,IBM现在已放弃在SSWG(Swift Server Work Group,Swift服务器工作组)中的领导地位。这将对Swift及Swift社区将产生什么影响,InfoQ就此采访了IBM的Chris Bailey。
IBM的这一决定于2019年12月公开发布在Swift邮件列表中,该决定立刻在Swift及Y Combinator、Reddit等相关开发人员社区中引发强烈反响。人们给出了多方面评论,做出了各种猜测,涉及IBM的声明对服务器端Swift开发的可能影响,以及导致IBM做出如此决定的根本原因。
一些开发人员猜测是由于Vapor的发展壮大动摇了IBM在此领域的影响地位。Vapor是IBM服务器端Swift开发框架Kitura的主要竞争产品。也有人指出,是由于Rust、Go等新兴语言在服务器端表现比Swift更为成功。一些人甚至预言服务器端Swift将走向终结。当然,兼听则明,也有人发推文表达了对服务器端Swift的信心。
为深入报道实情,InfoQ有幸采访了IBM前高级技术委员会成员Chris Bailey。Bailey主要关注Swift的运行时技术,他和Ian Partridge这两位IBM贡献者一并退出了SSWG工作组。
InfoQ:请介绍一下您过去参与服务器端Swift项目的情况,以及您的主要贡献。
Chris Bailey:我本人及IBM团队自Swift.org项目开源发布以来就参与其中。在前期,我们侧重于支持可用于Linux等服务器环境的Swift语言核心和API。我们的工作包括Swift语言本身、Dispatch并发库和Foundation API库等。所有这些构成了Swift运行时。由此,我们创建了SSWG工作组,凝聚致力于服务器框架的各个社区,并基于通用的核心库开展协作,扩展服务器系统生态。 不仅是Swift.org社区,我们还创建了Kitura框架及相关的软件库和工具,形成了围绕Kitura构建的生态。该生态提供完整的微服务框架,支持运行云原生应用所需全部特性。
InfoQ:Kitura作为一个完善的框架,多年来已具有70多位贡献者,完成163次版本发布。对于那些在您和Ian Partridge离开项目后坚持使用Swift的开发人员,您是否依然强力推荐Kitura?
Bailey:Kitura每日有上千次的下载量,一些大型企业也在生产环境中使用,其中不乏公开宣称是Kitura使用情况者。 IBM依然通过所有现有的商业协议支持Kitura,不过我们正在逐步减少对新功能继续开发的贡献。这为广泛的社区参与提供了更多的空间和机会,我们正在努力使社区中感兴趣的各个参与者能够使用这项技术。与其它所有的开源项目一样,Kitura的长期成功取决于围绕其形成的活跃社区,并且用户也愿意为他们所使用的技术做出贡献。 我希望这将引导Kitura更趋向于成长为一个社区引领发展的项目,进而继续发展壮大。
InfoQ:在Linux平台上的Swift现状如何?在您看来,Swift要在Linux平台上占据一席之地,还需要做哪些工作?
Bailey:Swift屹立于巨人肩膀之上,它的确是一项伟大的技术。作为一种新的语言,Swift的设计和构建是基于对前期语言的充分了解,并博采其它语言之长。 Swift本身很好地支持在服务器端使用。Swift起源和聚焦于移动设备端,这意味着Swift具有内存占用较低、启动快速的优点。这两点对于服务器端运行同样非常重要。 一直以来,Swift的最大问题在于它是否能跳出一种iOS移动开发人员用于对移动应用构建全栈前端(BFF)的技术,进而作为一种通用服务器技术应用于更广阔的应用领域。 作为Apple生态系统中的嵌入式技术,Swift从中受益匪浅。此外,在服务器生态系统所需要的功能方面,它对Apple有很多依赖,这对它的有机增长带来了很多的挑战。例如,几乎所有Swift开发人员都使用Apple Xcode作为IDE,它对iOS设备开发提供出色的支持,其中包括在模拟器环境中提供本地运行的功能。如果Xcode能添加对编写服务器端代码的支持,那会更好。这样开发人员可以通过简单集成Appsody等开发工具到Xcode,直接从本地IDE对容器环境做开发。一旦在社区中形成了开放式治理和开放式生态,人们就可通过做出贡献去解决对自身非常重要的问题和用例。 Apple公司正努力解决这些问题,支持更开放的Swift,助力构建服务器生态系统,并在近期加快了步伐。Tom Doron一直致力于领导Apple公司通过SSWG工作组推进服务器端生态系统。此外,Ted Kremenek最近在Swift论坛发文“通往Swift 6之路”(the road to Swift 6),阐述了逐步扩展生态系统并使其更开放的强烈意愿。文中提及进一步侧重于新兴的语言服务器协议(LSP,Language Server Protocol)项目,以支持更多IDE进而推动Swift的发展。
InfoQ:在服务器端领域,继Swift和Kitura推出以后,服务器端原生语言领域经历了Go和Rust的兴起。尤其是Rust,至少在专注于安全方面,应该是Swift的直接竞争对手。您如何看待这些语言技术栈之间的对比?
Bailey: Go、Rust和Swift经常被一并归类为“现代原生语言”(Modern Native Languages)。它们都是编译型的类型安全原生语言,视为C/C++语言的现代替代语言。 作为一种编程语言,Swift非常年轻。它于2014年中首次出现,但正式支持Linux的开源项目是直到2016年9月(仅三年半前)才作为正式项目发布。相比之下,Go项目和Rust项目分别已经存在了10年和9.5年,这意味着这两种语言具有明显的先发优势。 作为一种系统语言,Go正在应用于云技术的核心基础设施(如Kubernetes),并且可用于CLI的开发,因此形成了真正的市场。Rust在一定程度依然在确定自身的市场定位,但是WebAssembly的发展推动了对它的更多关注。显然就采用曲线而言,Swift稍为落后。 我在去年的AltConf大会上报告了服务器端Swift联盟的现状,给出了服务器端Swift的当前采纳程度。我在报告中比较了同一发展年龄段上Swift和Node.js软件包生态的规模。尽管在相同年龄段上Swift落后于Node.js,但目前已与大家所期待的相差无几。 从根本上看,服务器端Swift潜力巨大,我非常期待其未来成功发展并得到广泛采用。
服务器端Swift的官方论坛提供项目的进展情况。InfoQ将继续为读者提供相关最新关注资讯。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货