Linus-一生只为寻找欢笑(完全版)
2016-05-02 22:02:58 阿炯

这篇文章我在2013年-2014年分十次左右完成的,记录了 Linux 作者 Linus 的故事,算是我写的最好的一篇长文。这篇文章分别发表在我自己的书《跨越边界》和 《只是为了好玩:Linux之父林纳斯自传》的书末。应读者要求,整理了完全版,重新发布在微信上。

虽然分十次写成,而且中间中断了半年,但读来竟有一气呵成之感,希望你们喜欢。

每个人桌面上一台电脑,这曾经是无数计算机先驱的梦想,这个梦想很早就实现了,在1997年,乔老师和比老师就说过,「比尔,我们共同控制了100%的桌面系统市场」,当然乔老师没说的是,比老师控制了97%,乔老师还不到3%。时至今日,乔老师走了,比老师颓了,移动终端把传统的 PC 市场冲击的七零八落。普通用户都知道了Windows、Android、OS X 、iOS、BlackBerry等等,但是,他们依然不了解的是另一款在计算机发展史上起到了革命性作用的操作系统:Linux!

当 大家使用 Google 搜索时,使用 Kindle 阅读时,使用淘宝购物时,使用 QQ 聊天时,很多人并不知道,支撑这些软件和服务的,是后台成千上万台 Linux 服务器,它们时时刻刻都在进行着忙碌的运算和数据处理,确保数据信息在人、软件和硬件之间安全的流淌。可以这么说,世界上大部分软件和服务都运行在 Linux 操作系统之上,神马云计算、大数据、移动互联网,说起来风起云涌,其实没有 Linux 全得趴窝(微软除外)。

但是,Linux 和它的缔造者 Linus Torvalds 一样低调,这么牛逼的一个物件,居然只有程序员知道它的传奇,这不科学!所以我准备在这个系列中写写Linus Torvalds:他是 Linux 和 Git 的缔造者,他是一个传统的黑客,与沃兹一样,少年成名,崇尚自由,一生只为寻找欢笑,他,是一个真正的程序员。

注:为了防止大家把 Linux 和 Linus 搞混,我在后面的文章中统一采用 Linus 的中文译名:李纳斯。

李纳斯在2001年出过一本自传,叫做《Just for Fun》,是他和大卫·戴蒙合著的,当年我有幸读到这本书,了解了很多李纳斯的生平轶事,那时我就琢磨,这个天才已经达到人生的巅峰了吧,结果这位兄台并 未停止前进的步伐,转手就在2005年搞出了分布式版本控制系统 Git,目前几乎全世界的程序员都在用 Git管理他们的代码,著名网站 Github 就是基于 Git 构建的。无论是 Linux 还是 Git,得一即可得天下,结果这哥们以一己之力发起了俩项目,而且都是主力开发人员。最终的结果是,成全了程序员,陶冶了用户,造福了一方百姓。正如李纳 斯自己所言:「My name is Linus, and I am your God.」

Linus(一)——生命的意义

1969 年末,李纳斯出生于芬兰的赫尔辛基市,算是赶上了60后的尾巴。小时候他是个其貌不扬的孩子,除了一个鼻子长的「富丽堂皇」之外乏善可陈。他为了让鼻子看 上去小一些,经常戴上眼镜就不愿意摘下来,这个策略和现在的很多大脸女生购买三星的 Galaxy Note 手机有异曲同工之妙。幼时的李纳斯不修边幅邋里邋遢,不怎么费劲数学和物理就学得极好,社交圈却一塌糊涂,他母亲经常和别人说,这孩子非常好养,只要把他 放到一个有电脑的小黑屋里,然后再往里扔点薯条和意大利面,就行了。李纳斯对此表示认同。

李纳斯把年幼的自己定位成 Nerd(书呆子),但是从他的自传里我却感受到了这位天才的有趣之处。他在书的前言里写到:

我对生命的意义有种理论。我们可以在第一章里对读者解释生命的意义何在,这样就可以吸引住他们。一旦他们被吸引,并且付钱买了书,剩下的章节里我们就可以胡扯了。(注:做人要厚道啊)

关于生命的意义,李纳斯的解释是,有三件事具有生命的意义。它们是你生活当中所有事情的动机。第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事情都是按这个顺序发展的,娱乐之后便一无所有。因此,从某种意义上来说,生活的意义就是要达到第三个阶段。你一旦达到了第三个阶段,就算成功了。但首先要越过 前两个阶段。

为什么李纳斯会这么说呢,我摘段原文给大家看看,非常有趣:

李纳斯:我给你举个例子来说明这一观点。最明显的是性,它开始只是一种延续生命的手段,后来变成了一种社会性的行为,比如你要结婚才能得到性。再后来,它成了一种娱乐。

大卫:性为什么是娱乐?

李纳斯:好吧,我是在对牛弹琴。我举一个别的例子。

大卫:别别,还是说说性吧

李纳斯:它是在另一个层次上的blablabla……

大卫(自言自语):哦,参与就是娱乐,而不是在一旁观看。好,我明白了。

那生存、社会秩序和娱乐又是如何与技术扯上关系的呢?

Linus(二)——天才也疯狂


李纳斯是这么解释的,技术的诞生同样是为了人类的生存,而且是为了让人生活的更好。汽车让人跑的更快,飞机让人飞得更高,互联网让人懂得更多,手机让人通信更快,一旦这些技术成了规模,就要并入社会秩序,然后下一个阶段就是娱乐,别看手机现在就是个打电话的工具,但是很快会进入娱乐阶段……(12年后的今天,手机已经彻头彻尾变成了一个娱乐工具,打电话反而成了附属功能)。

李纳斯说:「一切事物都将从生存走向娱乐,但这并不意味着在某个局部地区没有倒退的现象,而且毫无疑问许多地方都有这种情况。有时事物的发展往往分裂的。」

从这些内容我们可以看出,李纳斯有自己的一套理论,而且能自圆其说,其实每个人都有自己的理论,一件事做或者不做,都是自己说服自己,每一次进步,要么是推翻自己的理论,要么是完善自己的理论。李纳斯在很小的时候就建立了自己的理论领地,那就是数学、物理、逻辑,最后是计算机,所以他绝不是自己描述的 Nerd,而是一个大智若愚的牛娃,就像射雕里的郭靖一样,看着傻,其实比谁都精,脑子里装的都是十年二十年后的事儿。而且李纳斯比郭靖牛的地方是,就一个启蒙老师,还是自己的外公,和郭靖一比,高下立判!李纳斯基本上就是个自学成才的典范。

李纳斯的外公是赫尔辛基大学的一位统计学教授,数学家。他有一台Commodore VIC-20计算机(Commodore 是与苹果公司同时期的个人电脑公司,曾经创造过一系列辉煌,1994年破产),这台电脑的主要功能就是没有功能,你唯一能做的事情就是用 Basic 语言在上面编写自己的程序,老爷子当年就是这么做的,比如做一些数学运算和公式计算等。但是老爷子年老眼花,也不愿意打字,于是就把自己的外孙李纳斯放在腿上,让他帮助录入写在纸片上的程序。这种很有场面感的场景一再出现后,李纳斯除了对数学有了初步的认识,同时也把计算机玩的娴熟,很快他就在外公的指导下开始编写自己的程序。

评:很多大师级的人物,很小的时候就能在某个领域内头角峥嵘,展现出一些东西,然后经过长期的练习和创作,最终成为一代传奇。在这个过程里,环境是很重要的,逆境出人才基本上是个伪命题,这句话唯一的作用就是遇到困难时给自己打打鸡血。李纳斯就是个高知子弟,10岁人家就开始玩计算机了,我们10岁在干什么,打沙包么?甩方宝么?即使你在计算机方面有出众的天赋,但18岁以前连计算机的面儿都没见过,你就只能默默的牛逼了。等你真正开始展现出自己才华的时候,人家操作系统已经开发出来了,一入世就差别人十年的身位,除了冷冷的绝望,你还能感受到什么?

