开放标准与开源软件

开放标准与开源软件

刘老师 发表于 2016-03-11 12:20 上一篇 下一篇


标准是用人类自然语言书写的,人类或技术的行为准则。软件是用计算机语言书写的,机器的行为准则。因此,互联网世界中技术类的标准,与软件之间天然存在诸多相似性,比如都有“封闭”和“开放”两大类。

 

封闭标准的动力多来自推动者的市场力量和技术优势,历史上曾经存在过多个著名的私有网络标准,比如IBM的SNA,DEC的DNA, Novell的IPX/SPX,后来SNA成为了ISO/OSI开放标准的基础,有的则直接消失了。今天我们使用的网络标准,如以太网、TCP/IP和WWW,都是开放网络标准。

 

60年代前在出售计算机时,以源码的方式把软件送给用户,以方面用户发现BUG和二次开发等。到了70-80年代,软件行业开始与硬件行业分离,同时走向闭源(以获得更大利益)。1998年后,开源软件开始兴起。现在全球超过1/3的IT产业与开源相关,微软公司也开始全面拥抱开源了,而之前一直批评开源是“共产主义”,是“癌症”。

 

产业界只所以支持开放标准和开源软件,是因为用户相信开放标准和开源软件带来的网络效应和竞争,会为用户带来更便宜的产品,更多的选择,更高质量的产品。这是互联网经济的特点,而硬件行业更符合工业经济的特点。

 

互联网世界“开放标准”的基本准则, 可以参考2012年W3C, IEEE, IAB, IETF和ISOC共同定义的所谓“五项基本原则”:相互合作,遵循5个基本开发原理(平等、广泛一致、透明、平衡和开放),集体授权,可获得性和自愿采纳。

 

但不同标准组织对“开放性”的理解,以及与此相关各种使用权限上存在较大差异性。比如,有的强调最终结果的开放,有的强调编写过程的开放,有的强调标准所有权的开放,对标准中专利的态度也差异很大。仅维基百科上,就罗列了出21种有影响力的“开放标准”定义。

 

软件世界“开源”的基本准则,基于1997年“Debian自由软件指南”:自由分发,包含源码,允许修改和衍生,对作者源码完整性的承诺,对个人和组织的无歧视,对应用领域(如商业)的无歧视,许可证适用于所有的再分发程序,许可证不能针对某个产品和许可证不能限制其他软件。

 

同样的,不同开源社区对“Free”和“Open”的理解也差异明显,主要体现在授权约束的强弱上。比如Linux使用的GPL就属于强授权约束的,BSD就是一个几乎没有约束的授权协议。通过OSI(Open Source Initiative)认可的开源授权协议,就有58种。

 

对“开放”理解的差异,是因为不同标准组织和开源社区对所涉商业利益的平衡策略不同。标准或代码要足够开放才可能被市场认可和采纳,但也要封闭一些才可能让围绕这一标准或代码做开发的公司获得回报。

 

一般的,当相关技术知识普及后,竞争加剧其他人也可以仿照时,就会变得更加开放。当巨头对一项技术拥有很强控制力时,比如成为平台型公司时,就会相对封闭。因此封闭和开放不是非黑即白的,开放很多时候会有一些限制条件,封闭也不是完全的黑盒子(比如可能会开放API)。

 

市场上的领导企业,为了获得更多的商业回报,一般会开发使用封闭标准,开发闭源软件。在一个赢家通吃的市场中,后进入者要想获得一杯羹,或者试图削弱领导企业的优势地位,就只能报团取暖。不能彼此报着,得有个中介,这个“团”就是大家一起做的开放标准,一起开发的开源软件,以形成共通市场,抵消市场领导企业的优势。

 

比如,当封闭网络标准流行时,大家就成立了一个叫IETF的开放标准组织。当Apple封闭的iOS领导智能手机OS时,大家只好聚拢到了Google开源的Android旗下。当封闭的AWS统治了云计算的IaaS市场时,大家就只好聚拢到了OpenStack开源社区旗下一起奋斗。

 

在市场还处于混沌状态的时候,一些技术领先的企业会主动开放自己的标准,开放自己的代码,甚至开放自己的专利,以吸引产业链共同参与,通过短期利益的损失换取未来发展的主导权,形成以自己为核心的生态系统。比如Tesla开放电动汽车专利等,就是瞄准全球电动汽车产业未来的标准主导权。

 

标准和开源都需要妥协,因此都需要权威的协调组织和机制。开放标准的权威组织,可能是官方指定的政府间组织(比如ITU-T),也可能会是自发形成的(比如IETF,W3C)。开源软件的社区,一般是自发形成的,是开发人员的俱乐部,比如Linux基金会。

 

标准没有直接的商业模式,标准机构靠会员费和捐赠等维持。大家只所以愿意出人出钱做“公益”,是因为标准中涉及的技术方向、专利以及领先市场的实现。开源没有直接的商业模式,依靠众筹模式的基金会维持。开源中涉及的专利以及后续的定制开发、优化、咨询和培训等,是开源企业目前最主要的生存模式。

 

ISO、IEC、ITU和IETF等标准组织,都允许标准中有专利,但要求公开声明,必须是“合理的和无歧视授权”。但只有ITU和IETF明确声明自己的标准是”Open”的,W3C则声明它自己的标准中没有专利费。开源与专利也并不矛盾,比如Java是开源的,但Java语法有专利保护。

 

有些标准只是写给人读的,因此没有对应的开源代码。有些标准是间接写给机器运行的,一般会要求2种以上代码实现,甚至开源实现。开放标准可以是闭源实现,也可以是开源实现。开源软件可以实现的,一般是开放标准,但也可能会模仿一些封闭标准或封闭软件的接口,比如开源云OpenStack对AWS API的支持。

 

在软件定义一切的时代,在开源已经成为潮流的世界里,越来越多的标准化工作,将可能会被开源所替代。作为与IT产业发展密切相关的我们也要时刻意识到这一点,以及对自己职业生涯的可能产生的影响。

 

本文转自:何所思 个人微信公众号 作者:何宝宏


评论


暂时没有评论~

作者
刘老师

学无止境,虚怀若谷!


文章:202
本类推荐
欢迎大家开源合作
刘老师  2014-10-01 17:38:00
   1759   
创客教育与教育创新
刘老师  2014-11-03 18:51:00
   878