β

一位猫奴的编程传奇

程序师 7 阅读

1991年年中,林纳斯·托瓦兹(Linus Torvalds)在自己房间里敲着键盘。他全神贯注地盯着14寸的黑色屏幕,都没感觉到自己宠爱的小猫Randi在扒自己的裤腿。他摆弄电脑时极为专心,唯一能接受的噪音就是心爱猫咪的咕噜声。

“我想让自己的办公室绝对安静……除了猫咪的呼噜声。”

这台电脑价格高达3500美元,对于任何一个芬兰家庭来说都是奢侈品。更何况,托瓦兹的父母没有太多闲钱来赞助儿子。托瓦兹把奖学金和零用钱加在一起,付了电脑三分之二的钱。剩下的三分之一,要在接下来的三年里分期支付。拿到电脑之后,托瓦兹连着几个月都耗在上面。不过,托瓦兹的母亲对此并没有太大意见,只是偶尔会提醒托瓦兹吃饭。倒是妹妹萨拉(Sara Torvalds)会在隔壁咆哮,逼着正在拨号上网的哥哥让出电话线。

由于父母早年离异,所以托瓦兹大部分时间都是跟着母亲长大的。他的外公是一位统计学教授,因此有一台工作用的Commodore电脑。这个品牌的电脑和BBC Micro一样,都曾在欧洲流行。不知是为了培养外孙,还是纯粹的偷懒,外公经常会口述程序,让托瓦兹敲入到电脑里。年幼的托瓦兹很快发现,这个其貌不扬的“盒子”并不介意用户是个儿童。只要输入程序,电脑就会根据指令工作,不多也不少。除了服兵役的那将近一年的时间,托瓦兹把大部分时间都花在电脑编程上。进了赫尔辛基大学时,托瓦兹已经有了丰富的编程经验。

学生时代的林纳斯·托瓦兹

托瓦兹写了一个终端模拟程序。通过这个程序,托瓦兹可以通过电话线连接到学校机房的电脑,再通过机房的电脑在互联网上收发邮件。在90年代初,电子邮件还是少数“极客”才能玩得转的高科技,一般人甚至不知道电子邮件是什么。因此,当托瓦兹向妹妹展示终端模拟器时,萨拉一脸茫然,完全不知道哥哥在拽什么。托瓦兹很难向妹妹解释清楚这个程序厉害的地方。

这个程序其实是一款粗糙的操作系统,可以直接和电脑硬件互动。在普通人的眼里,操作系统是个模糊的概念,大概就是电脑上预装的Windows。我们可以在Windows上安装《魔兽争霸》这样的程序、打开和关闭程序、把文件拖到不同的文件夹,却很难给操作系统一个清楚的定义。其实,操作系统就是一套软件,能充当计算机的大管家,管理计算机的各项资源。当任何一个用户和程序想用电脑时,都可以通过操作系统提供的文字或图形化界面进行互动。如果没有操作系统,用户就要懂得如何控制计算机的每个硬件,才能玩转计算机。那样的话,计算机就不可能流行。

托瓦兹实现的功能要比常见的操作系统简单得多,但作为业余项目,已经是很厉害了。下一步,他把Unix操作系统下常用的文本交互器bash嫁接到自己的终端模拟程序上。有了这个文本交互界面,家里的电脑就像学校里的Unix操作系统一样好用。

Unix也是一个操作系统程序,比Windows年长了20岁。贝尔实验室的肯·汤普森(Ken Thompson)想在一台PDP-11型号的电脑上玩一款叫做《太空旅行》的游戏,就编写了最初的Unix。和之前的操作相比,Unix非常简单。计算机的各项活动,无论用户交互,还是编译程序,都组织成结构相似而在运行上相互独立的“进程”。进程之间可以通过文本形式相互通信,从而能协同工作。计算机上的数据,从程序文本,到配置信息,再到硬件接口,都储存成文件。Unix与其说是一个程序,倒不如说是一套关于操作系统的哲学。肯·汤普森就好像计算机世界里的牛顿,把计算机可以实现的复杂活动分解成几条简单的物理定律。Unix流行了将近半个世纪,并影响了非Unix阵营的其他操作系统,如微软的MS-DOS和Windows。

在PDP-11前工作的UNIX创造者们

拥有贝尔实验室的AT&T(美国电信电报公司)当时有政府禁令在身,不能涉足软件业务。因此AT&T允许教育机构免费Unix。因此,Unix系统在大学里传播得很快。肯·汤普森的母校伯克利大学推出了一个更加好用的BSD(Berkeley Software Distribution)版本。这些计算机系的大学生用惯了Unix系统,所以步入社会之后,也把Unix系统推广到IT公司。Unix成为黄金万两的生意,并衍生出各种各样的商用版本。赫尔辛基大学也在刚刚购置的小型机安装了Unix系统,可以让十多个学生同时在线使用。托瓦兹就是这台电脑的常客之一,并很快喜欢上Unix。他不但花了一整个夏天去钻研操作系统的经典教材,还学会了用来开发Unix程序的C语言。

