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 内核具有最终决定权。
李纳斯用自己精彩的编程人生和对自由软件的热爱演绎了现代社会中一个书呆子的胜利。如果你爱一个人,就让他去编程吧;如果你恨一个人,就让他去编程吧。代码让我们欢笑,也让我们忧伤,让我们沉默,也让我们高歌。对于程序员来说,代码是这个世界上最美妙的音乐,会编程的孩子,都是好孩子!
……………………
本文参考资料:
李纳斯自传:《Just for Fun》
维基百科相关资料