Linus Torvalds: The mind behind Linux

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

开场:神之总部

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

God's bedroom and office

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版
一系列商业公司在开源项目的基础上赚了大钱

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协作模式

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

版本控制系统演进

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岁的时候,你已经成为程序员,相当于你人生的一半。

魔方少年

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 (鼓掌)

linus-talk-1.png linus-talk-2.png linus-talk-3.png linus-talk-4.png linus-talk-5.png


更多精彩内容,请扫码关注公众号:@睿哥杂货铺
RSS订阅 RiboseYim

results matching ""

    No results matching ""