只可惜,Unix对于家用电脑来说并不免费,一个最便宜的Unix系统也要数千美元。已经负债累累的托瓦兹可负担不起。这也是托瓦兹要自制操作系统的主要原因。移植好bash之后,托瓦兹已经能在自家电脑上体验到使用Unix的痛快。他很快又给自己的电脑安装了C语言编译器gcc。由于Unix下的大部分应用程序都是用C编写,托瓦兹意识到,自己可以把Unix体系下积累的应用程序全部移植到自己的操作系统上。这样,他的操作系统就可以直接实现文本处理等各种各样的应用功能。

托瓦兹又一次充满了创造者的骄傲。这一次,他选了一个更加专业的听众来宣布好消息。1991年8月,托瓦兹在Minix新闻组上发帖:

各位Minix用户,大家好。我正在制作一个(免费)的操作系统(只是作为爱好,不会像gnu那样专业)。这个项目从4月就启动了,并将要准备好。我想听听大家的意见,特别是大家喜欢或不喜欢Minix的地方,因为我的操作系统将会和Minix有些像。我正在移植bash和gcc。这意味着接下来的几个月里,我将获得一些实质性的成果…… 此外,它没有用Minix的代码……

当时,Minix是操作系统世界里的明星,Minix新闻组也聚集着操作系统专家和爱好者。编写Minix的是生活在阿姆斯特丹自由大学的一位计算机教授安德鲁·塔能鲍姆(Andrew Tananbaum)。为了教学方便,他仿照Unix编写了Minix这款操作系统,并开放源代码,以便学生更好地理解操作系统的原理。他编著的操作系统教材,也非常畅销。托瓦兹就是借着那本700多页的教科书,才摸清了操作系统的原理。

Minix并不如Unix成熟,但比起托瓦兹的操作系统还是强很多。Minix已经有不少拥趸。还有不少高手给Minix编写补丁,已经大大提高了Minix的可用性。托瓦兹自己工作时,主要用的就是Minix。因此,托瓦兹在Minix新闻组里发布自己的操作系统,看起来就像是闯入瓷器店惹事的公牛。意外的是,托瓦兹在新闻组里获得了不少支持。发帖不久,就有Minix用户向托瓦兹反馈,说明自己想要的功能。有的用户还为托瓦兹建立FTP服务器,用于上传正式发布的操作系统代码。

Minix用户看起来有些薄情,随随便便就背弃了Minix系统。但这应该归咎于塔能鲍姆。毕竟,他有言在先,不希望人们拓展他的源代码。即使有热心用户编写了改进程序,塔能鲍姆也不会把这些改进加入到正式发行版本里。因此,人们只能编写非正式的补丁并私下交流。Minix的发展陷入停滞。

相反,托瓦兹采用了GPL协议。任何用户都可以自由地使用并修改GPL协议的代码,但基于此修改出的代码,也必须遵照GPL协议开放,供他人使用或修改。这个行动充满了理想主义的味道,意味着托瓦兹不能从自己编写的程序获得直接的经济利益。考虑到托瓦兹的父母都曾是学生运动领袖,他的父亲还是芬兰左翼的重要成员,有人疑心托瓦兹的做法来自于家庭的影响。但按照托瓦兹自己的解释,他用GPL的唯一原因,就是懒。有了GPL协议,爱好者们可以毫无顾忌地贡献代码。他只要从中择优,加入到正式版本中,就可以省了自己去开发的麻烦,从而有足够的时间来照顾猫咪。

这一“诡计”确实奏效。爱好者们不但贡献了代码,还凑钱帮托瓦兹付了电脑的欠债。他们还按照Unix的传统,把托瓦兹名字“Linus”的最后一个字母改成“x”,来命名这款新的操作系统。一个名为Linux的操作系统诞生了。

Linux的标志企鹅,背景是Ubuntu发行版本的Linux

圈内的很多人都不看好Linux。在Linux大约一年后,Unix之父肯·汤姆普森和Minix之父安德鲁·塔能鲍姆公开批评Linux的实现方式。塔能鲍姆甚至是说,如果托瓦兹是他班上的学生,那这个学生的成绩一定不及格。开源运动领袖艾里克·雷蒙(Eric Raymond)后来回忆说,当他第一次接触Linux代码时,他有每一个理由相信Linux会最终失败。

