苹果公司表示其将把Swift语言打造为开源项目,但在软件自由度的问题方面仍然有所保留。
那么对于一款编程语言来说,开源机制的介入到底意味着什么?这个话题说起来就有些复杂了,而且也关系到开源命题的核心所在。具体来说,其编译器可能是开源的、整套工具链可能是开源的、而语言本身也可能由开源IDE负责支持。这里提到的每一项都可以算作是一种语言走向开源的必要元素。
接下来要提出的问题则是:单凭独立开发者之力,能否实现语言的开源转化?这个问题同样复杂。就以甲骨文公司为例,虽然其切实将Java推向了开源,但却无法容忍Java替代性方案的出现——正如谷歌所发现。因此,我们必须等待苹果公司最终拿出的实际许可,并借此了解其到底是真正为我们带来代表着开放的大门、抑或仅仅是像甲骨文那样通过玩弄专利与版权来刺激与项目相关的创新活动。
不过值得关注的内容还不止于此。当前最值得大家认真考虑的问题在于,这款编程工具是否会带来软件自由。要回答这个问题,单纯关注语法、工具链甚至是独立实现的可能性都还远远不够。
一种编程语言绝不仅仅是将多套SDK——即API加上代码库——拼合起来所形成的产物。从自身角度出发,编程语言能做的并不多。但真正重要的是对应平台拥有可资利用的开源SDK外加用户能够切实获得的API,特别是对于那些以软件自由性为核心诉求的编程语言而言。
Swift语言的设计主旨是为了给苹果公司旗下受到严格保护的移动系统平台开发安全性更高且开发过程较Objective-C更简洁的编程成果。苹果公司指出,其“计划面向OS X、iOS以及Linux”,但三者事实上存在着巨大差异。其中iOS与OS X功能集的最大特征在于“汇聚”,相比之下Linux则拥有面向一系列系统方案的“松散”特征——具体来讲,单单是通用型窗口管理器就分为GNOME与KDE两大阵营,其下还各自包含多种分支版本。
尽管Swift将为iOS系统开发工作带来更出色的类型与内存安全效果,但在我们看来,利用Swift为iOS及OS X编写的应用程序恐怕很难被移植到其它系统之上——除了应用中的通用“引擎”代码之外。也许那些采取严格MVC方法的应用能够更轻松地与Swift的控制器机制相对接,但我们仍然很难相信这足以带来可顺畅移植的视图代码。
那么苹果公司的Swift编程语言到底是否会走向“开源”?除非亲眼看到该工具链当中的具体许可及治理条款,否则我们没办法给出确切答案,不过苹果方面给出的答复是肯定的(包括OSI核准许可、接受代码贡献等等)。而且即使开源成为现实,如果我们无法利用Swift语言开发出开源应用,那么这一切仍然毫无意义——这绝不是什么学术问题。
编程语言本身并不是问题的关键所在;它们所使用的SDK才是真正核心。当苹果公司公布能够与Swift并行协作的SDK方案时,这些方案几乎不可能会以无缝化方式作用于Android或者其它任何基于Linux的开源平台之上(更不用提Windows了)。
Swift也许能够为现代开发人员提供口头上的开源承诺与对自身有利的舆论筹码,但我个人对此并不抱太大希望——特别是考虑到苹果公司对于自身专利技术储备所抱持的一贯保护态度。