# Linus Torvalds：The mind behind Linux

> 2016年2月 TED Talk , Linux之父Linus Torvalds.

![](http://riboseyim-qiniu.riboseyim.com/global-view.png)

## 开场：神之总部

0:12（主持人）Chris Anderson: 这是一件多么奇怪的事情。你的软件－Linux，运行在许多计算机上，它可能控制了大部分互联网。另外我想还不包括15亿部活跃的Android设备。你的软件运行在所有这些设备上面。某种程度上说真是不可思议。你一定有惊人的软件总部来控制它们。我想是这样的——当我看到这张照片的时候，我惊呆了。我的意思是说，这就是Linux的全球总部吗？

![God's bedroom and office](http://upload-images.jianshu.io/upload_images/1037849-39a662fe4bc061d4.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

0:42 (满堂欢笑) 0:44 (鼓掌) 0:48 Linus Torvalds: 它真的看起来不怎么酷。我不得不说，这张照片最有趣的部分，人们最容易关注的部分，是那个走步机。它是我的办公室最有趣的部分，而且我实际上从来不用它。我相信这两件事是有联系的。 1:08 我走路的方式……我不想有外部的刺激。你可以看到，墙上的颜色是浅绿色。我听说，精神病院的墙上也用这些颜色。 1:26 (满堂大笑) 1:28 它们是宁静的颜色，在某种程度上不会刺激你。 1:34 那些你不能看到的东西是计算机，图上你只能看到显示屏，但是我主要担心的是我的计算机——它的体型和功率都不够大，尽管我希望那样——但它必须保持绝对安静。据我所知，有些为Google工作的人，在家里就拥有自己的小型数据中心，我不这样做。我的办公室应该是你见过最乏味的。我独自呆在一片宁静之中。如果猫走近来，它会坐在我的大腿上。我希望能听到猫的呼噜声，而不是计算机的风扇声。 2:12 CA: 所以基于这样的工作方式，是非常惊人的，你能够运营如此庞大的技术帝国——它是一个帝国——所以这就是一个惊人的证明，关于开源的力量。

## 话题一：Linux

2:24 跟我们说说你是怎么理解开源 ？ 开源是怎样引导Linux开发的？

2:32 LT: 我的意思是说，我依然一个人工作。真的－我一个人在我的家里，通常是穿着睡衣。当摄影社出现时，我得打扮，然后穿上衣服。 2:42 (笑)

2:44 其实这就是我过去工作时的情况。我的意思是说，我开启Linux的时候也是这样的。我开启Linux的时候，它并不是一个团队合作的项目。它只是作为众多的、为我自己服务的一系列项目之一，在一定程度上是因为我需要最终成果，但是更多的原因在于我只是喜欢编程而已。所以它的目标，25年之后，我们依然没有到达。事实上，我只是为自己在寻找一个项目，这里无关开源，事实上，我完全没有这个目标。

3:20 接下来发生的事……项目成长起来，变成了某些你希望向人们炫耀的事情。事实上，比这还要复杂，“哦，快来看我做了什么！” 请相信我——它当时并没有那么美好。在那个阶段，它的源码是开放的，但是背后没有使用一种开源方法，类似于我们今天改进项目的手段。它更类似于，“看呐，我已经在上面工作半年了，我希望能收到一些意见。”

3:59 这时另外一些人开始跟我接洽。在赫尔辛基大学，我有一个朋友，来自开源的一个分支——它后来被称为“自由软件”——确切的说，他介绍了一种概念给我，听我说，你能使用流行的开源许可证。对此，我想了一会儿。我确实对商业的因素参与进来感到担忧。我的意思是说，当人们开始参与的时候，这是一个值得忧虑的事情，他们担心一些人趁机捣乱他们的工作，不是吗？ 于是我决定了，“这到底是怎么回事” －－ 4:43 CA: 与此同时，正如你所想的那样，有些人贡献了一些代码，“噢，这太有趣了，我从来没有想过可以这样。这样竟然可以让项目获得改进。”

![操作系统简谱 21岁的Linus在Minux上写出了Linux的0.1版 一系列商业公司在开源项目的基础上赚了大钱](http://upload-images.jianshu.io/upload_images/1037849-fd0f61323268d8dc.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

4:52 LT: 开始的时候，人们并不是贡献代码，人们更多的是贡献想法。事实上也有一些人看了一眼你的项目——并且我敢肯定别的一些事也是如此，但是关于代码部分千真万确——有一些人对你的代码感兴趣，到一定程度上就会给你反馈信息，给你提出想法。对我来说这一点至关重要。 5:16 那时我21岁，因此我很年轻，但是我已经用一半的人生来编程了，本质上说。 在此之前完成的每一个项目都是出于个人目的，这完全出乎我的意料——当人们开始评论、开始对你的代码提供反馈信息的时候。甚至于当他们开始反馈代码，那时我想，作为最重大时刻之一，我说，“我爱其他人！” 不要误会——我其实不是一个人。 5:45 (笑) 5:48 我真的不是爱其他人— 5:51 (笑) 5:52 但是我爱计算机，我喜欢和其他人通过电子邮件交流，因为这种方法可以为你提供某种缓冲。但是我也喜欢那些发表评论、在我的项目中获益的人。Linux项目使得这些事数不胜数。 6:08 所以是否有一个时刻，在项目构建过程中你发现，它突然开始失控了，这时你想，“稍等下，实际上这可能关系重大，不仅仅是作为个人项目获得好的反馈，而是在整个技术世界出现一种爆炸式的发展” ？ 6:24 LT: 事实并非如此。我是说，对我来说这不是一个大问题，真正的大问题不是说Linux变得庞大，而是它变小了。对我来说，项目变得庞大意味着不只是我一个人，而是10个，或者100个人参与进来——那确实变大了。然后所有的其它事情都变得缓慢了。从100人发展到一百万人并不是一笔大买卖——对我来说。好吧，我的意思是，也许对你来说是—— 6:50 (笑) 6:51 如果你希望出售你的成果，它就是一笔大买卖——不要误会我的意思。 如果你对技术感兴趣，对这个项目感兴趣，大部分的工作其实是发展社区。当社区逐渐成长起来，就不像只有我一个人的时候了，“喔，它起飞了！” 因为它——我的意思是——相对而言，发展社区需要很长的时间。

## 话题二：Git

7:12 CA: 我访谈过的所有技术专家们，无一例外都极力赞扬你，你改变了他们的工作方式。不仅仅是Linux，还有Git，用于软件开发的管理系统。简单跟我们谈谈Git，你在这个项目里的角色是怎样的。

![Git协作模式](http://upload-images.jianshu.io/upload_images/1037849-73efc3de7211a488.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

7:29 LT：我们曾经遇到的问题之一就是，刚开始的时候，当你的项目的参与人数从10个或者100个增长到10，000个的时候，——我的意思是，我们刚刚在内核项目上就遇到了这种情况，每一个单独的发行版本都有1000人参与，每两、三个月就要发布更新。他们中的许多人并不需要做很多工作。许多人只是做了非常、非常小的变更。

![版本控制系统演进](http://upload-images.jianshu.io/upload_images/1037849-02fdccf360c91750.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

8:00 但是为了维持这个过程，你不得不维护大规模的变更。我们经历了一个非常痛苦的过程。而且这还只是整个项目中，源代码维护的部分。CVS曾经是用来管理代码最通用的工具之一，我非常讨厌CVS，并且拒绝使用它，每一个体验过其它纯粹、有趣工具的人都讨厌它。 8:30 CA: (笑) 8:31 LT：我们曾经身处困境之中，当时有成千上万的人希望参与到项目里面来，但是在很多情况下，我自己就是临界点，有了Git之后我就可以突破这个临界点，我可以和成千上万的人一起工作。 8:46 所以 Git 是我的第二个大项目，而它只是被创造用来服务我自己维护第一个大项目。我其实就是这样工作的。我编程不是为了——好吧，我编程只是为了有趣——但是我希望能为一些有意义的事编程，我完成的每一个独立的项目，都已经变成某些我需要的—— 9:08 CA: 实际上，Linux 和 Git 这类东西的出现只是一个意外结果，你其实并没有希望它们能为这么多人服务。 9:17 LT: 当然。是的。 9:18 (满堂欢笑) 9:19 CA: 这很惊人。 LT: 是的。 9:21 (鼓掌)

## 话题三：忆童年

9:22 到目前为止，作为曾经改变技术形态的人，你已经不止一次而是两次，我们试图理解你什么能够做到这一点。你给我们提供了一些线索，但是……这里有一张你小时候的照片，拿着一个魔方。你曾提到说，在只有10或11岁的时候，你已经成为程序员，相当于你人生的一半。

![魔方少年](http://upload-images.jianshu.io/upload_images/1037849-cb00746703216456.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

9:42 你是那种计算机天才吗，正如你所知，übernerd，你是学校里的全能明星吗？你小时候是什么样的？

9:51 LT: 呃，我想我属于那种典型的书呆子。我的意思是，我那时不是一个喜欢社交的人。那是比我小的兄弟。我可以肯定地说，那时我对魔方的兴趣比对小兄弟大。 10:05 (满堂欢笑)

10:06 我更小的妹妹，没有在这张照片上，当我们召开家庭会议的时候——那不是一个庞大的家庭，但是我有几个兄弟姐妹，——她会提前完成家庭作业。例如，当我进入房间之前她会说，“好的。那是so-and-so …” 因为我不是——我是一个极客。我沉浸在计算机，沉浸在数学，沉浸在物理学。我擅长这些。我不认为自己是故意显得与众不同。很显然，我妹妹说过，我最大的异常特征是我从不参与众人的行动。 10:46 CA:好吧，那我们就来讨论这点，因为这很有趣。你不从众。所以这不是关乎成为一个极客，也不关乎成为一个聪明人，这是关于固执？ 10:56 LT: 那确实关于固执。那关乎，就像，开始做某些事情的时候，并不会说，“好吧，让我们来做些别的事——看，当当当当！” 11:09 我想在我人生中的其它部分也是如此。我曾经在硅谷生活了7年多。在硅谷，我为同一家公司全职工作。这是难以置信的。这不是硅谷的工作方式。硅谷的共识是人们需要在不同的职位上跳来跳去。但那不是我这样的人的风格。 11:36 CA:但是实际在Linux的开发过程中，固执的性格有时也会让你和其他人的关系陷入紧张状态。谈谈这点吧。这是维持构建质量的必要因素吗？你是如何来判断事态发展？ 11:53 LT:我不确认它是否完全必要。回到刚才说到的 “我不是一个善于社交的人，”——有时候我也……我这样说吧，有时“我的浅薄”会影响其他人的感受，有时你刚才所说的情况会伤害其他人。并且，我并不以此为荣。 12:17 (鼓掌)

12:18 但是，与此同时，有些人告诉我说我应该更友好一些。然后我试图向他们解释说，也许你们是友好的，也许你应该更好斗些，他们和我一样变得不友好了。 12:37 (满堂欢笑) 12:39 我试图表达的想法是大家是不一样的。我不是一个社交达人；这不是我特别为之自豪的事情，但这是我的一部分。并且我真心觉得，开源理念之一就是非常鼓励不同的人一起合作。我们不见得需要互相喜欢对方——并且有时我们真心互相瞧不上。真的——我是说，有非常、非常热烈的争论。 但是你能够，事实也确是如此，你会发现——你不必特意消除分歧，这只是因为你们感兴趣的事情不同。 13:12 回到我早期说过的观点：我担心商业人士会利用你的工作，它已经发生，并且很快会发生，那些商业人士是非常、非常可爱的人。他们完成了我完全不感兴趣的事情，他们完全是基于不同的目标。他们使用开源的方式只是我刚好不想走的路。但是因为项目是开源的，所以商业人士可以那样做，这实际上使得大家可以完美并存。 13:41 事实上，我认为它们的工作方式相同。你需要有善于和人沟通的交流者，像那些热情和友善的人—— 13:49 (满堂欢笑) 13:51 我真想把你拉进开源社区。但不是每个人都做得到。那样就不是我了。我关心技术。也有些人关心图形界面。我不会去做图形界面来拯救我的人生。我是说，如果我被困在岛屿上，同时唯一的脱困方式是做一个漂亮的图形界面，那我肯定会死在那儿的。 14:11(满堂欢笑) （哈哈哈哈哈哈） 14:12 需要有不同风格的人，我也不是为了找借口，我只是尝试做一些解释。

## 话题四：论品味

14:17 CA: 当我们上周交流的时候，你谈到自己有一些别的特质，有些我发现真的非常有趣。你管它叫品味。 14:24 我这里刚刚拿到一些图片。我想这是一个例子，关于在代码领域缺乏好的品位，这个品位更好，那个能立刻看出来。这两个代码之间有什么区别？

```
void remove_list_entry(entry)
{
    prev = NULL;
    walk = head;

    // Walk the list
    while (walk != entry){
        prev = walk;
        walk = walk->next;
    }

    //Remove the entry by updating the
    //head or the previous entry

    if(!prev)
        head = entry->next;
    else
        prev->next = entry->next;
}
```

```
void remove_list_entry(entry)
{
    //The "indirect" pointer points to the
    // *address* of the thing we'll update

    indirect = &head;

    //Walk the list,looking for the thing that
    //points to the entry we want to remove

    while ((*indirect) != entry)
        indirect = &(*indirect)->next;

    // .. and just remove it
        *indirect = entry->next
}
```

14:39 LT: 这个——这里有多少人真的写过代码？ 14:44 CA: 天哪！ 14:46 LT: 我向你说明一下，每一个举起手的人，已经完成的动作，我们称之为单向链表。它的调用——这里，第一种方式不代表好的品位，当你开始编程的时候，完成动作是基于它被告知如何做。而且，你不得不去理解这段代码。 15:03 对我来说最有趣的部分是最后的if语句。因为发生的事情在一个单向链表里面——这是试图从列表里移除一个已经存在的实体——第一个或者中间的实体，这里是不同的。因为如果它是第一个实体，你不得不将指针移到第一个。如果它在中间，你不得不将指针移动到它的前一个实体。所以它们是两种完全不同的情况。

15:32 CA: 所以那个更好。 15:33 LT: 这个更好。它没有这个if语句。其实它不是真的很要紧——我不期望你能理解为什么它没有这个if语句，但是我希望你能理解，当碰到一个问题，通过不同的方式可以被重写，以至于一个特殊的情形被移除，然后变成了一个常规的的情形。这就是好的代码。但这是简单的代码。这是CS 101。这些不是重点——虽然，细节非常重要。 16:00 对我而言，我真正希望能在一起工作的人，他们的标志是有好的品位，怎么说呢。。。我举这个其实不相关的、愚蠢的例子，因为它太小了。好的品位要比这些范围大得多。好的品位是关于真的能看见大格局，并且本能地知道做事情的正确方式。 16:23 CA: 好的，所以我们把这些卡片都放在一起。你有品位，在某种程度上，这对于软件界人士意义深刻。你是—— 16:32 (满堂欢笑) 16:34 LT: 我想它对这里的一些人意义深刻。

## 话题五：论远见

16:38 CA: 你是一个非常聪明的计算机程序员，同时你极端地固执。但肯定有一些事情除外。我是说，你已经改变了未来。你一定有能力看到那些未来的宏伟蓝图。你是一个有远见的人，对吗？ 16:52 LT: 实际上，在TED的最近两天，我感觉略有不适，因为这里有很多眼睛盯着你，不是吗？其实我不是一个有远见的人。我甚至没有一个5年计划。我是一名工程师。并且我觉得它真的——我是说——我非常开心和所有人一起，盯着云彩和星星，说，“我想要去那儿。” 但是我看了看地面，我只想去修复那些坑，它们就在我眼前，我快要掉下去了。我就是这样的人。 17:21(欢呼) 17:22(鼓掌)

## 话题六：评论特斯拉和爱迪生

17:24 CA: 上周我们谈到的两个家伙。你如何评价他们？ 17:31 LT: 好的，其实这是科技界的老段子，对比特斯拉和爱迪生，特斯拉是有远见的科学家、有疯狂创意的人。人们爱特斯拉。我是说，特别那些以特斯拉冠名公司的人们。 17:47 (满堂欢笑) 17:50 另外一个人是爱迪生，是一个常常被批评为乏味的人，并且——我的意思是，他最有名的格言，“天才等于百分之一的灵感加上百分之九十九的汗水。” 而且我是属于爱迪生阵营的，尽管人们不是一贯都喜欢他。因为如果你的确对比这两个人，特斯拉在那个时代抓住了一些创意，但是，是谁实际上改变了这个世界？ 爱迪生也许不是一个很好的人，他做过一系列事情——他也许没有那么高智商，也不够有远见。但是我想我更像爱迪生而不是特斯拉。 18:36 CA: 我们TED本周的主题是梦想——宏伟的，醒目的，大胆的梦想。你还真是这些梦想的解毒药。（药不能停啊，哈哈） 18:42 LT: 我正在试图给这些梦想降降温，是的。 18:44 CA: 非常好。 18:45 (满堂欢笑) 我们热烈欢迎你，热烈欢迎你。

## 话题七：开源&商业&未来

18:50 类似Google和许多其它一些公司，利用你的软件，据估算，大概赚了 10亿美元。这惹你生气了吗？ 18:56 LT: 不。不，它没有惹我生气，有几个原因。其中之一是，我干得很好。我真的干得很好。 19:03 但是其它原因是——我是说，如果没有全力投入到开源，并且真得放开手，Linux永远也不可能是现在的样子。并且它带来的一些经历我真的不喜欢，如公众谈话，但是与此同时，这也是一种经验。相信我。因此，有一系列事情的发生是我保持快乐，我想我做出了正确的选择。

19:29 CA: 开源的理念——就是这些——现在开源的理念在全世界都充分发挥作用了吗，或者说它还可以做得更多，还有哪些事是可以做的？ 19:43 LT: 关于这方面，我有两个想法。时至今日，开源机制能够运转良好，其中一个缘故是代码可以将所有的事情都转化为黑和白。通常这样利于作出决定，这样做是正确地，这样做是不好的。代码要么执行，要么不执行，因此意味着更少的争议空间。尽管我们有许多争议，对吗？在很多其它领域——我是说，人们讨论的关于开明政治之类的事情——有时就很难说得这么简单，是的，你也能将同样的原则应用到其它领域的一些地方，因为黑色和白色一起不只是变成灰色，而是很多不同的颜色。 20:35 很显然，开源理念在科学领域已经掀起一场复古运动。科学一开始就是这样的。但是后来科学变得非常封闭，伴随着非常昂贵的期刊以及其它一些东西。但是开源理念在科学领域掀起了一场复古运动，比如arXiv和open journals（开放、自由的学术成果发布平台）。Wikipedia 也改变了这个世界。还有其它的很多案例，我相信将来还会有更多。 21:04 CA:但是你不是一个有远见的人，所以还轮不到你来给它们命名。 21:08 LT: 不是的。 21:09 (满堂欢笑) 21:10 该轮到你们来创造它，对吗？ 21:12 CA: 的确如此 21:13 Linus Torvalds, 感谢你对 Linux ，对互联网的贡献，感谢你对Android的贡献。 21:19 感谢你来到TED ，感谢你的坦率，感谢你的真诚。 21:22 LT: 谢谢。 21:23 (鼓掌)

![](http://upload-images.jianshu.io/upload_images/1037849-6f751be9e2691980.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

![](http://upload-images.jianshu.io/upload_images/1037849-f85b2f828b230ce6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

![linus-talk-1.png](http://upload-images.jianshu.io/upload_images/1037849-15bccae3cb178ad2.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ![linus-talk-2.png](http://upload-images.jianshu.io/upload_images/1037849-24fa3cb303173ee5.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ![linus-talk-3.png](http://upload-images.jianshu.io/upload_images/1037849-5370cbadd643414e.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ![linus-talk-4.png](http://upload-images.jianshu.io/upload_images/1037849-166b2e711b5be2a1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ![linus-talk-5.png](http://upload-images.jianshu.io/upload_images/1037849-90c6bae3e006eafa.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

&#x20;更多精彩内容，请扫码关注公众号：@睿哥杂货铺\
[RSS订阅 RiboseYim](https://riboseyim.github.io/?product=ebook\&id=linuxperfmaster)