所以现在人们没事就北上广深杭,不是喜欢人多嘴杂空气差,而是在这些一线城市可以接触更多的人和事物,见更高的山,渡更宽的河。不是为了情怀,而是拥有格局。见都没见过,还同一个起跑线呢,一跑就得趴窝。所以,无论这些地方环境多恶劣,竞争多激烈,来的永远多过走的,不为别的,只是为了缓解些许绝望的感觉……

李纳斯用外公的计算机学会了 Basic 语言,并开始编写各种简单有趣的游戏,然后他又发现了 Basic 并不是计算机唯一能理解的语言,在它的下面,还有一种语言是由0和1组成,可以直接被计算机识别,于是李纳斯又开始用机器码编程,这次他可以控制更多计算机的细节,他与机器变得更加亲密。然后李纳斯就开始上中学了,中学的几年于他而言,其实没有太大变化,因为那些年他几乎都是坐在电脑前面度过的,在这个阶段,他熟练的掌握了汇编语言。

终于有一天,李纳斯向编程世界挺进的步伐变得缓慢下来,因为他上大学了,原因之一是他必须集中精力读书,原因之二是找不到什么项目去做。还有一件事,李纳斯开始服兵役了,那段时光对他来说是如此特殊:

在手执武器上了一个月的「体育课」之后,我便觉得在我有生之年完全有资格从此一动不动,享受平静的生活了。惟一可做的事情就是把编码打入键盘,或者手里端着一瓶比尔森啤酒!

Linus(三)——改变一生的书籍

终于,让李纳斯痛苦不堪的兵役终于结束了,除了敲锣打鼓欢庆重生之外,他开始继续拓展自己的编程之路,这时候,生命中最重要的一本书出现了,书的名字叫做《操作系统:设计和实现》,作者是 Andrew S. Tanenbaum。用李纳斯的原话表述就是「这本书把我推上了生命的高峰」。

那个时代 Unix 已经开发出来了。最早 Unix 是用汇编写的,开发过程中 Unix 的两位创始人Ken Thompson 和 Dennis Ritchie觉得用汇编写程序实在是太苦逼了,男人应该对自己好一点!于是老哥俩决定用高级语言来完成下一个版本,他们首先尝试了Fortran,失败!然后又基于BCPL(Basic Combined Programming Lanugage)创建了 B 语言,B 语言可以被认为是那个时代的解释型语言,不能直接生成机器码,效率上完全没法满足系统的需求,再次失败!我们都知道,一再失败的情况下总会有一位英雄人物挺身而出,这次是 Dennis Ritchie,他从失败的大坑中爬起来拍拍土抹抹泪,继续对 B 语言进行改造。这次 Dennis 为 B 增加了数据类型,并让 B 语言能够直接编译为机器码,然后又为这门语言起了个极其响亮的名字:「New B」,读一读神清气爽,念一念气冲云霄,从此一代语言巨星冉冉升起,40年后依然排在兵器排名榜第一位,怎一个牛字了得!当然,Dennis可能考虑了十几年后中国人民的感受,把「New B」改为了 C 语言,并用 C 语言重新编写了 Unix 的内核,Unix 与 C 从此珠联璧合,长相思守,再也无法分离。

操作系统、Unix 和 C 语言可以说是李纳斯心目中神山上的三座圣杯,为了至高无上的荣耀,他首先要攀上峰顶,把这三座圣杯捧在手中,然后再琢磨建造自己的宫殿的事儿。在那一年的夏天,李纳斯开始了高强度的阅读和学习,用他的话说就是做了两件事,「一件事是什么都没做,另一件事是读完了719页的《操作系统:设计和执行》。那本红色的简装本教科书差不多等于睡在了我的床上」。

李纳斯认为,Unix 是一个简洁、干净的操作系统,在 Unix 上的大部分任务都是通过一些基本操作完成的,这些操作被成为「System Call」,顾名思义,这些操作就是你对系统的呼叫,系统通过响应你的呼叫完成工作。比如 fork、clone(创建子进程),比如 open、close、read、write(文件访问)。这些基本的系统调用通过组合可以完成大部分功能。同时,Unix 还提供了极为强大的IPC(进程间通信)方式:pipe(管道)。很多工作在GUI(图形界面)软件环境下的读者,最常用的IPC操作可能是复制、粘贴、鼠标拖拽,这些操作虽然简单,但是必须由人来完成,想要自动化就很困难。而这些在 Unix 上实现起来就像大自然一样自然,你只需要在程序之间开辟出一段缓冲区作为管道,然后父进程和子进程就可以通过这个管道实现进程间通信了。举个例子,以前给大家介绍的查找历史命令的脚本,就利用了管道的功能,如下:

history | grep apache

这行命令的含义就是查找包含 apache 的历史命令,其中特殊字符【 | 】用来告诉命令行解释器(Shell)将前一个命令的输出通过「管道」作为接下来的一行命令的输入,就这样,一个简单的进程间通信就完成了。

总之,李纳斯在读完这本书之后,就像郭靖修习了九阴真经全本一样,对机器和代码的世界有了更为透彻的认知,接下来的事情就是等待一个打造传奇的机会。

等待的过程中,李纳斯也没闲着,他又开始编程了。好的程序员对编程的喜爱是溢于言表的,以下摘录一些李纳斯的编程感想:

对于喜爱编程的人来说,编程是世界上最有趣的事,比下棋有趣得多!因为你可以自己制订游戏规则,而你制定什么样的规则,也就会随之出现与此规则相符合的结果。

在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。如果你功力深厚,你可以是上帝――在一个较小的层面上。

你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都可以看出一个仅仅以坚固实用为目的的树上小屋和一个巧妙地利用树本身特点的美妙小屋之间的差异。这是一个将艺术和工程融为一体的工作。编程与造树上小屋有相似之外……在编程中,实用的考虑往往被置于有意思、美观优雅或有震撼力的考虑之后。

在代码的世界里,李纳斯就是一个诗人!

Linus(四)——Linux 诞生

Unix 始于上个世纪60年代,在70年代得到了迅猛的发展,这时候的李纳斯还躺在祖父公寓里的摇篮里睡大觉,如果不是后来 Unix 王国自乱阵脚,出现阵营分裂和法律纠纷,可能 Linux 系统根本都不会出现。真实的情况是,Unix 浪费了大把的时间和机会,似乎就是为了等待这个大鼻子、头发纷乱的芬兰小子长大,然后一决高下。李纳斯赢得了自己的时间,他一刻不停的磨练自己的技艺,在清晨的微光中练习算法,在赫尔辛基的雪山上编译代码,随时随地补充的粮草和武器。二十一年之后,李纳斯抚着雪亮的刀锋上路了,他要去追寻属于程序员的最高荣耀。

1991年一月,李纳斯花费了三千五百美元,分期付款购买了一台杂牌组装电脑,内存4兆,CPU 33兆赫,还有一台14英寸的显示器,然后又买了 MINIX 操作系统,用十六张软盘把这个操作系统装到了计算机里。之后,李纳斯又用了一个月的时间,了解了 MINIX 的好和不好,并把这个系统改装成了自己得心应手的「战斗机」,开始了战斗的人生。就是在这台电脑上,催生了 Linux 的初始版本。

Linux 的诞生离不开 MINIX,MINIX 是 Mini Unix 的缩写,是 Andy Tanenbaum 教授编写的迷你版的 Unix 操作系统,源代码可以提供给大学和学生,用于操作系统教学,采用了微内核设计。其中的代码还作为《操作系统:设计与实现》的示例程序,这本书我们在 Linus(三)中提到过,给了李纳斯极大的启发。

