谈谈华为鸿蒙和开源软件(上)

由于华为在 5G 技术上领先于美国,这让某些自视甚高的美国人无法忍受,开始打压华为,2019 年 5 月 16 日,美国政府把华为列入实体清单,禁止美国企业卖芯片给华为,禁止美国的高科技企业和华为做生意,其中就包括谷歌,谷歌的软件不再被允许授权给华为。

近一年来,很多自媒体都对此发表了各种评论,其中有些评论传播广泛,比如:“华为不能再使用谷歌的安卓手机操作系统”,“华为自主开发了鸿蒙操作系统”,“鸿蒙是抄袭的安卓”,甚至给出了鸿蒙系统中使用安卓调试工具 ADB 的截图来证明鸿蒙是抄袭的等等。在各种争吵之中,很多人都暴露出对于开源软件,对于开源世界的一无所知。

“鸿蒙系统是不是抄袭安卓?” ,“鸿蒙系统可不可以不开源?” 要回答这些问题我们需要了解一下什么是开源软件,为什么会有开源软件。

对于心急的读者,我可以提前告诉答案。

我,brep,复制一份安卓系统的代码,从此改名为“貔貅系统”,可不可以?答案是可以!而且要理直气壮地大声说,不仅可以而且合法!

我的“貔貅系统”从此以后不再开源了,可不可以?答案是可以!而且要理直气壮地大声说,不仅可以而且合法!

如果你想知道为什么,请继续读下去。

自由软件的出现

在计算机发展的初期,软件是硬件的附属品,软件不是独立的,买硬件,送软件。比如早期的 IMB 大型机,DEC 小型机时代,软件都是买机器时附赠的,而且软件的源代码也可以随便传播,不受限制,机器的用户可以自己修改源代码,消除 bug 或增加功能。

上个世纪 70 年代初,Unix 操作系统横空出世,Unix 也是以源代码形式传播的,正是因为有源代码,Unix 才被移植到各种计算机上,得以流行。

到了 70 年代末 80 年代初,软件开始独立于硬件发展,比尔盖茨等人开始推广软件版权的概念,盖茨等人认为软件是程序员付出大量劳动的产品,不应该免费,程序员也要恰饭,软件公司也要赚钱。于是大多数的软件都开始收费,而且不提供源代码,只有售卖编译好的二进制版本。软件版权的推广,催生了以微软为代表的一大批软件企业,也催生出了大量优秀的商业软件。

但是,不提供源代码的私有版权软件激怒了一条大汉,此人身长八尺,豹头环眼,燕颔虬髯,胯下没有乌骓马,手中没有丈八矛,此人就是 Richard Stallman,他的名字缩写为 RMS,当时他是麻省理工学院人工智能实验室的程序员。RMS 认为,软件就像是菜谱,你把菜谱分享给朋友不应该是违法的。1985 年,RMS 发表了 GNU 宣言,提出了自由软件的概念,他发誓要开发一套源代码可以自由传播的操作系统,这套系统叫做 GNU,意思是“不是 Unix”。RMS 一边执着地宣传自己的理念,同时也自己编写自由软件,比如编译器 GCC,调试器 GDB,编辑器 Emacs 都是他的作品,他说服了很多人出资支持他的计划,成立了自由软件基金会以促进自由软件的开发。

谈谈华为鸿蒙和开源软件(上)

Richard Stallman

1989 年 RMS 和几个律师朋友起草了著名的 GNU 通用公共许可证,也就是 GPL 许可证,这是一个里程碑式的事件。GPL 许可证的大意是,采用 GPL 许可证的软件以源代码的形式自由分发,每个人都可以修改源码,但必须把修改的部分公开。

Unix 操作系统采用小工具哲学,操作系统由一堆小工具组成,每个工具只做一件事,但要做好。在 RMS 和自由软件基金会的努力下,GNU 操作系统逐渐成型。就好比做满汉全席,一桌子菜都准备好了,只差一个主菜就可以开席了,这个主菜就是操作系统内核。RMS 把这个内核叫做 herd,牧羊人的意思。GNU 这个词有羚羊的意思,一堆羊都有了,只差一个牧羊人。当时的计算机理论界认为,操作系统应该用微内核的形式实现,单体内核是落后的象征。RMS 受到学院派的影响,herd 用微内核的形式开发,结果掉到坑里了,理论上微内核很先进,实际开发时才发现很难调试,bug 难以发现,系统很不稳定,herd 迟迟难以面世。

1991 年,芬兰的一个小鲜肉,还在读大学的 Linus Torvalds 对微内核理论嗤之以鼻,在互联网上与当时的学界大佬塔南鲍姆就单体内核与微内核的优劣进行了公开辩论,Linus 开发出了单体内核 Linux,填补了 GNU 系统中最重要的一个空白。

谈谈华为鸿蒙和开源软件(上)

Linus Torvalds

Linux 发行版的出现

有了 Linux 内核,加上之前 GNU 开发的一系列工具,“自由操作系统”这个满汉全席就可以上桌了,于是就有了以“红帽子”为代表的企业,把散落在世界各地的 GPL 源代码搜集起来,制作出下载安装非常方便的所谓“Linux 发行版”。

但是,这种“发行版”中,除了内核是 Linux 之外,大量的软件工具都是 GNU 的作品,仅从代码行数计算,GNU 的贡献要远远大于 Linux 内核,而发行版命名时却不叫“GNU 操作系统”,而是叫“Linux 操作系统”,这种情况让 RMS 大为光火,于是他在世界各地演讲,到处宣讲这个操作系统应该叫“GNU 操作系统”,至少也要把 GNU 加在 Linux 前面,称为“GNU/Linux 操作系统”。

开源软件的兴起

RMS 宣传的“自由软件”的概念,以及 GPL 许可证“我的代码公开,你的修改也要公开”的要求,让另外一些人感到限制过多,需要提出一个更为宽泛的概念,于是就有了“开源软件”,他们提出了“Open Source Initiative”,也就是“开源倡议书”,其中提出了开源的十大原则:

1,必须允许自由分发

2,必须开放源代码

3,必须允许修改派生

4,如果原作者要求保持代码的完整性,则必须允许源码和补丁一起分发

5,不能歧视任何个人或组织(偷偷说一句,就是不能限制恐怖分子用来做炸弹,那归警察管,不归开源组织管)

6,不能限制应用领域(比如要求“只能用于研究,不能用于商业”就不符合开源原则)

7,不能用另外的许可证限制软件的分发(比如要求签署保密协议)

8,不能限定软件只能用于特定产品

9,不能限制其它软件(比如,“用了我的开源软件就不能用 XX 公司的软件”)

10,许可证必须是技术中性的(比如,只能用光盘发行,不允许上网下载)

凡是不符合上述原则的,都不能称为开源软件。比如微软允许某些“专家”查看 Windows 的源代码,允许政府机构派“专家”到微软公司审查 Windows。微软的做法让一部分人可以看到源代码,但 Windows 不能被叫做开源软件。

“开源十原则”极大地促进了开源软件的发展,最关键的,是开源软件为商业应用扫清了障碍。

此后,越来越多的机构加入了开源的行列,比如,麻省理工学院贡献了“X 窗口系统”,网景公司贡献了浏览器(Mozilla),SUN 公司贡献了办公套件“OpenOffice”,等等。

伴随着这些大块头的开源软件,出现了各种各样的“开源许可证”,这些许可证的要求各有不同,但都符合上述“开源十原则”。

今天太晚了,明天我们谈谈这些许可证。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据