最近有关开源软件的话题始终占领着IT界的新闻头条,Log4j开源软件的惊天漏洞,才刚刚出现不久,Fake.js的作者也惊天删库跑路了,CurL的作者怒怼苹果只会白嫖开源却不出力,Linux的祖师爷Linus也不知所云地在Github为WINXP加油打Call。
开源界也算是痴人、狂人、妄人、疯人齐聚了,但是不可否认的是开源极大的推动了IT行业的发展,尤其是让国内新一代程序员快速融入到了信息科技大潮中。去年初一个外国程序员发布了一篇题为《中国的开源项目正在破坏 GitHub 的排行榜》的博客,对中国项目占领GitHub 的趋势榜的情况进行了无奈的吐槽,而这样火爆的场面恰恰是我国开源事业蓬勃发展的一个侧影。目前不但来自中国的项目占领了Github的排行榜,而且越来越多的中国年轻程序员也都始投身到开源社区,目前在GitHub全球4000 万的注册用户中,来自中国的开发者从数量和贡献度上均位列第二,越来越多的国内企业在国际合作的开源项目中扮演着重要角色。
开源-西方人的集市、中国人的侠义
开源软件即公开源代码的软件,所以从这个角度上讲开源软件是信息产业发展到一定阶段以后的产物,因为在IT产业刚刚创立的时候,软件都是以源代码的形式提供的,可以说当时的软件都是开源的。
而在上世纪70年代以微软为代表的软件公司,仅提供编译后的二进制可执行程序,而不再提供源代码了,这就形成了闭源的概念,在在此之后真正意义上的开源产业也就相对于闭源形成了。
开源概念的形成,自始就有很大的挑战传统、不畏强权的侠义精神在其中,而这要从由Richard Stallman创立的GNU开始说起。GNU的官方定义是一个“GNU is Not Unix”,这是十分叛逆的递归型定义,因为人们可能只能从其中看到反Unix闭源的理念,却永远也找不到本意,GNU的目标是创建一套完全自由、开放的操作系统。,从某种程度讲,Linux就是GNU理念不断推广所形成的产物,
后来Richard Stallman创立了自由软件基金会(Free Software Foundation ,FSF),其主要工作是执行GNU计划。为了保证GNU软件可以自由的“使用、复制、修改、发布”,同样也禁止部分人在GNU软件的基础上自己修改并发布的软件中添加任何限制他人自由使用的条款,在这个情况下就诞生了GNU的许可条款,再后来又产生了其他的(非GNU)许可条款,这些又统称为开源许可协议。而这些开源协议又将开源项目分成了各自不同的门派,而各派之间又有不同的玩法,所以从这个角度上讲开源是中国侠义精神的体现一点也不为过。
而开源与集市的类比,要从IT界传奇人物Eric Raymond史诗级的著作《大教堂和集市》(The Cathedral and the Bazaar)说起。书中讲到,世界上的建筑可以分两种:一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用。当你新建一座建筑时,你可以采用集市的模式,也可以采用大教堂的模式。一般来说,集市的特点是开放式建设、成本低、周期短、品质平庸;大教堂的特点是封闭式建设、成本高、周期长、品质优异。
而开源将软件之所以使用类似于集市模式,关键在于集市可以让更多的用户参与到软件的开发的过程中,提高软件的质量,来更好地支持自己的服务。这也是为啥微软也在逐渐开源一些自身的工具,比如vs code,微软并不需要售卖vs code所带来的利益,反而让更多的人免费使用vs code,报告vs的bug,扩展vs的功能,反而更有利于微软操作系统 的推广,因为vs生成的软件大多是在windows上执行的,微软也可以通过通过vs来推广自身的一些如windows Azure的服务。其实这种说法,是克里斯·安德森《免费:商业的未来》与谷歌长尾理论的另一种诠释,其逻辑内核都是基于极低边际成本来快速积累用户的模式。这也从另一个侧面说明了开源会是业个典型的互联网产业。
开源不应该被白嫖-业界的反思
去年中国某电子书厂商拒绝开源其基于Linux 内核修改的源码,这一明显违反了GPL协议开源协议的做法,引发了国内外有关开源使用规则的大讨论。当然身力憔悴的开源人并不是我国独有,上文提到的Fake.js、Linux、CurL等知名开源软件的创始人,也都为了开源事业做出巨大贡献了,但是“一斗米是恩,一升米是仇”,一味地无私奉献往往换来的不是赞誉而是漫骂与批评,
因此很多成功的开源软件在创始人屡屡受挫而“心累”之后,往往会倾向于慢慢走向自闭,这个趋势在Github上也能看出端倪,作为全球最大的开源社区网站,在2020年开始对于某些区域的用户加以限制了,对于开源软件的使用也开始有了不同的声音,比如来自清华大学的刘利副教授就公开表示说“我国对国外开源基础软件的依赖,使一些国家可随时通过隐藏最新技术或版权,限制甚至阻碍我国科技发展。”
不过从实际情况上看,笔者不太认同刘利老师的说法,盲目的抄袭当然是有害的,但是借鉴开源软件的思路和想法,对于我国乃至整个IT产业来说都非常重要。在目前IT技术发展日新月异,拥抱开源、互通共享已经逐渐成为了业界的共识,在这种情况下,获取开源技术社区的支持,对地我们来说无比重要,不过这种支持是交互的,也要求我们在使用开源时,尊重开源规则。
契约精神-开源的可持续发展
说起开源协议,就不得不提GNU。其官方定义是一个“GNU is Not Unix”,这是官方给出的递归定义,永远也找不到本意,我们可以将它理解为一个自由软件工程项目或者一种计划,是由Richard Stallman在1983年9月27公开发起的,它的目标是创建一套完全自由、开放的操作系统。1985年10月Richard Stallman创立了自由软件基金会(Free Software Foundation ,FSF),其主要工作是执行GNU计划。为了保证GNU软件可以自由的“使用、复制、修改、发布”,同样也禁止部分人在GNU软件的基础上自己修改并发布的软件中添加任何限制他人自由使用的条款,在这个情况下就诞生了GNU的许可条款,再后来又产生了其他的(非GNU)许可条款,统称为开源许可协议。
这里列举了最常用的几种开源协议:
GPL (GNU General Public License) :GNU通用公共许可协议
LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议
BSD (Berkeley Software Distribution) :伯克利软件分发许可协议
MIT (Massachusetts Institute of Technology):MIT许可协议之名源自麻省理工学院,又称“X许可协议”或“X11许可协议”
Apache (Apache License) :Apache许可协议
MPL (Mozilla Public License) :Mozilla公共许可协议
如果将开源协议具体用途的决策点进行分类,那么其导图如下:
笔者在这里必须要提示大家,我国科技公司对于知识产权的重视程度不够,尤其对于开源规则、开源协议重视程度不够,这点的确值得我们反思。
比如国内最早的开源操作系统项目MiniGUI也发布了例外清单,EXCEPTION LIST :: 飞漫对某些未遵守GPL协议的公司进行了例外处理。虽然这些还没有升级成我国IT界与开源社区的冲突,但是笔者还是要呼吁业界,在在使用开源软件的时候一定要注意遵守相关规则。
说起健康的开源模式,国内厂商中RT-Thread算是其中的翘楚,他们的模式是代码完全开源,创始人一手建立的睿赛德则在背后进行技术支持,并收取技术服务的费用,去年睿赛德发布了混合微内核而且支持MMU的物联网操作系统-RT Smart,由于物联网终端的运行条件限制,其操作系统对于性能要求很高,但体积又不能太大一般不有超过10M,可以说体积要求几乎把Windows、安卓等目前主流的操作系统排除在外,所以从这个角度上讲,这对于我们自主的物联网操作系统来说将是一个重大机遇;另一方面物联网操作系统的功能也不能太简单,这对于自主物联网操作系统来说又是一项挑战,而RT Smart在性能、体积与功能方面堪称完美平衡的典范, RT Smart的关键发布也证明了这种代码开源,服务收费的模式才是开源的健康发展模式。
如果要问两年前中国最大的文化输出是什么,那这可能是大刘的科幻,也可能是莫言的小说;而如果现在要问这个问题,那它的答案应该是开源。十年前业界流传“代码正在吞没世界”的观点,现在IT界普遍认为“互联网世界的一切源自开源”,这里笔者再次呼吁业界,遵守开源规则,用好开源软件。