华为在2020年的日子过得很艰难,不仅无芯片可用,还因为谷歌的临时许可证将在8月底到期,面临被彻底断供Android。

无独有偶,早在7月14日,工业和信息化部技术发展司公布了“2020年开源托管平台项目”的招标结果,Gitee中标,构建“面向中国的独立、开放源代码托管平台。”这意味着,中国码农贡献的开源代码,无需漂洋过海寄存到美国。

上述看似风马牛不相及的两则信息,都指向我们对开源软件的一个最大误解:开源软件可以免费使用、自由修改,美国政府无权干涉。

开源系统会不会不安全(我们对开源软件最大的误解)(1)

最后的黑客

1992年,芬兰赫尔辛基大学生林纳斯.托瓦兹(Linus Torvalds)发布Linux 0.12版本时,撤下了原来的版权声明,选择了通用公共(GPL)许可证。

GPL被称为“公共版权”或“著作权”,是诸多开源许可证中比较著名的一种,由开源软件运动鼻祖理查德.斯托曼(Richard Stallman)亲自撰写,并经律师审核。

开源系统会不会不安全(我们对开源软件最大的误解)(2)

实际上,开源许可证作为一种法律文件,基本都经过了律师的手和眼睛。

理查德.斯托曼被誉为传奇性的“最后黑客”,他痛恨计算机公司在把软件作为单独的产品销售后,居然不提供源代码(仿佛看到比尔.盖茨尴尬的表情)。1985年,斯托曼发表了著名的GNU宣言,其中有一句话相当有名:“软件共享的历史与计算机一样长久,如同人类自烹饪始就交换食谱一样。”

开源系统会不会不安全(我们对开源软件最大的误解)(3)

“最后的黑客”理查德.斯托曼

斯托曼的宣言强调了软件共享,但有相当一部分人却理解成无偿公开源代码,并以讹传讹,逐渐和开源软件划上了等号。林纳斯对此非常痛恨,称这部分人是“顽固分子”,他认为开发者有权处置自己的发明,是否借开源软件赚钱,完全看开发者怎么想。

开源软件的核心,其实可以归结为一句话,即强调软件的版权,以及使用者的自由分享,是否收费并不是重点。以GPL为例,其条款规定,只要有人愿意买你的软件,你开价一百万美元甚至更多都没有问题,但你必须给买家相应的源代码,同时买家拥有你所有的权利。

商业软件的核心则可以概括为三句话:像开源软件那样强调软件的版权,向使用者收费,不开放源代码并禁止自由分享。

集市和大教堂

和现在普遍的看法不同,开源软件的历史其实比商业软件长远得多。

计算机的早期岁月,还是纯真年代,所有的软件几乎都是开源的,自由分享软件就像空气一样自然,像流水一样无处不在。

计算机公司这么做有现实的考虑,当时的用户都是大中型企业、大学以及科研机构等,具备专业的软件开发者和计算机科研人员,因此将软件的源代码提供给用户,软件一旦出现问题,用户可以通过修改源代码自行解决,公司自然减轻了售后服务的压力。

用户也享受到修改源代码的好处,既解决软件BUG,又可以满足个性化需求,因此对计算机公司当“甩手掌柜”(开放源代码)的做法举双手欢迎。

但是,随着计算机进入千家万户,绝大部分用户对编程一无所知,因此以微软为代表的商业软件公司迅速崛起,闭源的商业软件取代开源软件逐渐成为主流,开源、闭源之争由此而来。

说到这里,带出一个重要话题,商业软件和开源软件并没有道德上的高下之分,而是商业模式的不同选择。这也是开源软件常被人误解的地方,它和公德心没有半毛钱关系。

埃里克.史蒂文.雷蒙德(Eric Steven Raymond)在其开源运动先驱著作《大教堂与集市》中,将商业软件和开源软件分别比作大教堂和集市,教堂是按照精心设计的图纸修建的建筑,圣人巨匠呕心沥血,历数十年方始完成,集市则是人人可以参与建设,没有固定模式,也不知道完成的结果如何。

这个世界需要恢弘的教堂,同样离不开食人间烟火的集市,两者谁也无法替代,正因为如此,在上世纪90年代,商业软件引领潮流后,开源软件又卷土重来,两者犹如两江之水交汇,结果是,现在的软件既不是单纯的闭源,也不是纯粹的开源,而是混源。

谷歌在Android上玩的把戏

前文提到的Android,内核是Linux,这也是其被称为开源操作系统的由来,却并不是真正的原因。实际上,Linux Kernel的维护者早已将Android代码从其代码库中剔除,使得Android靠Linux打上开源标签已不可能。