显然,他们低估了社区的重要性。即便托瓦兹不是最天才的程序员,但社区爱好者的贡献能让任何天才程序员都跟不上Linux的速度。另一方面,托瓦兹在保持开源理想的同时,又有足够的实用精神。Linux采用了GPL协议,但托瓦兹并不鼓吹“自由软件就是好”的绝对论断。在他看来,无论是哪一种力量,商业也好,非商业也要好,只有能促进Linux的发展,就都可以为Linux所用。在遇到问题时,托瓦兹也不会陷入“完美系统”的洁癖。他愿意接受一个不甚完美的方案,然后快速迭代,不断地优化方案。同样采用GPL协议、但更富有理想主义的GNU项目也在内核开发上败给了Linux。

1995年,用于HTTP服务的Apache服务器发布。互联网服务商发现,可以把同样免费的Linux和Apache服务器结合在一起,廉价地搭建网站所需的服务器。此时的Linux已经以疯狂的速度进化了好几年,强健到完全可以胜任网站服务器的工作。内容丰富的网页取代电邮和新闻组,成为互联网的主流。基于这套技术,最早的一批互联网公司建立起来,如雅虎、亚马逊、以及中国的搜狐。“dot-com”热潮给Linux打了一剂强心针。在网络服务器市场上,Linux彻底打败微软的Windows NT,成为大多数互联网公司的选择。网景、甲骨文、IBM等公司开始支持Linux系统,甚至同意把自己的部分代码公开,贡献给开源运动。托瓦兹的照片因此登上了福布斯的封面,成为很多青少年的偶像。

登上《福布斯》封面的程序员

来自芬兰的穷小子打败了统治天下的比尔·盖茨,这本来就是话题性十足的故事线。更多人感到困惑,免费的Linux究竟怎么赚钱。记者们抢着给托瓦兹打电话,想要获得独家采访的机会。他们意外地发现,接电话的并非助手,而是这个传奇英雄本人。事实上,托瓦兹也从来没有私人助手。尽管Linux项目有数万的参与者,但这些参与者组织成了不同的项目。托瓦兹真正需要打交道的,只是几十个项目领导人。通过这种模式,托瓦兹驱动着成千上万的程序员来为Linux做贡献。

尽管领导着人类历史上规模最大的软件合作项目,甚至坐拥着Linux这个商标,托瓦兹并不富有。1997年,托瓦兹带着妻子和刚出生的女儿迁居美国,他的账户只有几千美元的余额。在美国的第一个晚上,托瓦兹不得不和妻子挤在充气床垫上,而他的猫咪也只能睡在旅行用的简易笼子里。

不过,如果托瓦兹愿意,他完全可以凭自己的身份获得更好的生活。微软的史蒂夫·巴尔默对Linux极为警惕,而史蒂夫·乔布斯曾亲自邀请托瓦兹加盟苹果。红帽Linux和VA Linux这样提供Linux服务和支持的公司也成立起来,获得令人瞩目的成功。托瓦兹接受了这些公司表达感谢而赠送给他的期权,却不愿到其中任何一家任职。托瓦兹乐意看到Linux在商业上的突破。他只是在做个人选择时极为谨慎,免得自己因为商业利益而无法保持中立。

不过,生活总是给托瓦兹带来意外的惊喜。随着红帽Linux和VA Linux的上市,托瓦兹手里的股票价值一度高达2000万美元。但托瓦兹还是住在普通的房子里,把大部分时间花在维护Linux上。真正令托瓦兹骄傲的是,社会彻底改变了对像他这样的极客的看法。极客不再是70-80年代留着长胡子穿着拖鞋整日躲在黑暗房间里的怪胎。相反,人们把他们看做技术先锋。大公司愿意出高薪聘用参与Linux核心项目的程序员。除了高超的技术,这些为开源社区做贡献的极客们还能带来一种已经改变了历史的软件开发方式。

如今的杂志封面上,托瓦兹的Linux已经被人工智能、手机、虚拟现实、物联网取代。但想想把,IBM的超级电脑、谷歌的安卓手机、虚拟现实和物联网的嵌入式设备上,都运行着Linux系统。就连树莓派这样的超小型电脑,都可以毫无困难地运行Linux。在四分之一个世纪的时间里,Linux已经成为技术世界不可或缺的基础设施。曾经见证Linux诞生的Randi已经过世。接替Randi的是黑猫Minky。于是,在这位极客的编程时间里,又有猫咪的轻声咕噜作陪。

小猫Minky

作者:程序师
用程序师的眼光看世界
原文地址:一位猫奴的编程传奇, 感谢原作者分享。

发表评论