李纳斯使用了 MINIX 之后,发现这个系统有很多缺陷,比如性能问题、内核问题、文件系统问题,最大的问题是终端仿真器,也就是我之前总提到的 Terminal,登录学校里的 Unix Server 和上网时,李纳斯都需要终端,但是 MINIX 无法满足这个需求。如果普通人遇到这种问题,估计就是发会呆然后洗洗睡了,或者说「你行你上啊」,李纳斯不是普通人!

他决定抛开 MINIX,从硬件层面开始,重新设计一个终端仿真器。牛人就是不同凡响,这个决定表明了李纳斯需要从 BIOS、CPU等硬件层面重新开发出一套系统,除此之外,还需要了解如何把信息写入显示器,如何读取键盘输入,如何读写调制解调器,早期储备的汇编语言和 C 语言能力终于派上了用场……

两个月之后,终端仿真器完成,对此李纳斯非常骄傲:

对于我了不起的成就,萨拉(妹妹)是了解的。我把终端显示给她看,她盯着显示器看了大约五秒钟,看着上面是一串A和一串B,说了声「很好」,然后就没有然后了。我意识到我的成就并不辉煌,这犹如你指给人看你铺设的一条长长的柏油马路,但想向别人解释这条马路的意义是完全不可能的。

当时是三月,也可能是四月,就算彼得盖坦街上的白雪已经化成了雪泥我也不知道,当然我也并不关心。大部分时间我都穿着睡衣趴在相貌平平的计算机前面噼噼啪啪的敲打键盘,窗户上的窗帘遮得严严实实,把阳光和外部世界与我隔离开来。

Linux 操作系统就这样开始了,一发不可收拾。李纳斯的当时编程状态是这样的:编程――睡觉――编程――睡觉――编程――吃饭――编程――睡觉――编程――洗澡――编程……

实现了终端仿真器之后,李纳斯马不停蹄,开始添加磁盘驱动和文件系统,那一年李纳斯还在上课,但是课程很简单,他唯一的课外活动就是参加每周三晚的同学聚会,这个长着大鼻子的技术天才,常常会因为担心自己缺乏社交能力和容貌丑陋而失眠,对那时的他来说,唯一有趣的事情就是把驱动程序写出来。于是他咬咬牙对自己说,还得干下去。(看来没有女神的好处就是可以写个操作系统出来,然后把自己叫做上帝)。

随着工作的进展,终端仿真器正在开始向一个操作系统的方向发展,李纳斯显然也看清楚了这一点。

在整个创造 Linux 的过程中,我们没有看到李纳斯使用了什么样高级工具,估计那时也没有,整个系统基本上是一行行代码敲出来的,纯手工打造,这些先贤的编程功底和效率让我们叹为观止,所以,现在,我决定打开终端,输入 vi,然后键入:to be continued,感受一下李纳斯当年编程的风采……

随着李纳斯不断的敲击键盘,他的终端仿真程序也不停的扩张,从刚开始的小树苗长成了一株盘根错节的大树,树根牢牢的抓住土地,枝丫努力的伸向天空,花朵和果实开始在高远的天空中烁烁发光,所有的细节都在李纳斯的掌控之中。懂行的技术人员都看得出来,这个大鼻子的芬兰小子是准备开发一个操作系统啊。

是年6月份,李纳斯基本确定了要开发一个操作系统内核的计划,并开始着手搜集 Unix 操作系统标准的相关资料。1991年7月3日,格林威治时间上午10点钟,李纳斯在 MINIX 新闻组发出了一封求助邮件,寻求有关 Posix 标准的帮助,他在邮件中写道:

目前我正在 MINIX 系统下做一个项目,对 POSIX 标准很感兴趣。有谁能向我提供一个机器可读的最新的 POSIX 规则?如果能有个 FTP 地址就更好了。

这份公开的邮件是标识 Linux 问世的最早证据。邮件发出后不久,有人就寄来了厚厚的 POSIX 标准,同时赫尔辛基工学院的 Ari Lemke 也对李纳斯的邮件做出了响应,为李纳斯提供了一个 FTP 地址,用来上传他即将完成的操作系统。

注:POSIX 全称是可移植操作系统接口(Portable Operating System Interface)。IEEE 最初制定 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。随着技术的发展,POSIX 开始不局限于 UNIX 系统,后续的 Linux 和 Windows NT 都部分的遵循了该标准。POSIX 在李纳斯开发的过程中起到了灯塔的作用,直接后果就是 Linux 系统从一开始就走在了正规军的康庄大道上,基本没有跑偏过。Linux 几乎可以适配各种类型的硬件体系结构。

标准和 FTP 地址都有了眉目,李纳斯开始实现各种 System Call,以便让 Shell 运行起来。这段时间的工作让李纳斯时常感到灰心丧气,看着增加的代码量,工作似乎前进了一大步,但是检验一下功能又仿佛没有任何进展。有时候他还不得不放弃之前的想法和已经完成的代码实现,另辟蹊径重头再来,即使是在天才面前,代码也能让人欢喜让人忧。

终于 Shell 已经可以在新的操作系统上工作了,李纳斯开始编写拷贝(cp)和列表(ls)等程序。Shell 程序一旦完成,就好像完成了从0到1的飞跃,一切都变得无比顺利,李纳斯面前仿佛出现了一条阳关大道,一切都豁然开朗了,他说,要有光,于是就有了光。对于这种状态,李纳斯表示:「我很满意」,并且开始用「Linux」称呼这个操作系统。

这种满意非常重要,因为那个夏天李纳斯除了伏在电脑面前噼噼啪啪的敲击键盘,什么都没做。芬兰四月到八月的日子是一年中最美好的时光。人们到布满小岛的海上航行,去海滩上晒日光浴,到夏日小木屋中消遣时光。但是李纳斯,他只是在永无休止的编写程序,忘记了白天和黑夜,黑色的窗帘遮蔽了灿烂的阳光,也遮蔽了外面的世界。他唯一的想法就是,得赶紧把这该死的系统做出来!

1991年8月25日,李纳斯在MINIX 新闻组上发邮件做了一个调查,想知道大家希望这个新的操作系统具备什么特征。

1991年9月17日,李纳斯把已经完成的新操作系统上传到了Ari Lemke提供的 FTP 服务器上,并准备用「Freax」作为操作系统的最终代号,结果遭到了Ari Lemke的激烈反对。Ari Lemke对李纳斯说:

「李哥,您咋会想到用这么变态的名字命名操作系统呢?原来的Linux不挺好的嘛」

「那样不会显得自恋么?」

「您这样就不对了,操作系统是开天辟地的大事,人民群众都等着用您的名字命名呢,看看他们的眼神,您能辜负他们的期望吗?Linux 天生不就是用来了 Unix 遥相呼应的么?这是命,得认!」

「这……那我就不推辞了啊」

以上为意译,不过基本上和古代皇帝的黄袍加身是一个意思。新的操作系统最终以「Linux」命名,并在10年后名扬天下,20年后统治服务器领域,可谓 Linux 恒久远,Linus 永流传。

Linux 内核0.01版本终于发布了,虽然漫长的开发过程才刚刚开始,但李纳斯终于可以松口气了:

瞧,我真的做出了点什么。我没有在骗你们。这就是我所做的……

创造操作系统,就是去创造一个所有应用程序赖以生存的基础环境――从根本上来说,就是在制定规则:什么可以接受,什么可以做,什么不可以做。事实上,所有的程序都是在制定规则,只不过操作系统是在制定最根本的规则。——李纳斯

Linus(五)——继续前行

Linux 从一诞生就被打上了开源的烙印,这一点对 Linux 的后续发展起到了至关重要的作用。从1991年内核0.01版本发布,到1994年1.0版本闪亮登场,世界各地无数的开发者为 Linux 提交了代码,李纳斯为 Linux 建立了讨论组 comp.os.linux,全世界爱好开源和 Linux 的程序员与黑客都在上面讨论问题,他们就像群蜂筑巢一样,不断的通过个体和群体的力量交替推进 Linux 的飞速发展。