而Android的开源名号,其实是谷歌为了对抗苹果的iOS系统,主动将Android开源。换句话说,Android是否开源与Linux无关,而是谷歌选择了开源这种商业模式。

开源系统会不会不安全(我们对开源软件最大的误解)(4)

Android之父安迪.鲁宾

得益于开源,Android迅速吸引了智能手机、智能电视等厂商入局,打败了有十几年根基的老牌手机操作系统诺基亚Symbian,超过苹果iOS,成为全球第一大移动操作系统。

开源系统会不会不安全(我们对开源软件最大的误解)(5)

但在Android成为江湖霸主后,谷歌开始玩起了把戏,在2010年将Android上搞了两个动作,一是将Android的基础框架代码开源,所有厂商可以免费使用,再就是是谷歌移动服务(GMS,包含了谷歌三件套等一系列应用和API)闭源。

而且谷歌还不动声色地将开源代码中的应用和API一点点掏空,用GMS中的应用和API来取代,这就是为何Android新版本或新的SoC芯片发布后,国内手机厂商需要和谷歌一起优化的原因,因为谷歌抓住了Android的命根。

正因为如此,Linux才讥讽Android是伪开源。谷歌在Android上煞费苦心玩的把戏,出发点是商业利益的考量:用免费的Android框架代码这根“骨头”,吸引手机厂商为谷歌奔跑,而Android的未来和商业收益则由谷歌独吃独占。

Android的事例表明,世界上没有免费的午餐,如果有,一定会让你在其它地方付费。

由于软件是否开源,完全取决于开发者的商业利益考量,而不是公德心,所以开源软件向闭源转换也不是不可能的事。

2010年,甲骨文(Oracle)公司收购Sun Microsystems后,获得了全球开发者使用最多的数据库MySQL的发布控制权,不久就显露出将MySQL从开源向闭源转换的迹象,不仅没有提供补丁的相关测试数据,还清除了修订历史。

中国科技公司的风险

既然开源软件的版权受控,不是无条件使用,所以它具备一定的风险并非空穴来风,除上文提到的开源转闭源的商业风险外,还存在政治因素风险。

2019年5月,在华为被列入美国实体清单后,中国开放指令生态(RISC-V)联盟对全球12个知名开源基金会、6个常用开源许可证和3个代码托管平台进行了调研,分析它们在出口管制、司法管辖权和开源许可证下受到的约束以及潜在风险,得出的结论是,虽然开源基金会和开源许可证可以允许不涉及加密功能的开源项目规避出口管制,但因为代码托管平台会受到出口管制,因此存在这些代码托管平台的开源项目仍然会受到出口管制的影响。

这方面已有现实的案例。

根据ZDNet的报道,2019年7月,一个面向开源及私有软件项目的托管平台GitHub,由于美国贸易管制政策,限制了克里米亚开发者的账户,导致其托管的开源代码无法访问。同样受限的还有伊朗的开发者。

开源系统会不会不安全(我们对开源软件最大的误解)(6)

受限制的GitHub用户,图中上部的黄色字体为警告

开源系统会不会不安全(我们对开源软件最大的误解)(7)

至于开源软件受限,最明显的例子就是谷歌对华为的断供,既切断了华为使用GMS服务,也停止向华为提供Android技术支持。

在上世纪90年代,当开源软件的风刚吹入中国大地时,中国的IT公司还犹如稚嫩的小草。可以说,中国的互联网产业能从微末发展到参天巨树,并攀上全球数一数二的阶梯,开源软件居功至伟。

不过,随着中国互联网产业的发展,中国已从开源软件的受惠者,变成反哺者,开源代码的贡献率上,中国已经位居全球第二。反映到开源代码托管上,那就是中国的高科技公司成为美国开源代码托管平台的重要客户,其中GitHub最受青睐。

根据媒体 InfoQ 统计,截至2019年3月,阿里巴巴在GitHub 的公司帐号旗下有项目有1243个,百度有746个,腾讯有131个,华为有247个,小米有113个,美团有131个。

开源系统会不会不安全(我们对开源软件最大的误解)(8)

中国的GitHub用户已居全球第二,仅次于美国

这就带来一个不可忽视的巨大风险,一旦美国针对中国公司的贸易管制政策蔓延到开源项目,中国公司托管在海外的开源代码资产将面临冻结风险,公司经营也将受到冲击。有鉴于此,工业和信息化部才推出了“开源托管平台项目”招标,一场未雨绸缪的行动就此拉开了序幕。

在国际贸易冲突的背景下,开源的世界正变得四分五裂,“最后的黑客”、开源软件运动鼻祖理查德.斯托曼(Richard Stallman)憧憬的人人分享的乌托邦世界已渐行渐远。

,