开放标准和源代码共建开放技术生态
2018-10-08丁蔚
丁蔚
开放标准与开放源代码是构建基于开放性互操作信息通信技术(Information and Communication Technology,ICT)生态的两种重要方式,两者相互补充,相互促进,共担重任,缺一不可。
对互操作的需求是ICT的基本特征
ICT生态对于互操作具有独特的要求。这种独特性区别于传统产业。传统的产业供应链中对于协作也有很高的要求,例如集装箱带来的“互操作”改变了世界贸易格局。但是,传统产业的供应链相对稳定,相对狭窄的企业集群使得这种协作在一个较小的范围内也可以有效地运作。
而ICT作为使能工具,必须通过全面的互操作才能共同促进经济实体的广泛交流和协作,实现其经济价值。因此,对互操作的需求是ICT的基本特征。
开放性互操作是ICT可持续发展的重要目标
用户在选择ICT方案的时候,首先考虑的就是其互操作的能力,这也是为什么流行的技术可以迅速占领市场的价值基础。实现互操作的复杂性成为信息技术公司选择技术战略重要的维度,一种有效的战略就是公司通过独占互操作的基础平台实现价值最大化,而相对应的另一种方式就是公司之间通过紧密的合作,成为技术供应链的一个环节,获得其专业服务价值。
《国富论》的基本立论是分工带来财富,这一判断在传统产业和信息技术产业是相同的,因为技术工人作为历史的发展个体,其技术能力必定是有局限性的,因此也只有通过协作才可以实现技术效能的最大化。
而信息化作为渗透到这个社会方方面面各个领域的一个体系,其专业需求的分散化更加明显。
如果可以预测,基于一家公司作为互操作平台的技术方向只可能是暂时的,而社会所需要的是能够实现开放的、良好互操作的和适应于分工合作的技术体系。因此,面向开放性互操作的ICT生态才是可持续发展。
开放标准与开放源代码是实现开放性互操作的两种方式
为了满足用户的需求和推动产业的良性发展,技术厂商不断努力追求塑造基于开放性互操作的技术生态,这种努力就是开放标准和开放源代码运动。
开放标准
正如传统产业的螺丝、螺帽标准所实现的技术协同一样,ICT的互操作也是通过类似的技术标准来完成的。
在ISO/IEC中通过第一联合工作组JTC1(信息技术标准化)制定了大量的技术标准,同时为了满足更快的技术标准需求,很多协会标准化组织也纷纷建立起来,为实现技术的协同作出重要的贡献。通信领域更是如此,如果没有ITU的工作,就没有目前跨国界的通信基础设施。
开放标准运动一定程度上解决了ICT产业的技术分化的问题,为实现基于开放性互操作的ICT产业奠定了基础,这一点从目前互联网的广泛普及可见一斑。
开放源代码
ICT对于互操作的需求并没有通过标准化的过程完全得以满足,一方面是由于开放性互操作要求在ICT领域中的作用无限放大,另一部分原因是传统的标准化体制也无法适应ICT这样一个由标准引领的發展模式。为了应对标准化的不足,公开标准的实现,也就是代码,成为一个影响深远的运动。
代码是信息技术实现的物理表达,也是实现互操作的核心,随着人们对于软件服务化和信息技术基础设施化认识的逐步深入,开放源代码的商业模式也逐渐清晰。
不仅如此,人们还从代码公开运动中看到了其对于技术创新的积极作用,与新经济的核心整合在一起,又增加了开源运动的合理性。
反对开放源代码可以全面代替开放标准的错误观点
开放标准是基于开放流程的、以互操作目标的、民主化的技术开发过程,是完成信息通信技术网络效应的技术实现,是奠定蓬勃发展互联网世界的技术基石。
开放源代码则是许可证控制下代码公开和合作开发方式。两者互相补充,互相配合,共同构建开放性互操作产业生态,反对开放源代码可以全面代替开放标准的错误观点。
对于开放源代码可能全面代替开放标准的误解,根源在于开源可以在一定程度上完成开放标准的一部分功能,即实现系统的互操作,然而这并不是事实的全部。
开放源代码是基于源码的互操作
开放源代码确实可以一定程度上完成支持系统之间的互操作,但是这种互操作是在源码一级实现的。这一局限性导致的结果是只能保证采用这套源码的系统之间的互操作,而对于与其它的竞争开源项目、竞争私有系统以及同一生态体系的其他系统之间的互操作是无法保证的。
因此,如果说基于开源项目就可以实现互操作,那么其隐含的假设是所有用户都实施基于这个项目的系统,而这个假设在庞大的技术生态圈中是不会发生的,同样也不符合这个世界本质上对多样性的需求,以及用户对于个性化的需求。
开放标准是基于接口的互操作
相反,开放标准可以在更广泛的范围内实现互操作,正是因为其能够在更高的抽象级别定义互操作需求,通过接口实现互操作,而不是基于源代码实现。
标准化的过程会考虑不同源代码的实现,甚至包括还没有发明出来的开发语言也可以实现。例如,很多开放标准都会基于XML语言定义标准化接口,保证不同的开发语言都可以实现。
不仅如此,开放标准的技术抽象不仅可以保证不同开发语言、体系结构之间的互操作,还可以保证产业界采用不同形式的创新来实现互操作,无论是开源实现还是闭源实现。
开放标准和开放源代码之间的互补关系可以通过标准化组织积极致力于开源项目开发,而开源组织也通过开发和标准这两方面来证明,例如JCP标准化社区的OpenJDK开源项目以及OpenStack的DefCore标准项目等。
开放标准和开放源代码的关系
作为建设开放生态的两个重要组成部分,开放标准和开放源代码两者的关系需要进一步厘清,以便实现两者的有效整合,为ICT产业发展带来更大的价值。
一是开放源代码必须实现开放标准才能完成广泛互操作的目标。例如,如果一个开源项目不实施TCP/IP标准,就会被孤立在互联网之外,无法完成互操作。
二是开源项目中可能由于代码的分化,导致互操作的缺失,以至于无法广泛推广,需要制定标准进行规制。例如,Linux Standards Base标准促进了Linux系统的统一。
三是开放标准不仅支持开源实现,也支持闭源实现。例如,TCP/IP协议栈的实现,有开源的版本,也有闭源的版本,特点不同,面对不同用户的需求,满足多样性的需求。
四是开放标准和开放源代码相互支持、共同发展。采用开源项目实现开放标准对于验证标准的可用性、帮助开发者理解标准以及推广标准的应用有积极的推动作用。
五是实际上互联网第一语言Java的开发就是开放标准和开放源代码共同合作的结果,由标准化制定组织JCP制定标准,同时由开源社区开发其开源实现OpenJDK,在GPL许可证下供所有人使用。
在开源与私有产品的竞争中,开放的技术标准可以作为领军先锋,通过标准应用撬开垄断的市场,开源才有机会得以进入。
总结与建议
在推广开放源代码的过程中,应当厘清开放源代码和开放标准之间的关系,以便于倡导和建设开放的技术生态,促进产业健康发展。