李纳斯对自己说:嗯,没有任何东西可以阻挡 Linux 的普及!

这种感觉估计很多程序员都体会过,当你设计的算法得出了正确结果的时候,当你自以为解决了一个海森堡 bug(Heisenbug,表示不可重现)的时候,当你完成了一段精妙代码的时候,你摘下厚重的眼镜,推开铺满灰尘的书桌,打开办公室唯一的窗户,迎着夕阳把一只废弃的圆珠笔扔出窗外,然后冲着天空大喊:还有谁~~~?这是一种拔剑四顾心茫然的情怀。

李纳斯还不止于此。他不仅单枪匹马写出了 Linux 的内核,而且做出了开源的决定。他把 Linux 放到了互联网上,并且允许那些希望使用和改进它的人们根据开源协议修改和提交源代码。这两点对互联网的影响是极其深远的,估计李纳斯当年也没有想到,当时的两个小小的涟漪,经过时间和空间的放大,十几年后形成了一股互联网巨浪,到现在 Linux 依然处于风口浪尖。

对于 Linux 取得的成功,李纳斯将其归结为是由自己的缺点导致的:

1、我很懒散
2、我喜欢授权给其他人

其实这两个所谓的缺点,正是优秀程序员和领导者必备的要素,它们让 Linux 成为世界上最大的开源协作项目,为喜爱 Linux 的人们带来了最美好的技术和应用,现代的互联网几乎是运行在 Linux 之上的,可以说,李纳斯改变了世界,你每一次伐开心后在淘宝上买包包,都有李纳斯贡献的力量!

Linus(六)——来到硅谷

1996年的春天,Linux 顺利发布了2.0版本。是年李纳斯27岁,这个芬兰小子已经慢慢厌倦了芬兰平淡无奇的日子和不眠不休的编程生活。对于一个技术天才来说,创造一套新的技术体系就像艺术家完成一个雕像一样,当一块粗砺的岩石在他的亲手打磨下逐渐显山露水,展现出其完美容颜的时候,后续的修修补补会让这些天才产生倦怠的感觉。他们需要更快的剑,更高的山和更强大的对手。尤其是期间李纳斯访问过两次美国之后,这种感觉变得愈发不可阻挡了。

说起来美国确实是个神奇的国度,这样一个移民国家中,居住了各种从不同国度不远万里跨海而来的种族,每个种族无论在基因上还是文化上都具有原来国家的特质,这些特质相互融合与对抗,让这块大陆上的人民更锐意进取,更开放,更自由,他们愿意去追求和接纳美好的事物,最终一不留神把美国搞成了世界文化的大熔炉,而开放的文化和环境又极大的激发了人们的想象力和创造力,近代和现代的科技成果几乎全部源于美国,要么是美国人搞的,要么是外国人在美国搞的。所以有时候我们也不用顾影自怜,嘲笑自己没有国产的操作系统和编程语言,因为其他国家也没有,或很少有,芬兰好不容易出了个天才少年,也没好好珍惜,最终落了个「流落」异国他乡的下场。

李纳斯一到美国就被这块新大陆吸引了,一切都是那么的新鲜和美好,他的感受与你第一次出国后在微信朋友圈发的「天是那么的蓝,云是那么的白」是一样一样的。李纳斯在自传中写道:

我所参观的摩门教堂已有一百五十年的历史,却被照顾的很好,清洗后的教堂显示出亮丽的白色。要是在欧洲,所有的教堂都显得老旧不堪,像是蒙上了一层岁月的斑痕。看着这洁白亮丽的教堂,我脑海里产生的唯一联想竟然是迪斯尼乐园。因为它看起来太像是童话故事中的城堡,而不太是一个教堂了。

我记得自己徒步走过了金门大桥。在桥的这头时,我望着对岸的马林海岬,恨不得立刻就到对岸去徜徉在那美丽的群山之间。但等我真走到那边时,我几乎不愿意再挪动双腿……那时的我绝对想不到,在时隔六年以后的今天,我会坐在海风吹拂的海岬峰顶,一面俯瞰太平洋、旧金山湾、金门大桥和笼罩在雾中的旧金山城,一面对着大卫的录音机讲述着这一切。

从美国回到芬兰之后,李纳斯对自己说,我要去美国。

当李纳斯透露出自己的就业计划之后,马上有多家公司递来橄榄枝,其中包括著名的 Linux 公司 Red Hat。这种感觉是如此美妙,就像你刚刚掏出一支香烟,面前已是千百个打火机舞动。但是李纳斯本着不加入任何一家 Linux 公司的原则,拒绝了 Red Hat,参加了另一个名不见经传的公司的面试,这家公司叫做 Transmeta,中译名「全美达」,你们可以从维基百科上查到这家公司,不过我打赌,知道这家公司的读者不会超过千分之一,这并不是咱们孤陋寡闻,因为美国人民刚开始也不知道这家公司在干嘛,全美达官网在1997年中上线,两年半后网站的建设情况是「This web page is not yet here」,又过了很久人们才从内部员工透露出的一点信息得知,这家公司似乎是搞处理器的。这是我所知道的唯一一家保密措施强过苹果的公司,如果不是李纳斯,这家公司就像是根本没有存在过。

就是这样一家公司,面试了在开源社区名满天下的技术天才、Linux 操作系统的缔造者李纳斯,并且将其招至麾下,一待就是六年。从某种程度上,这六年严重的影响了 Linux 操作系统前行的脚步,因为李纳斯没有足够的时间开发 Linux 了。

虽然根据 Transmeta 与李纳斯的协议,他可以继续从事 Linux 的开发,而且他确实也想这么做,比如白天为 Transmeta 工作,编写 X86 解释程序,晚上继续 Linux 的伟大事业。不过真实的情况是,晚上丫睡着了……

关于加班和睡眠,李纳斯是这么解释的:

很多人都认为加班加点的工作才算真正的工作。我可不这么想。无论是 Transmeta 的工作还是 Linux 的工作,都不是靠牺牲宝贵的睡眠时间换来的。事实上,如果你想听真话,我要说,我更喜欢睡觉。

总之,李纳斯第一次从互联网上消失了,很多悲观的开发者纷纷奔走相告,李纳斯这小子是不是被招安了?丫开始为商业公司干活了,Linux 作为自由软件是不是已经濒临死亡了?每当这时候李纳斯就会出来给大家打打气说,哥还在呢,只不过刚睡醒……

关于李纳斯的这段经历,曾经在硅谷工作过的一位朋友给我提供了如下文字,大意是这样的:

每次想起李纳斯这段经历,我都要感慨万千。第一次得知李纳斯虎落硅谷的事是在2002年夏天,当地的水星报记者先是把李纳斯大吹一通,然后说他从芬兰老家搬到美国,就职于 Transmeta 已五年有余,但 H1 移民仍然停留在劳工卡初级阶段,六年期满就要打道回府了。

当时这份报纸的读者大概有一半人有 H1 经历,然后这一半人里的一半都知道 Linux 是啥东东,但是从未听说过 Transmeta 是何方神圣,这货居然把一代技术英雄扣在那儿为一个名不见经传的小资本家作苦力,导制全球开源事业停滞不前,真是胆大包天啊!于是很多读者跑到水星报去说,象李纳斯这样的天才愿意移民到美国,布什亲自开飞机去接都不为过,怎么可以被移民局压了五年呢balabala……

还好,李纳斯在2003年离开了这个叫做「全美达」的公司,受聘于开放源代码开发实验室(OSDL : Open Source Development Labs, Inc),重新统领开源世界的各路英豪,全力开发 Linux 内核,Linux 再次焕发出勃勃生机,这一次,它要引领的是互联网的技术浪潮……

Linus(七)——关于财富

李纳斯对待财富的态度就是「视金钱为粪土」,是真的粪土。

