编者的话:提起Linux之父Linus Torvalds,人们首先想到的是他的不近人情,总是听说他“炮轰”这个“炮轰”那个,却很难有机会接近他,了解他是个什么样的人。近日,他做客TED,为我们展现了他鲜为人知的一面。他两次改变了技术世界,第一次是Linux,第二次是Git,他是如何想到要开发这两个软件的?他如何看待开源运动?他又是如何评价自己的性格?以下是访谈全文,翻译自 TED视频 字幕。
Linus Torvalds(以下简称LT):怎么看都不像个司令部啊。我必须说一点,别人对这张照片最感兴趣的地方是里面那张踏步桌。这是我办公室里最有意思的东西,事实上我已经不玩了。这跟我的工作方式有关。
我的工作方式是……我不想有外部刺激。你们大致能看到,墙刷成了浅绿色。我听说精神病院里面的墙都是这颜色。
这像是一种平静的颜色,不会真正刺激到我。
但这张照片里你们看不到电脑,只能看到屏幕。我最在意电脑的一点是——我也喜欢性能强劲的大电脑但不强求——它必须要完全静音。我认识一些Google的员工,他们都在家里部署了小型数据中心,我不喜欢这么干。我的办公室是你见过最无聊的。我独自安静地坐在那儿。如果我的猫跑过来,它就坐在我膝盖上。我喜欢听猫咕噜咕噜叫,不喜欢听电脑风扇声。
LT:我至今还是一个人工作。真的——我在自己家一个人工作,经常穿着浴袍。摄影师来了我才想着拾掇一下,把衣服穿起来。
这是我一直以来的工作方式。我开始写Linux的时候也是如此。起初我并没有想过把Linux做成一个协作型项目。那时候我做了好几个个人项目,Linux是其中一个,我做Linux部分是因为我需要这个软件,但更主要的原因是,我只是享受编程。所以,你可以说是我因为想要最终的结果,但二十五年过去了,项目还没有结束的迹象。更确切的原因是,我那时想自己独立做个项目,还没开源什么事,真的,至少当时我没关注过开源。
接下来发生的是……这个项目成长了,变成了真正的作品,你想展示给别人看。真的,这就好像你说,“哇,看看我做出了什么!”不过相信我——当时的版本其实不怎么行。我公开发布了它,当时这还算不上真正的“开源”。源码确实是公开的,但如今我们思考着用开源方法论去改进Linux,那时却毫无此动机。当时的动机更像是,“看,这是我半年的心血,我想听听你们的意见。”
其他人来找我了。在赫尔辛基大学,我有个朋友是开源软件的支持者——当时一般叫做“自由软件”——他使我第一次有了这样的概念,嘿,你可以使用现有的开源许可证。我考虑了一会儿。我真正担心的是被商业公司盯上。我觉得这也是大多数开源软件新手所担心的,就是他们的作品被利用来攫取商业利益,不是吗?所以,我下定决心,“豁出去了!”然后——
LT:最初大家并没有贡献代码,而是贡献想法。其实只是有其他人看了一眼你的项目——我相信别的领域也是如此,但对代码我更加深信不疑——那就是,别人先对你的代码产生兴趣,深入阅读,而后才能给你反馈和想法。这对我来说意义重大。
当时我21岁,很年轻,但基本上我从十或十一岁就开始编程了。之前我所有的项目都是一个人在做,当人们开始发表意见,反馈对Linux代码的看法,这给了我启发。就算当时还没人开始贡献真正的代码,我已经觉得那是个了不起的里程碑,对此我说道,“我爱大家!”——别误解,其实我不是个善于交际的人。
我真的不喜欢和他人打交道。
但我热爱计算机。我喜欢通过邮件和他人互动,因为这种方式给人以缓冲。但我真的爱那些发表评论,参与我项目的人们。是他们成就了Linux。
LT:没怎么想过。对我来说意义重大的时刻,不是它功成名就,而恰是它规模尚小之时。对我来说重要的是,我不再独行,有十个,也许是一百个队友了。其他一切事情都是水到渠成。从一百个参与者增长到一百万个没什么大不了——对于我来说如此。好吧,这也算件大事,如果你——
如果你想把劳动成果卖掉换钱的话,这可是笔巨款——所以你们不要误解我。但如果你的兴趣在于技术和项目本身,那重要的事情就是把社区培养起来了。然后社区逐渐壮大。事实上,我并没有在任何特定的时间点上想过,“哇哦,这东西一夜之间关注度爆棚啊”,因为——相对来说培养社区是个细水长流的过程。
LT:我们当时遇到个问题,这个问题是需要一定时间才会显现的,那就是——当你的项目从十人或一百人增长到一万人——当前内核的情况是,每个版本会有一千人参与其中,两个月,或者说两到三个月发布一个版本。有些人并不会改很多代码,很多人只做很小很小的修改。
要维护好代码,但是规模决定了维护方式。我们经历了很多痛苦。业内有专为维护代码而生的项目。CVS就是最流行的工具之一。但我打心底里讨厌CVS,拒绝染指它,我尝试了一个极端但很有趣的软件,别人都不喜欢它。
我们的处境很糟糕,因为我们有成千的人想参与进来,他们的方式又各异,我终于忍不了了,因为我们的工具在成千人的规模下并不能像以往一样工作自如。
所以Git成了我第二个大项目,而它就是为了维护好我的第一个大项目而生的。这正是我的工作方式,我并不是为了——好吧,我确实是为了乐趣而编程——但我也想写点有意义的东西,所以我的每个项目都是我需要的,并且——
你给技术带来了两次变革,我们要深究一下为何如此,你已经给了我们点线索,但是……这里有一张你小时候的照片,拿着个魔方。你前面提到你从十或十一岁就开始编程了。
LT:是啊,我是个典型的书虫。我的意思是……那时候我就是个不善交际的人。旁边的人是我弟弟,对于魔方,显然我比他更感兴趣。
我妹妹,她不在照片里,我们家庭聚会时——家庭不大,但我有几个表兄弟——她会给我打预防针,我要回房间时,她会说,“这么做真有点那啥……”因为我没有——我只是个极客,我沉迷于计算机,沉迷于数学,沉迷于物理。我精于此道。我不觉得我很特别。我妹妹貌似说过,我最大的特质在于我不易放手。
LT:确实因为我固执。如果我开始做某件事,我不会说,“好了,我完成了,我们来干点别的——看,很牛吧!”
而且我注意到我人生的其他很多方面也是如此。我在硅谷一住七年。在此期间一直服务于同一家公司。闻所未闻啊,这不是硅谷的工作风格。硅谷的标志是大家来回跳槽以获得全面的工作经验。但我不是这种人。
LT:我不知道是否重要。回到“我不善于交际”的话题——有时候我也有点——可以说“短视”,在事关他人感受的事情上,这种“短视”会使我说出伤害别人的话。但我并不以此为荣。
但是,同时——我能理解那些劝我友善点的人,然后我跟他们解释,也许你很友善,但也许你应该多点进取心,他们听了就认为我不友善。
我想表达的是,人与人不同。我并不善于交际;我不以此为荣,但我就这样的。我很喜欢开源的一点是,它让不同的人一起合作。我们不必喜欢对方——并且有时候我们真的不喜欢对方——我是说,会有非常非常激动的争论。但实际上你会发现——有些事情你容不得不同意见,其实只是因为你们的关注点不同而已。
回到刚才我说的,我怕商业公司的人利用我的成果,但很快你会发现,这些人其实非常非常可爱。他们完成了所有我没兴趣做的事情,他们有完全不同的目标。他们利用开源软件的方式,我是不会去做的。但因为这是开源的,所以他们可以利用。大家真的合作得很好。
我觉得对于开源社区道理也一样。你需要有善于交际的人,那些沟通专家,他们是温暖而友善的人——
真心想拥抱你,并邀你加入社区。但不是每个人都这样。我就不是这种人。我关心的是技术。也有人关心UI。我死也不愿意做UI。我是说,如果我被困在一个孤岛上,唯一逃生的机会就是写出一套漂亮的UI,那么我死定了。
所以人与人是不一样的,我不是在找借口,我只是在解释。
LT:这是——这里多少人真正写过代码?
LT:我敢保证,每个举手的人,都实现过所谓的单向链表。教单向链表——这第一种方法品位不怎么样,但你刚开始学编程的时候基本就是这么教的。你们并不一定要懂代码。
对于我来说,最有意思的部分是最后的if语句。因为,单向链表就是这样——这段代码是要从链表中移除一个节点——这个节点位于头上,或中间,是应该有不同处理的。因为如果它是头节点,你需要改变头指针的指向。如果是个中间节点,你前一节点里面的指针的指向。这是完全不同的情况。
LT:确实好点。没有if语句。真的没关系——我不需要你们理解为什么没有if语句,但我希望你们理解的是,你可以从另一个角度去看待问题,重写代码,把一种特殊的情形融入正常的情形中。这就是好代码。但这代码太简单。这是计算机系的第一门课。不是重要的代码——虽然细节是很重要。
对于我来说,我想跟那些具有良好品位的人共事,良好的品位是——我发给你这个很傻的例子,算不上跟品位有关,因为代码太微不足道了。良好的品位意味着更多。良好的品位意味着你善于发现更抽象层面的规律,并且本能地觉察出解决问题的正确方法。
LT:我觉得对这里的一些人也有意义。
LT:其实我前面两天在TED有点难受,因为远景满天飞啊,对吧?我不是个有远见的人。我没有什么五年计划。我是个工程师。我认为——有些人成天到处晃悠,喜欢仰望星空,说“我要去那儿”,其实我对这类人完全没意见——但我喜欢盯着地面,我要在跌倒之前,铺平前面的坑。我是这样的人。
LT:好吧,这在技术领域也是老生常谈了,特斯拉和爱迪生。特斯拉被认为是一个具有远见卓识的科学家,脑子里充满了异想天开的创意。人们喜欢特斯拉,有人就用特斯拉来命名他们的公司。
另一个人是爱迪生,人们经常认为他平庸乏味——他最有名的一句话是,“天才就是1%的灵感加99%的汗水。”我属于爱迪生阵营,哪怕人们不会都喜欢他。因为如果你细细比较这两个人,你会发现特斯拉的智慧更迎合当下的口味,但是谁真正改变了世界?爱迪生可能不是一个友善的人,但他做了很多事——他也许不怎么聪明,也没什么远见。我想我更接近爱迪生而不是特斯拉。
LT:是啊,我确实想让他们稍微降降温。
LT:不。不,我不生气,有几个原因。一个原因是,我生活过得很好,我真的过得很好。
但还有一个原因——如果我不开源,不懂得放弃一些东西,Linux绝对不会有今天的地位。它带来了一些令我不适的经历,比如公开演讲,但同时,这也算是一种经验。相信我。所以,Linux这个软件身上正在发生的很多事情,使我很开心,使我坚信当初的选择是正确的。
LT:我持两方面观点。我认为在代码的世界中,开源之所以能运转得很好,原因之一是每天的工作成果基本上是非黑即白的。总是有一个相对不错的办法能判断,这代码写得不错,那代码写得不行。代码要么能运行,要么不能,这意味着可争论的空间不大。但即便如此,我们还是会有争论,对吧?在其他很多领域——人们谈论开源政治或其他类似事情——有的时候你真的很难说这样的话,是的,你可以在其他领域运用同一原则因为在这些领域只是黑白变成了其他颜色而已,并没有什么模棱两可的。
显而易见,科学领域的开源正在回归。科学一开始在发展,但最终变得固步自封,只剩下昂贵的期刊和类似的东西。然后科学领域的开源正在回归,带来了arXiv和开放的期刊。维基百科也改变了世界。还有一些例子,我相信会出现更多。
应该由你们来操心,对吧?
查看英文网址: linus torvalds the mind behind linux
感谢郭蕾对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。