# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://riboseyim.gitbook.io/perf/linus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