那种默然的态度让人感觉非常可怕。当一个人随便动动手挂挂名签个字就能获取上千万美金的时候,他依然和自己的妻女一家人挤在圣克拉拉一栋两层楼的公寓套房里,过着一个普通程序员的生活,同时不断改进已经遍布全球的 Linux,这是什么精神?这是毫不利己专门利人的国际主义战士的精神。

写到这我不禁想起了绿茵场上的冰王子博格坎普,当他接到几十米外的长传,用标志性的慢速停球过掉扑上来的后卫,轻扣,过掉另一个后卫,颠球,闪过最后的防守,面对守门员的时候不是大力抽射和仰天长啸,而是把球搓出一道完美的抛物线,球越过门将,缓缓落入网窝,然后博格坎普,低着头慢慢的走开,留给对手的是优雅与实用并世无双的技艺,和令人绝望的背影!

默然的感觉,懂了撒?

很多程序员创业成功或跟随创业成功之后,自以为功成身退,最早扔掉的就是代码和编译器,然后购豪宅当天使满世界贴旅游照片,你们感受一下,这个境界是完全不可同日而语的。(请勿对号入座,如有误伤,必是友军所为)

事实上李纳斯在拿到第一笔真正的财富之前,一直处于日子紧巴巴的状态。当时另两位带头大哥比尔·盖茨和史蒂夫·乔布斯早已名满天下家私万贯,同时有大量的技术人员、商人和公司通过 Linux 及其相关技术获取了巨额财富,对此,李纳斯的态度是:「和我有毛关系」,他似乎对一大群才气不高的编程人员能够享受到大笔的财富并不在意。这种情况一直持续到所有的有识之士都坐不住了:李纳斯,你再也不能这样下去了!

伦敦的一位企业家希望李纳斯在他羽翼未丰的 Linux 公司做个董事会成员,报酬是一千万美金。李纳斯说,不用。企业家惊呆了,当他喃喃自语「卧槽你特么知道一千万美金是啥概念吗」的时候,李纳斯已默默走远。

Red Hat 公司为了感谢李纳斯的卓越贡献,为他提供了一些期权,李纳斯的回复同样是,不用了,我不会给你独家的授权许可的。Red Hat 的人差点疯掉:「李爷期权您就收着吧,我们什么都不要行了吧」「唔这样啊,那就放这吧」,这就是李纳斯!

正是这笔期权让李纳斯收获了第一笔巨额财富,因为 Red Hat 1999年8月11日在纳斯达克上市了。李纳斯先是意识到自己从身无分文突然变成了拥有五十万美元的土豪,然后是一百万,五百万,李纳斯终于变得亢奋起来,原来期权也是钱啊!终于不用再为生计发愁了,对着这个事情,李纳斯的定义是:我真是最幸运的家伙!

事实上李纳斯从来没有想过 Linux 能够获得如此巨大的成功。他只是为了自己方便写了一个操作系统内核并想借此获得一点回报而已,「假如我事先知道了要做到如 Linux 这般成功需要做多少基础和琐碎工作的话,那我肯定会相当沮丧的。这意味着你首先要非常优秀,并且你所做的大部分决定都导致了正确的结果。」

任何理智的人在登山之前凝望着高耸入云的山峰和崎岖艰险的山路时,都会陷于沮丧之中。解决办法就是先迈出第一步再说,然后,但行好事,莫问前程。

Linux 不仅给李纳斯带来了名声和财富,同时给大众带去了巨大的好处。年轻一代中最聪明的程序员和黑客都在使用 Linux 的产品,正是开放的 Linux 给这些天才的程序员带去了巨大的创作热情和喜悦,他们在 Linux 平台上完成了一个又一个杰出的作品,这些技术形成的生产力,对互联网的发展起到了巨大的推动作用,直到今天。

Linus(八)——巨星碰撞

在 Linux 出现之前,桌面操作系统的市场基本上是由比老师和乔老师控制的,虽然乔老师控制的少了一些。Linux 出现之后,桌面操作系统的格局并没有太大变化,但是服务器端市场的变化却是翻天覆地的。原本比尔希望通过 Windows NT 和 Server 系列在服务器领域复制桌面操作系统的辉煌,从而千秋万载,一统江湖。然而,世界的发展永远是多元的,没人能通过一己之力改变历史发展的多维性,比尔·盖茨也不行。于是 Linux 出现了,并以星星之火可以燎原之势一举拿下服务器操作系统的半壁江山。

一方是商业公司和封闭的策略,另一方是自由软件和开放的协议,这场战争一开始支持率就是一边倒的,李纳斯就像对抗风车的堂·吉诃德,但是他自己不仅没有遍体鳞伤,还在没怎么亲自出场的情况下把微软这个软件风车搞得狼狈不堪,这种情况发生在现实生活中绝对是老百姓喜闻乐见的,李纳斯成了自由软件世界里的英雄和领袖,但也就此与微软结下了世仇,比尔和李纳斯许下了永世不相见的誓言。

有些加盟微软的朋友告诉李纳斯,他们曾见到他的头像被钉在了微软公司的飞镖靶心上。李纳斯对此的评价是:一定是我的大鼻子太好瞄准了。

李纳斯与另一位业界巨头苹果之间就没这么激进了,毕竟 Linux 和 OS X 师出同门,都是从老前辈 Unix 那儿毕业的,坐在一起还能唠唠家常,事实上李纳斯和乔布斯确实有过一次历史性的会面。

李纳斯来到硅谷不久,就收到了一封来自乔老师秘书的邮件,邮件中写到:「听闻小李飞刀光临硅谷,蓬荜生辉,老乔不才,重回苹果,以期振昔日之雄风,如得小李相助,必将如猛虎加之羽翼而翱翔四海,天下可得。期待会面。」(当然是意译)

李纳斯看完之后不明白乔布斯要干什么,只是觉得很厉害的样子。毕竟李纳斯还坐在外公腿上拨弄电脑键盘的时候,苹果的沃兹已经纯手动打造出苹果的第一代个人电脑 Apple I 了。李纳斯决定去见一下儿时的偶像,并了解一下苹果的新操作系统。

两代科技巨星的会面被安排在苹果总部 Infinity Loop,乔布斯带着原 Next 公司技术总监 Avie Tevanian(Mach 之父)接见了李纳斯,双方进行了友好而亲切的会谈,然后会谈的结果和某国常规会谈一样,就是没有结果。

其时乔布斯十年放逐回归苹果,举手投足已是大宗师气势,他对李纳斯说,我大苹果虽然现在看起来有点颓,不过海盗精神永存,我们已经准备好重新起航了。目前个人电脑领域仍然只有两个玩家:微软和苹果。如果 Linux 和苹果能够珠联璧合,那一切将是最好的安排,所有的开源爱好者都能够用上优雅与极客并存的 MacLinux 了。然后 Mach 之父 Avie Tevanian 向李纳斯详细介绍了整合 Mach 和 Linux 内核作为 OS X 混合内核的计划,之后庞大的 OS X 体系将构建在 Mach 和 Linux 内核的基础之上。 同时乔老师表示,基于 Mach 和 Linux 的内核系统将采用开源的方式运作,这样全世界的开源爱好者都可以为 Mac 和 Linux 开发程序。

这几乎是一个完美的双赢方案,乔老师都被自己描绘的蓝图打动了,永远年轻,永远他妈的热泪盈眶!谁能拒绝苹果公司和乔布斯如此完美的邀请呢?

李纳斯能!

乔布斯认为自己的扭曲现实力场加上苹果巨大的市场潜力一定会让李纳斯怦然心动,没想到这个芬兰小子在计算机面前待久了,水米油盐不进,任凭乔布斯口吐莲花,我自巍然不动。首先李纳斯对 Mach 就不感冒,他认为 Mach 几乎犯下了所有的设计错误,它让系统变得复杂而效率低下;其次李纳斯觉得乔布斯可能没意识到,Linux 的潜在用户要比苹果系统多;第三李纳斯乐观的认为,虽然 Linux 的目标不是占领桌面操作系统,但是显然「我们很快就能做到这一点了」。所以李纳斯当时的反应是:

