查看原文
其他

视频 | 你不知道的"开源"60年秘史

Aholiab 程序人生 2020-10-29

作者 | Aholiab
责编 | Aholiab
头图 | CSDN 下载自视觉中国
出品 | 程序人生(ID:coder_life)


一个视频看懂波澜壮阔开源史



从上世纪60年代贝尔实验室的MULTICS操作系统,到Unix的诞生,再到今天一统服务器的Linux。开源的历史就是互联网的发展史。大数据、云计算、移动互联网、超级计算机,离开了Linux服务器一个能打的都没有。


本视频将带你重温开源那段波澜壮阔的历程,让我们一起回到60年代的贝尔实验室、回到Unix的诞生地、回到BSD和Minix的起源、回到轰轰烈烈的自由软件运动、回到赫尔辛基Linus的那间小房间、回到山景城VA Linux的办公室……看看开源怎样影响着今天的世界。


点击下方小程序或「阅读原文」,直达完整版无广告视频,看在五一还在为大家谋福利的份上,多多在看转发哟ღ( ´・ᴗ・` )比心!



以下为文字稿内容


根据2019年GitHub年度数据报告统计,在GitHub全球4000万注册中户中,中国开源项目的贡献量位列第二。越来越多的中国企业积极拥抱开源。
 
从20世纪60年代阿帕网(ARPANET)将共享源代码、互相协作和开放通信的底蕴写入软件开发的基因中开始,到开源操作系统的鼻祖UNIX的诞生,再到轰轰烈烈的自由软件运动和开源运动,开源软件的历史就是互联网的发展史。
 
不论是谷歌搜索、Kindle阅读时、淘宝剁手、QQ聊天,还是超级计算机、大数据、无线电、移动互联网,离开了Linux,一个能打的都没有。
 
那么今天就跟大家聊聊开源的历史。



操作系统的启蒙,Unix的诞生

 

故事还要从半个世纪前Internet的鼻祖ARPAnet说起。1969年「美国国防部高级研究计划管理局」希望通过专门的接口信号处理机(IMP)和专门的通信线路,把美国的几个军事和研究用的电脑主机联接起来,其4个结点分别分布在:加州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学和犹他州立大学的4台大型机上。因为ARPAnet的初衷是为了方便学校间的资源共享,所以那时很多研究员在合作一个项目时会经常共享代码和信息,这为日后开源的可行性提供了参考。

 

1965年,通用电气和麻省理工学院发现当时的分时操作系统,只能支持30台终端访问主机,于是拉上了「美国电话电报公司」,也就是大名鼎鼎的AT&T旗下的贝尔实验室,计划合作开发一套多用户、多用途、分时的操作系统,他们给这个系统起名叫「复杂指令和计算服务」,简称Multics。Multics被设计运行在GE-645大型主机上。要知道那时的计算机还处在石器时代,距离第一台重30吨的计算机鼻祖ENIAC的发明也仅仅过了十几年,微处理器要在未来十年后才会出现,更没有现代意义上的「电脑」,要实现这样一个操作系几乎是不可能完成的任务。所以没过多久,Multics这个项目就宣告完结,AT&T也从这个项目中撤了出来。

 

然而故事到这里才刚刚开始,话说贝尔实验室里有两个参与了Multics开发的大神——Ken Thompson和他的同事Dennis Ritchie。他们当时在Multics下开发了一款叫《太空旅行》的游戏,现在操作系统没了,游戏也没法跑了。于是这两个大神一言不合就要开发一个新系统。当时主流的操作系统是「批处理操作系统」,但他们对此并不感冒。所以就在DEC PDP-7 小型机上开发一个「阉割版」的Multics系统,取名叫Unics。后来,这个名字被神秘地改成了Unix。

 

Unix是现代操作系统的启蒙,从Unix中衍生出了一个相当相当长的操作系统列表:SunOS、Linux、Mac OS、Windows NT,以及IBM和微软合作开发的DOS。它还间接促成了C语言的诞生,它所遵循的KISS法则,即「保持简单和笨拙」,成为了后世工程师们神圣的铁律。Ken Thompson和Dennis Ritchie就如同牛顿,用几个简单的物理定律把计算机世界里的复杂规律概括的层次分明。


后来,他们还在1983年获得了计算机领域里的最高荣誉「图灵奖」。

 

最初,Unix只是在贝尔实验室内部流传,因为当时大家都不喜欢DEC自带的操作系统,所以很多人换上了Unix。渐渐地,Ken Thompson也收到了一些外部人员索要Unix磁盘拷贝的邮件,于是他很爽快的把包含源代码的Unix拷贝磁盘寄给了他们。

 

这里有一个问题:为什么Ken Thompson能那么轻易就把自己辛辛苦苦开发出来的操作系统的源码分发给别人?这会不会泄露AT&T的商业机密?

 

答案是否定的。K神之所以能这么做,主要有两个原因。

 

第一,  受制于《反托拉斯法案》的规定,AT&T当时无法进入电话/电报以外的行业。这里科普一下什么是《反托拉斯法案》。《反托拉斯法案》也叫《谢尔曼反垄断法》,伟大的革命导师列宁曾说过:资本主义发展到最高阶段,必然导致托拉斯也就是垄断的诞生。《反托拉斯法案》可以抑制垄断的形成。这里我们可以简单地理解为:即使AT&T保留了Unix的源码,也无法从事商业活动并从中获利。


第二,  当时计算机还属于高端工具,能使用计算机的不是软件开发者就是研究人员。向他们提供源代码是天经地义的事,有了源代码,有bug他们就可以自己解决;同时,他们也可以根据自己的需要对软件进行修改。

 

到了1975年,U niix已经更新到了第6版。这一年,Ken Thompson获得了带薪休假一年的机会,他利用这次机会来到加州大学伯克利分校访学,随身带着Unix第6版的源代码磁盘。学校里一群平常一起捣鼓计算机的教授和学生听闻Ken Thompson要来都欢欣鼓舞,还成立了一个「计算机科学研究小组」,这个小组中有个超级活跃的同学叫Bill Joy,早在第一版Unix发布之时,他就对这个系统做过一些改进。在Bill Joy的带领下,小组成员很快就协助Ken Thompson完成了可以跑在Unix上的Pascal解释器和其他的一些功能。

 

Ken Thompson和「计算机研究小组」在一起改进Unix的消息不胫而走,很多其他学校的师生知道了这事也很感兴趣,纷纷寄来了更多的改进代码和反馈意见,Bill Joy对这些意见进行了汇总,编译了一套自己的操作系统。1978年3月,这套包含了Pascal解释器、外部反馈和其他改进的第6版Unix以1BSD的命名(即「第一个伯克利发行版」)对外发布。从此BSD成为了Unix的最大分支。

 

4年后,Bill Joy离开校园,创建了Sun Microsystems公司,在自己主导开发的BSD之上创建了SunOS系统。上世纪80年代初,Sun凭借与德州仪器合作开发的高性能、平价的Sparc系列工作站狠狠地赚了一笔,股价曾一度超过IBM。



UNIX的商业化反转

 

自此,Unix的商业价值被激发,在此后的相当长一段时间里,嗅到这股商业香气的AT&T都把BSD视为最大的威胁,甚至还将其告上了法庭,这场官司旷日持久。期间,BSD的大部分开发工作被迫停滞,学校的学生和老师也被迫出庭,搞得人心惶惶。最终,以AT&T将 Unix 的版权卖给了Novell,而Novell不打算继续扯皮,与加州大学伯克利分校达成和解而告终。

 

AT&T也因这一列操作,人设成功黑化。恶龙一时爽一直当一直爽,AT&T彻底开始了商业化Unix的步伐。先是注册了Unix这个商标,然后又赢得了POSIX标准制定战的胜利,从那以后,开源操作系统名称后面以X结尾成为了约定俗成。

 

这个时候美国司法部又给AT&T来了个神助攻,1984年司法部再次以违反《反托拉斯法案》为由对AT&T进行了起诉,将AT&T拆分成了专营长途电话业务的新 AT&T 公司和7个本地电话公司。没想到这么一拆,让原先禁止AT&T进入计算机领域的限制失效了。也就是说,从此AT&T可以光明正大的用 Unix来赚钱了。

 

从1979年的第7版开始,Unix的许可证就开始禁止大学使用其源代码。两年后,AT&T就推出了Unix的第一个商业版本Unix System Ⅲ;又过两年,又发布了更商业的Unix System V Release 1,从这一版本开始,Unix彻底不再提供源代码,转而向用户收取2-20万美元的授权费。AT&T把Unix卖出了天价。

 

在反开源的队伍里,AT&T绝不孤单。微软早期也是反开源的中坚力量,没想到如今坐拥全球最大开源社区之一Github的浓眉大眼的微软,早年居然是反对开源的。

 

1975年,微软推出的第一个产品Basic大获成功,成为每台电脑的必备软件。当时,有一群计算机发烧友组成了一个「家用计算机俱乐部」,跟前面说的「计算机科学研究小组」一样,这个俱乐部也经常在一起捣鼓计算机。当时人们习以为常的软件传播方式是,会员从俱乐部带走软件的磁盘,下次聚会时带回两份拷贝给其他成员。Basic就这样被安装在了很多成员的电脑上。

 

可惜好景不长,不久这群爱好者就接到了署名为威廉·亨利·盖茨三世的公开信。那一年,盖茨刚满21岁,正值血气方刚。信中他细数了Basic开发的艰辛和成本,并直截了当的质问爱好者:谁会从事专业的软件开发却分文不取?哪有业余爱好者会花费3人/年的精力去编写软件?你们这些爱好者的所作所为与「窃贼」无异。从此开源软件与商业软件的梁子算是结下了,虽然当时开源这个名称还没被提出。

 

很快,主张软件共享的阵营就对商业软件发起了反击,这里面有三个人至关重要,我们姑且称他们为「反击三人组」。

 


MINIX的诞生


「反击者1号」是阿姆斯特丹自由大学计算机科学系教授Andrew Tanenbaum。由于Unix不再免费向学校提供原代码,他为了能在课堂上更好地演示操作系统的细节,决定在不查看任何Unix源代码的情况下,自行开发一套与Unix兼容的操作系统,这套系统的全部代码只有12,000行,可以运行在286的英特尔芯片上,取名为Minix,即Mini-Unix。

 

Minix发布于1987年,作为Andrew教授《操作系统:设计与实现》一书的参考范例。这位反击者1号肯定想不到,在1000多公里外的北欧,一个刚刚服完兵役的少年,被他的这本719页的大部头改写了命运。这个少年正是Linux之父,Linus Torvalds。用Linus的话说,「这本书把我推上了生命的高峰」。从此以后,操作系统、Unix 和 C 语言成为了年少的Linus心中的维纳斯、阿波罗和雅典娜。

 

回到Minix,这个系统虽然很迷你,但凭借低廉的价格和简易的操作,在大学中大行其道,一时风头无两。



星火燎原:自由软件运动

 

再说说反击者2号,这哥们儿就更神了,原本是MIT人工智能实验室里的大神,后来因为追求内心自由软件的理想,拉起大旗,一生站在商业软件的对立面。没错,这就是Richard Stallman——一个集飘逸长发、黑客精神和自由灵魂于一体的男人。

 

回想20世纪80年代,Stallman还是MIT人工智能实验室里的程序员,那时实验室里有一台施乐牌Dover打印机有卡纸的问题,他希望通过改进它的驱动程序来解决这个问题,但施乐公司拒绝提供源代码。这一举动让Stallman非常火大,类似的事情多了以后,他开始对知识产权异常反感。

 

作为本身就十分推崇自由的黑客文化的人,他认为开发商业化的操作系统是对人类的「背叛」。1984年,他辞去了MIT的工作,开启了他自由软件之父的生涯。他先是开发了一款类Unix的操作系统,叫GNU。GNU是「GNU不是Unix」的缩写,这个名字挑衅意味十足。GNU可以任意使用和分发,为了为GNU更好的提供技术、法律和财政的支持,次年Stallman成立了「自由软件基金会」。并发表了他那著名的 「GNU 宣言」。


GNU宣言的主要目的是请求大家支持GNU的开发,宣言中Stallman详细说明了编写GNU的原因、GNU是什么、如何为GNU作出贡献。他写到:


如果我喜欢一个程序,我就必须把它分享给喜欢它的人。软件销售商通过让每个用户保证不和其他人分享来控制用户……我的良知让我无法签署这样的软件许可证协议。

——《GNU宣言》


GNU宣言以「捍卫软件用户的自由」之名,吹响了自由软件向商业软件反攻的号角。由于Unix本质上是由多个可互相通信的分离程序构成,GNU只要把这些分离程序一个个的替换掉,就能实现一个新的操作系统。


这个过程大约持续了6年,到了1991年,GNU完成了把所有Unix的独立程序给替换掉的工作,还编写了大量的系统组件,包括函数库、编译器、调试工具、文本编辑器等,其中很多已达到工业级标准。


Gnu成为了自由软件的新标杆,一些公司希望通过为自由软件提供咨询和服务来赚钱,其中最著名的就是Cygnus。虽然自由软件允许任何人得到源代码,但这些软件是没有「客服」提供支持服务的。所以Cygnus成为了一个专门为自由软件提供服务的公司。



Cygnus的创始人Michael Tiemann是Gnu的不锈钢铁粉,连Cygnus的名字中都包含着Gnu。Cygnus是第一个自由软件公司。Cygnus之于GNU,就如同红帽之于Linux。



Linux的诞生


最后我们说说反击者3号,也就是反击者1号的头号迷弟、Linux的创始人Linus Torvalids
 
要说这个Linus到底有多牛,美国《时代》周刊的评价是这样的:有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。唯一一个能同时做到这两者的人,就是Linus Torvalds 。”
 
看了这个评价,我只能说《时代》周刊还是太保守。看看人家Linus自己是怎么评价自己的:我的名字叫Linus,我是你的上帝(My name is Linus, and I am your God)。
 
1969年末,Linus出生在芬兰的赫尔辛基,由于早年父母离异,Linus的大部分时间都是跟着母亲长大的。他的外公是个统计学教授,因此家里有一台用于工作的CommodoreVIC-20计算机,这玩意在当时的欧洲很流行。外公经常让年幼的Linus玩这台电脑,还经常口述程序让他敲入到电脑里。
 
这台电脑是Linus童年最亲密的玩伴,他对这种输入-输出的游戏十分痴迷。他还用这台电脑学会了Basic语言。到了大学时他已经有了丰富的编程经验。
 
1991年1月,Linus花了3500美元分期付款购买了一台杂牌组装电脑。这台电脑的内存只有4兆、CPU 33兆赫,配有一台14英寸的显示器。然后他又用16张磁盘把Minux系统装进了这台电脑。Linux的初始版本就是在这台电脑上诞生的。
 
之前咱们说过,反击者1号Andrew教授的那本《操作系统:设计与实现》对Linus的影响非常深远,一度是睡在了Linus的床上。
 
刚安装完Minix系统的Linus用了一个月的时间把这个系统的里里外外研究了一遍,后来发现,这个系统虽好,但也存在很多缺陷,比如内核问题、文件系统问题。但最要命的是这个系统缺少一个登陆学校Unix服务器的终端。于是Linus决定抛开Minix,重新设计一个终端仿真器,也就是说他需要在硬件层面重新开发一套新系统!
 
两个月之后,终端仿真器完成,这是Linux操作系统的第一步。之后,Linus又开始添加磁盘驱动和文件系统。在那段时间,Linus除了参加每周三晚上的同学聚会之外,大部分时间都穿着睡衣坐在计算机前不知疲倦的敲打着键盘。
 
家门外彼得盖坦街的白雪融化了他不知道,现在是三月还是四月他也不知道。他的窗帘把窗户遮盖的严严实实,把阳光和外面的世界一同和自己区隔开来。
 
1991年9月17日,Linus把完成的新操作系统上传到了赫尔辛基工程学院的FTP 服务器上,并准备用「Freax」作为操作系统的最终代号,结果遭到了激烈的反对。要知道发布一个操作系统可是开天辟地的大事,应该用自己的名字命名才对,把Linus一改,改成Linux就顺眼多了。可Linus却担心这个名字显得自己太自恋。最终还是「民意」占了上风。
 
Linux用10年名扬天下,20年统治服务器。Linux的源代码完全公开。但这么做的原因却并不是因为Linus与前两位反击者一样对私有软件深恶痛绝,而是因为他「很懒」以及「喜欢授权给他人」。
 
由于Linux的开放,早年参与开发的黑客都具有很高的水平,直到今天,Linux社区里内核的开发才被程序员们认为是「真正的编程」。
 
好了,「反击三人组」的故事说完了,下面终于该进入主题,说说开源了。



「开源」的提出

 

其实很长时间以来,Open Source这个词的提出者都没有定论,直到2018 年2月,开源一词被提出的20周年之际,它的真正提出者,一位纳米技术的女研究员Christine Peterson亲自发表了一篇文章,讲述了这个词被提出的来龙去脉,她的发起者身份才算正式被官宣。

 

开源指的是开源软件,也叫OSS。开源软件的源代码可以任意获取,任何人都能查看、修改和分发他们认为合适的代码。这一概念是在前面提到的「自由软件」,也就是free software的基础上得来的。

 

由于英文中的Free也有免费的意思,所以Free Software这个词组经常被误认为是「免费的软件」,因此,概念的提出者Richard Stalman不得不一遍遍不厌其烦地解释:Free不是免费啤酒的免费,而是自由。


那么问题又来了,在自由美利坚,自由又是个有政治色彩的词汇。这两个因素很大程度上,制约了自由软件的发展。毕竟开源的本质是源代码的公开,跟自由和免费都相去甚远。

 

1998年2月3日,一群资深黑客聚集到山景城的VA Linux办公室开会,当时正值微软将Windows95和IE浏览器捆绑销售,市场占有率猛增,网景想要通过把自家的Navigator浏览器开源对其反击的时候。这帮黑客打算利用这次Navigator开源的机会,把自由软件的思想传播出去。

 

其实早在一年前,小组的成员就讨论过要用一个新的名字来替换掉「自由软件」,后来Christine Peterson想到了「开源软件」这个词。但在那天的会议中,Christine并有直接站起来宣布,因为在这帮技术老炮儿里,这个女研究员并没有太多的存在感。最后是Linux开发者Todd Anderson用「洗脑战术」让这帮人接受了这个词。他在自己的发言中潜移默化的用开源软件替代了自由软件。

 

也许是Todd Anderson的主角光环太强,不一会就开始有其他人在发言中也开始使用这个词,然后人数从一个,变成了两个、三个、四个……于是大家就在不知不觉中被套路了。

 

这里还是要跟大家掰开了再细说一下,「自由软件」和「开源软件」并非只是名称上的区别。「开源软件」是一种软件的开发方式,而「自由软件」已经成为了一场关乎道德的社会运动。它极力捍卫着开发者:

  1. 为任何目的运行程序的自由;
  2. 研究程序运行原理并对其修改的自由;
  3. 以免费或收费的方式再发布软件拷贝的自由
  4. 改进程序并把改进后的版本发布给公众的自由。

 

任何运动都需要一个纲领。1997年著名黑客Eric Raymond发表了他那著名的《大教堂与集市》。书中他清晰、透彻地描述了开源软件开发模式的理论与实际应用,并把商业软件的设计和开发比作「大教堂」,把开源的开发模式比喻为「集市」,从而把开源软件从商业软件和自由软件中彻底地区分了出来。


这本书犹如马克思的《共产党宣言》为开源运动描绘了革命的纲领,又犹如《圣经》让信徒们找到了心灵的归依。

 

在这本书的影响下,网景终于将Navigator开源成为了第一个开源的商业软件,在与IE的擂台中扳回一城。



开源在中国 


1991年,中科院的宫敏博士用手提肩抗的方式,为中国背回了20盒磁带,磁带里装着30M的自由软件。在国家信息中心的支持下建立了中国自由软件库,从此国内技术人员用上了Linux,在中国点亮了开源的火种。

 

在「十二五」发展规划中,中国政府提出要把开源软件作为扶持发展的对象,2014年,中国邮政还采购了上万套定制版的国产红旗Linux操作系统,用于门店收银的工作,Linux也取代了老旧的WindowsXP。如今连天河二号这样的超级计算机也是跑在Linux上的。

 

连之前反对开源的微软,也在2014年勇敢喊出了「微软爱 Linux」,其实早在2009年,微软就已经向Linux内核贡献了2万多行代码。这些操作像极了爱情。目前微软已成为Github上代码贡献最多的公司之一。


开源软件的兴起,并不会让商业软件消失,人们享受着开源软件灵活开放的开发体验的同时,也享受着商业软件漂亮的界面和人性化的服务。但开源软件倡导的协作共享和利他主义的精神,成为了计算机行业乃至人类文明迈向更加伟大的基石。


参考资料:

https://linuxstory.org/simple-history-about-opensource-1/

https://coolshell.cn/articles/2322.html

https://www.redhat.com/zh/topics/open-source/what-is-open-source

https://opensource.com/article/18/2/coining-term-open-source-software

https://www.oreilly.com/pub/pr/636

https://www.linuxidc.com/Linux/2014-08/105787.htm

https://www.magedu.com/80923.html

http://opensourceway.community/posts/opensource/open_source_tao_and_way/latitude_of_history/

https://opensource.org/docs/osd

https://www.gnu.org/gnu/manifesto.html

https://linuxstory.org/free-software-foundation-and-gnu-manifesto-30-years/

https://www.gnu.org/philosophy/luispo-rms-interview.html

https://www.stallman.org/

https://www.zhihu.com/question/26648227



更多精彩推荐

AMD 和 Intel 之战:CPU 哪家强?

当互联网码农遇见国企老同学

一个月面试近 20 家,拿下阿里 Offer!

华为海思超越高通,一季度国内占有率第一;苹果 iOS 13.5 优化 Face ID;Ruby 2.4 结束支持 | 极客头条

AI图像智能修复老照片,效果惊艳到我了

程序员内功修炼系列:10 张图解谈 Linux 物理内存和虚拟内存

当 DeFi 遇上 Rollup,将擦出怎样的火花?

你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存