为什么我要关心这些?我为什么要对苹果公司的故事感兴趣?我不觉得苹果公司里有什么有趣的事情。我的目标也不是占领什么桌面操作系统的市场。(嗯,虽然 Linux 马上就要做到这点了,但这从来就不是我的目标)

现在看来,李纳斯当时对 Linux 在桌面操作系统的前景过于乐观了,虽然他天纵奇才桀骜不驯,但是也无法预测到 OS X 和 iOS 在十年后引领移动开发的浪潮。不过即使知道 OS X 未来的大发展,心高气傲的李纳斯也不会接受苹果的收编,因为 Linux 一直是独立和自由的软件图腾。

无论如何,这次非正式的会谈没有达成任何实质性的效果,但是对后来的 IT 格局产生了巨大的影响。苹果不再关注 Linux,而是转向了 BSD。2001年苹果任命 FreeBSD 的发起人之一,老牌 BSD 黑客 Jordan Hubbard 为 BSD 技术经理,后升为 Unix 技术总监,负责 OS X 操作系统底层核心 Darwin 的研发,最终,Mach 与 BSD 技术整合在一起,形成了混合内核。另外,苹果开始觉得开源项目也不是那么靠谱,后续他们先后研发并开源了优秀的编译器项目 LLVM 和 Clang,一举替换了整条 GCC 编译链,为 OS X 和 iOS 的性能优化和语言特性提供了巨大的帮助。这也算是苹果对那些牛叉哄哄的开源人士的回击:看,我们也可以做开源,而且比你们做的好。

Linux 则继续在开源、独立、自由的方式下一路狂奔,虽然在桌面操作系统领域的成就乏善可陈,但是在服务器端大放异彩,目前几乎整个互联网都是运行在 Linux 及其衍生产品之上的,可以说没有 Linux,互联网不可能得到如此迅猛的发展。

十年以后,移动互联网时代来临。OS X 上长出了 iOS,Linux 上则诞生了 Android,这两个移动开发领域的双子星都有一个老祖宗,那就是 Unix。一次话不投机的会谈让 OS X 和 Linux 分道扬镳,在十几年后的今天,它们又以一种不同的方式相见了,世界永远都是多元的,可能冥冥中自有天意吧。

Linus(九)——Linus 和 Git

很多人在完成了类似 Linux 这样宏伟的软件产品之后,基本上就止步不前了。但是李纳斯却从未停歇创新的脚步。2003年加入开放源代码开发实验室之后,李纳斯重新全职投入 Linux 内核的研发,并开始酝酿自己的另一个跨时代的产品。

2002年,Linux 内核开发团队开始采用 BitKepper 作为代码版本管理工具。BitKeeper 是一套分布式的版本管理工具,它满足了 Linux 内核开发的技术需求。但是 BitKeeper 只是暂时对 Linux 等开源软件团队免费,并不是自由软件。2005年 BitMover 公司不再免费赞助 Linux 开发团队。对此李纳斯表示非常遗憾,但遗憾之后他并没有自怨自艾伤心落泪,而是愤怒的与其他几个小伙伴花了几个星期完成了一套新的分布式代码管理工具,命名为 Git。两个月之后,Git 发布了官方版本,并在不同的项目中应用,自由软件社区给予了 Git 广泛的支持。

与 SVN 和 CVS 等软件不同的是,Git 更关注文件的整体性是否有改变,Git 更像一个文件系统,它允许开发者在本地获取各种数据,而不是随时都需要连接服务器。Git 的最大的特点就是离线分布式代码管理,速度飞快,适合管理大型项目,难以置信的非线性分支管理。

2005年 Git 发布之后,技术日臻成熟,很多大公司都开始采用 Git 管理自己的项目代码,2008年2月 Github 公司基于 Git 构建了协作式源代码托管网站 Github,目前该网站是这个星球上最大的源代码集散地,几乎所有的优秀代码都托管在 Github 上。Git 已经成为程序员使用最多的源代码管理工具!

对于 Git 的成功,李纳斯表示:

Git的设计其实很简单,它有一个稳定而合理的数据结构。事实上,我强烈建议围绕着数据来设计代码,而不是反其道而行之,我觉得这可能就是 Git 如此成功的原因。坏程序员总是担心他们的代码,而优秀的程序员则会担心数据结构和它们之间的关系。

从 Git 诞生到今天已经有9个年头了,Git 始终没有背离其设计的初衷:高性能、简单的设计、非线性高并发分支的支持和完全的分布式。

对于李纳斯来说,Git 现在是他的主要消遣工具之一。他很喜欢在 Git 上编程的感觉,因为再也不用担心锁定问题、安全问题和网络问题,这种感觉真是太美妙了!

我们继续期待李纳斯的第三个伟大的作品!

Linus(十)——生活的意义

李纳斯认为生活意义的全部就在于:生存,社会交往和寻找乐趣。因为我们所做的一切事情,最终似乎都是为了我们自己的乐趣。而进化作为主线始终贯穿其中。

李纳斯对进化的理解是:

你知道在整个太阳系,人类已知的最复杂的工程是什么吗?——不是Linux,不是Solaris,也不是你的汽车。是你,还有我。想想你和我都是怎么来的——不是什么超复杂的设计,没错,凭运气。除了运气,还有:

通过分享「源代码」实现自由的可用性和授粉机制,生物学家把它称作DNA。

毫不手软的用户环境把我们不好的版本轻易地替换成更好的可执行版本,从而使种群更加优秀(生物学家把这叫做「适者生存」)。

大量的无方向的并行开发(试错法)。

我从未如此严肃过:我们人类永远都无法复制出比我们自身更复杂的个体,而自然选择却不假思索的做到了。不要低估适者生存的力量。不要错误地认为你可以做出比大量的平行试错反馈环更好的设计,那样就太抬举你的智力水平了。说实话,太阳照常升起,这和任何人的工程技巧或者编程风格都没有关系。

李纳斯一生只为寻找欢笑,但是他却取得了无数的成就和荣誉:

1997年,在芬兰赫尔辛基大学计算机科学系,李纳斯接受了他的硕士学位。两年后,他在斯德哥尔摩大学接受名誉博士学位,并在2000年在他的母校获得了同样的荣誉。

1998年,李纳斯接受了电子前哨基金会先锋奖。

2004年,李纳斯被《时代》杂志选为世界上最有影响力的人之一。

2006年,《时代》杂志欧洲版评选李纳斯为过去60年最有革命性的英雄人物之一。

2012年4月20日,托瓦兹被宣布成为两位获奖者之一,和山中伸弥共同获得当年的千禧技术奖。该奖被普遍形容为相当于在技术领域的诺贝尔奖。

2012年4月23日,李纳斯进入互联网协会(Internet Society,ISOC)的网络名人堂。

李纳斯憎恶分明,经常口不择言,比如他对 C++的评价是:C++是一门糟糕的语言。而且有一群不合格的程序员在使用C++,他们让它变得更糟糕了。他对自己的两个产品命名的解释是:我是个自大的混蛋,我所有的项目都以我的名字来命名。开始是Linux, 然后是Git(英国俚语,饭桶的意思)。

不过我最喜欢李纳斯说过的一句话是:Talk is cheap, Show me the code。他一直用自己的编程人生诠释着这句话。2006年的时候,Linux 内核代码的2%依然是李纳斯完成的,他是代码贡献最多的人之一(是年37岁)。到了2012年,他对内核的贡献主要是合并代码,编程变少了,但是他依然对是否将新代码并入到 Linux 内核具有最终决定权。

李纳斯用自己精彩的编程人生和对自由软件的热爱演绎了现代社会中一个书呆子的胜利。如果你爱一个人,就让他去编程吧;如果你恨一个人,就让他去编程吧。代码让我们欢笑,也让我们忧伤,让我们沉默,也让我们高歌。对于程序员来说,代码是这个世界上最美妙的音乐,会编程的孩子,都是好孩子!

上文源自:http://www.oschina.net/news/72562/linus-smell


Linux之父:人生在世,Just for Fun !

摘要: It started out as survival, but it became a social thing.And then it becomes entertainment. 《Just for Fun: The Story of an Accidental Revolutionary》,是Linux内核的创建者林纳斯·托瓦兹(Linus Torvalds)的自传。这本书由他和大卫·戴蒙德(David Diamond)联合撰写,叙述林纳斯·托瓦兹从小的成长历程、创建Linux内核、Git的过程以及软件世界的江湖恩怨。全书主体部分采用一问一答的访谈形式,由戴蒙德在他们的的汽车旅行过程中记录完成。另外一部分收录了林纳斯的几篇专题论述文章,比如作者关于软件版权的一些批判性意见。


I was an ugly child.I was a nerd.I was A geek.

关于自己的童年,林纳斯显然有着强烈的阴影。首先,他自认为是一个长得非常丑的孩子(ugly: unpleasant to look)。具体来说就包括极度没品味的衣着,Torvalds家族标志性的大鼻子,不擅长体育运动、腼腆害羞以及最重要的:很难引起妹子的关注(关于这一点,老林在全书多次反复提到)。

Nerd一词本来原意“a person who is boring, stupid and not fashionable”。俚语中一个稍含贬义的用语,一般指偏爱钻研书本知识,将大量闲暇用于脑力工作,对流行文化不感兴趣,而不愿或不善于体育活动或其他社会活动的人。相对于那些擅长体育、四肢发达、自信且善于泡妞的人来说,nerd的青春说起来都是眼泪啊。

geek和nerd这个词类似,江湖俗称发烧友或怪咖,通常被用于形容对计算机和网络技术有狂热兴趣并投入大量时间钻研的人。它们现在已经在IT圈里流行起来,逐渐从贬义词变成了具有自豪感和身份认同意义的词语,很多中关村或深圳的咖啡店里面都有很多自称Geek的人在和各路投资人畅聊IPO的美好图景。我想这显然归功于林纳斯这代牛人不遗余力地科普推广。

Tell you about Family.


关于Torvalds家族,主要有三个特点:

教授之家 林纳斯·托瓦兹的外祖父家族原来只是贫穷的农民,直到外祖父那一代,六兄弟中有两人获得博士学位。(p13)Leo Törnqvist是芬兰第一批统计学教授,同时意外地开启了林纳斯的编程之路。教授购买了一台Commodore VIC 20电脑,期望用户解决工作中遇到的统计计算问题,显然老教授并不善此道。彼时小林纳斯11岁,仅仅是因为好玩,通过阅读手册自学了指令集,并开始使用BASIC语言编写一些统计学方面的小程序。

破碎之家(dysfunctional family) 林纳斯的父母在他很小的时候就离异了。“At times we lived with my dad and his girlfriend, at other times Sara lived with my dad and I lived with my mom.At times both of us lived with my mom.” 他的祖父晚年中风,祖母也年老体弱,一家老小挤在一所旧房子里。作为职业女性,林纳斯的母亲经常需要工作到很晚,林纳斯只得和妹妹自己去购物、安排晚餐。在艰难的日子里,电脑是唯一的寄托。“The computer found a home on a tiny desk against the window, maybe two feet from my bed.(p19)”

左派之家 Torvalds家族的一大鲜明特色就是左翼传统。祖父是一名诗人和记者,父亲、母亲都是记者,曾是芬兰学生运动、左翼社会运动的活跃分子。直到林纳斯,坚持开放源代码理念也就顺理成章了。他本人对于金钱本身一直也没什么概念,直到1999年,Red Hat公司依靠Linux赚到不好意思以后,主动要求赠送一大笔股票期权给林纳斯(估值2000万美元)。在黑客的江湖里,林纳斯也许是最知名的“喷子”之一:例如,抨击Nvidia是他所接触过的“最烂的公司”(the worst company)和 “最麻烦的公司”(the worst trouble spot),有一次与人争论Git为何不使用C++开发时与对方用“放屁”(原文为“bullshit”、“BS”)互骂,更曾以“一群自慰的猴子”(原文为“OpenBSD crowd is a bunch of masturbating monkeys”)来称呼OpenBSD团队。不用奇怪,这也许只是他们家的记者基因灵魂附体而已。

About Finnish Army

1989年,大学二年级,林纳斯加入芬兰国防军服11个月的国家义务兵役,军衔少尉,领导一个四、五个人小团队。他们的工作是负责火炮控制单元,大概是指示目标、弹道计算之类。 林纳斯无意于军官职业,也不喜好当领导,军旅生活中最重要的一件事就是看书:

So there were two things I did that summer.Nothing.And read the 719 pages of 《Operating System:Design and Implementation》

《操作系统:设计与实现》,作者Andrew S. Tanenbaum的这本书,激活了这位年轻人的视野,促成了林纳斯从事操作系统开发的职业生涯。

不管怎么说,林纳斯对于这段生活是非常感念的:

some people suggest that the major reason for the required army duty is to give Finnish men something to talk about over beer for as long as they live.They all have something miserable in common.They hated the Army, but they're happy to talk about it afterward.(p30)

Tell you about Finland.

在这么略带自黑的幽默自传中,作者对祖国芬兰的深情溢于言表。

芬兰地处严寒,有四分之一的地方处在北极圈内,最北的地区夏天有73天太阳不落于地平线下,冬天则有51天不出太阳。大概有500多万居民,93%的人使用芬兰语,大部分可以说英语。70%以上的人属于芬兰信义宗教会(路德宗)的成员。最大的民俗特点就是:
一:低调内敛、不爱说话,如果有什么事他们更爱发短信(诺基亚手机发短信还真是无敌)
二:宅,死宅!中国的国粹是麻将,芬兰的国粹就是桑拿浴,或者说桑拿才是芬兰真正的国家宗教。“Nobody actually knows how this religion started, but the tradition, at least in some places, is to build the sauna first, then the house.” (芬兰谚语:先建桑拿,再搭房屋)

芬兰的教育系统让人印象深刻,有一种英特纳雄耐尔已经实现的即时感:
教育国策一:教育免费。不仅免学费、而且提供全额伙食补助。不仅保障城里人就近入学,还为偏远地区学生提供免费交通运输系统。
教育国策二:学术教育与职业教育平衡发展。高中就有学术性的文理高中和职业高中,高等教育分成“研究性大学”(university) 以及科技大学(芬兰语ammattikorkeakoulu)系统。 500万人口的小国居然有17间大学以及27间科技大学。
教育国策二:教育平等。天朝惯有的排名制、淘汰法,是在国家法律和社会信仰层面所不能容忍的。教育系统不使用淘汰,分组或是放弃任何一位学生。

Finnish schools don't separate out the good students-or the losers.(p25)

对于林纳斯这类一度具有阅读障碍的“Math Guy”,在某些方面(体育、社交等)非常自卑的人来说,并不妨碍他们过上好日子。芬兰教育系统有着非常丰富的奖学金体系,例如林纳斯的第一部电脑,就是通过高中时代的奖学金购买的(估值500欧元,5000元人民,算上那个年代的购买力,少说上万)。那可是1980年代,计算机才刚刚个人化,是非常昂贵的设备。就算30多年后今天,中国任何一所普通高中每学期的单科奖学金到万元标准的也不多吧。

The biggest ones were on the order of $500. So that's where most of the money for my second computer came from.

据说今年在克强CEO的严重关切和亲自督战下,财政部和教育部把中国高校博士生的津贴从每生每年12000元大幅提高到15000元,即每生每月提高250元。还真不如一个芬兰的高中生。 所以关键问题都要看数字。科教兴国是不是扯淡,领导是不是真的重视你,只要看账上那点饷银就清楚了。

meaning for life

There are three things that have meaning for life.They are the motivational factors for everything in your life——for anything that you do or any living thing does:The first is survival, the second is social order, and the third is entertainment. Everything in life progresses in that order.And there is nothing after entertainment. So, in a sense, the implication is that the meaning of life is to reach that third stage. And once you've reached the third stage, you're done. But you have to go through the other stages first.

"人类的追求分成三个阶段。第一是生存,第二是社会秩序,第三是娱乐。最明显的例子是性,它开始只是一种延续生命的手段,后来变成了一种社会行为,比如你要结婚才能得到性。再后来,它成了一种娱乐。"

It started out as survival, but it became a social thing.That's why you get married.And then it becomes entertainment.

"技术最初也是为了生存,为了生存得更好。现在技术大体上还处于社会的层面,但正在朝娱乐的阶段发展。......(Linux的开发模式)为人们提供了依靠兴趣与热情而生活的机会。与世界上最好的程序员一起工作,是一种无与伦比的享受。"

Technology came about as survival.And survival is not about just surviving, it's about surviving better.

人生在世,Just for fun.

What can I do to make society better? You known that you're a part of society.You known that society is moving in this direction. You can help society move in this direction.


一些 Linux 早期发展史

Linus Torvalds 的好友兼 Linux 发展的重要人物 Lars Wirzenius 在2023年4月发文详细讲述了他记忆中的 Linux 称,作为现在全球范围内都相当成功的一个项目,Linux 的开端其实并不起眼。Linux 诞生之初的一些代码是由 Linus Torvalds 与 Lars Wirzenius 合写的,因此 Lars 也是第一个与 Linux 合作的开发者。不过后来 Lars 选择了在社区方面,而不是直接对内核做出贡献,并帮助回答问题、编写文档等等。他还曾打理了一个 Linux 相关的短暂的时事通讯,因为发表了对 Linus 的第一次采访而受到关注,之后被 comp.os.linux.announce 新闻组所取代。


根据 Lars 的回忆,1988 年秋天,他在赫尔辛基大学学习计算机科学时遇到了 Linus Torvalds;两人在第一学年快结束时,获得了对 Unix 服务器的访问权限。之后在 1990 年秋天,两人在服完兵役之后继续回到大学学习;选修了 C 和 Unix 编程课程,其中包括了相当多的 Unix 内核体系结构理论,因此两人也对 QNX 和 Plan 9 等其他操作系统内核进行了解。 彼时,两个 20 岁意气风发的年轻人,就已经开始讨论 “应该如何正确构建操作系统” 这一问题。

1991 年 1 月,Linus 从当地一家用零件组装计算机的商店购买了他的第一台 PC。为了满足 Linus 想探索多任务处理以及不想设备降级的需求,该 PC 配备了一个 386 CPU。与此同时,这台 PC 还拥有高达 4 兆字节的 RAM 和一个硬盘驱动器。在之后的几个月的时间里,Linus 的业余时间都花在了一个名为 Prince of Persia 的游戏上;后来还买了一份 MINIX。

As and Bs

游戏搞定后,Linus 开始学习英特尔汇编语言,并在某一天向 Lars 展示了他编写的一个执行多任务处理的程序:一个任务或线程会在屏幕上写入字母 “A” 的流,另一个是 “B”;当流 As 变成 Bs 时,上下文切换在视觉上很明显。这也是后来被称为第一个 Linux 内核版本的东西。

后来,Linus 扩展了这个程序,并采用 C 语言编写了大部分内容。在这段时间里,也就是 1991 年春末,Lars 帮忙写了一个 C sprintf () 函数的实现,目前这段代码的核心仍然存在内核中。随着时间推移,内核不断更新变得更好:包括有了键盘和串行端口的驱动程序、屏幕的 VT100 终端转义序列仿真、并且可以用它通过调制解调器拨号到两人就读的大学。而有一次,在 Linus 不小心试图用硬盘驱动器拨打大学电话后,其主引导扇区变成了以 “ATDT” 和大学调制解调器池电话号码开头。但在解决了这一问题之后,Linus 就在内核中实现了文件权限。

时间线来到 1991 年 8 月,Linus 在 comp.os.minix 新闻组中首次公开提及了他的新内核,透露正在出于爱好开发新的免费操作系统 —— 最初命名为 Freax。几周后,Linus 要求 ftp.funet.fi 的管理员之一 Ari Lemmke 上传第一个 tar 存档,Ari 则选择了 Linux 这个名字。初始版本仍然包含嵌入其中一个源文件中的原始名称。

Linus 为有兴趣的用户提供了安装方法和说明,并上门为 Lars 进行了安装,而 Lars 的电脑也是真正意义上第一台安装了 Linux 的 PC。对此,Lars 则调侃称,“在这一切发生时,我正在小睡,我推荐这种安装 Linux 的方法:小睡,而 Linus 则在努力工作。”

Linux 的第一个版本使用了禁止商业用途的许可证,一些早期贡献者建议其更改为自由软件许可证。1991 年秋天,Lars 带 Linus 去听了 Richard Stallman 在芬兰的演讲;于是,在贡献者的压力以及 Lars 的劝说下,Linus 在 1992 年初选择了 GNU GPL 许可证。同一阶段,Linus 也在 Linux 中实现了虚拟内存。

1992

1992 年要从与 MINIX 作者 Andrew Tanenbaum 的那场著名辩论说起。Andrew Tanenbaum 对 Linux 及其架构有一些看法,Linus 则对 MINIX 有意见。Lars 称,“这场辩论彼时被描述为一场口水战,但事后看来实际上是相当文明的”。同年,X11 系统被移植到了 Linux 上,使 1992 年成为 Linux 桌面年。第一个 Linux 发行版也始于 1992 年:Softlanding Linux System 或 SLS。第二年,SLS 演变为 Slackware,激发了 Ian Murdock 在 1993 年创建 Debian,以探索更加基于社区的开发结构。接下来,其他一些发行版也相继冒出。

1993 年,Linus 和 Lars 都被大学聘为助教。Linus 开始在学校办公室的 PC 上进行 Linux 开发,并在某一天用汇编语言重写了 Linux 内核命令行解析器以实现提速;两个人在这个办公室度过了一段快乐的时光。在后来的某个时候,Linux 获得了对以太网和 TCP/IP 的支持。

1.0

1994 年春天,Linux 好像已经足够成熟:用户可以用 Linux 进行自我编译、阅读 Usenet、同时运行许多 xeyes 程序副本。因此 1.0 版本的发布被提上了日程。

1995 年,Linus 和 Lars 在大学上了一门软件工程课程,其中主要包括一个建立在 Linux 之上的大型实践项目。Lars 表示,他当时出于一些经验坚持要使用一个版本控制系统,也正是这种经历导致 Linus 不喜欢 CVS,并且多年来拒绝使用任何版本控制,除了将 tar 包上传到 FTP 站点。同年,Linus 得到了一台 DEC Alpha 机器,并首次将 Linux 移植到新架构。

1997 年 Linus 毕业并移居美国,在 Transmeta 工作;Lars 则在赫尔辛基地区的另一所大学开始了新工作。在接下来的几年里:Linux 功能日益完善、“开源” 一词被创造、IBM 在 Linux 开发上投入了大量资金、Netscape 将其 Web 浏览器的一个版本作为开源发布等等相继。

Lars 称,“跳过一些细节和许多年,开源基本上占领了世界。1991 年,Linus 称 Linux 不会像 gnu 那样庞大和专业。2023 年,Linux 正在各大洲、各大洋、数十亿台设备、轨道和火星上运行。对于一开始只是两个线程,在屏幕上写入 As 和 Bs 流的东西来说,这个结果还不错。”