Linus Torvalds反映了Linux最早的新面试

2021-05-05 21:19:22

三十年前,当他第一次发布Linux内核时,林斯托瓦尔德是赫尔辛基大学的21岁学生。他的宣布开始了,“我正在做(免费)操作系统(只是一个爱好,赢得了' t为大而专业......)”。三十年后,前500强超级计算机全部运行Linux,占所有智能手机的70%以上。 Linux显然是大而专业的。

三十年来,Linus Torvalds领导了Linux内核开发,鼓励了无数的其他开发人员和开源项目。 2005年,Linus还创建了Git来帮助管理内核开发过程,它已成为最受欢迎的版本控制系统,由无数开源和专有项目信赖。

接下来的面试继续推出我们的开放领导者的系列。 Linus Torvalds通过电子邮件回复了我们的问题,反映了多年来从领导大型开源项目的多年来学到了什么。在第一个部分中,我们专注于Linux内核开发和Git。 " [Linux]是一个不在一些大型梦想的个人项目,以创建一个新的操作系统,"林斯解释说,"但最初只是试图从我的新PC硬件中学到外面的情况下,从我那里流出了那种。"

关于创建Git,然后将其递送到Junio Hamano,提高和维护,Linus指出,"我不想要求宣称编程是一件艺术,因为它真的大多是关于'良好的工程'我是托马斯爱迪生的一个大信徒; s' s'一个百分比的灵感和百分之九十九的汗水' Mantra:它几乎所有关于小细节和日常咕噜咕噜的工作。但偶尔会有'灵感'部分,'良好的味道'关于更多的事情只是解决一些问题 - 解决干净性和很好,是的,也是美妙的。和Junio有那个'良好的口味和#39;。"

阅读两部分面试中的第一个。下周检查第二部分,Linus探讨了Linux内核掌舵的三十年中获得的课程和见解。

Jeremy Andrews:Linux无处不在,这是整个开源世界的灵感。当然,它不是那样的。 1991年,您最着名地发布了Linux内核,并在Comp.OS.Minix上发布了一个谦虚的Usenet发布。十年后,你写了一个名为&#34的有趣和个人书籍;只是为了好玩:偶然革命的故事"探索大部分历史。今年8月,Linux将庆祝其30周年!这令人惊讶,祝贺!在这次旅程中的哪一点,你意识到你做了什么,那个Linux是如此超过"只是一个爱好&#34 ;?

Linus Torvalds:这可能听起来有点荒谬,但实际上发生了很早。已经延迟了,' 91(当然,早期' 92)Linux已经比我预期的要大得多。

是的,考虑到这一点,可能只有几百用户(甚至"用户"可能太强壮 - 人们正在滋补它),它可能听起来很奇怪,考虑到Linux如何结束增长更大。但是,在很多方面对我而言,大拐点是我意识到别人实际使用它,并对它感兴趣,它开始拥有自己的生活。人们开始发送补丁,系统实际上是比我最初确实所设想的更重要的事情。

我认为x11在4月份的一段时间移植到Linux和#39; 92(不要把我的单词拿出来的日期 - 它' Sa Loong Timea途),这是突然存在的另一个大步一个GUI和全新的功能。

把这一切都在视角下 - 我真的没有从任何高期望计划开始。这是一个不在一些大型梦想中创造一个新的操作系统的个人项目,但最初只是试图学习新的PC硬件的外出,从而从我这里随之而来的。

所以当我发布的第一个版本时,它真的是一个"看看我做了什么"我希望我希望其他人会发现它有趣,但它不是真的和可用的操作系统。它更像是一个概念证据,只是一个我在那个时候工作了几个月的个人项目。

从那里开始,"个人项目"作为其他人使用它的东西,发送反馈(和错误报告)和偶尔的补丁,这对我来说是大的改变。

只是为了给出一个真正基础的东西的例子:原始版权许可是&#34的东西;你可以以源形式分发这个,但不是金钱"

那是因为对我来说,其中一个问题已经是商业Unix昂贵(好吧,对于一名贫穷的学生在新的电脑上度过了新的电脑,所以对我来说很重要的是源代码可用(以便人们可以用它修补),我希望它能够对像我一样的人开放,谁可以' t提供替代方案。

我将许可证更加迟到了,' 91(或者可能很早)到gplv2,因为有人想要在外部的unix用户组上分发它,但希望至少收回流版的成本及其复制时间。而且我意识到这显然是完全合理的,并且重要的事情是' t the"没有钱"但是"来源需要公开可用"部分。

最终结果:人们不仅在UNIX用户组会议上分发了它,但在几个月内发生了SLS和Slackware等早期软盘分布。

与最初的真正基本变化相比,其他一切都是"增量"当然,一些增量非常大(IBM即将到来,Oracle DB被移植,红帽IPO,Android在手机等上变大),但他们仍然比早期的初始&#34更少的个人革命性。 39;甚至知道正在使用Linux''

JA:你有没有后悔选择许可证,或者其他人和公司的钱有多少钱取消了你创造的东西?

首先,我做得很好。我不是疯狂丰富的,但我是一个付费的软件工程师,在自己的时间表上做我喜欢做的事情。我没有伤害。

但同样重要的是,我100%相信许可证是Linux(和Git的成功的重要组成部分)。当他们知道每个人都有平等的权利时,我认为所有涉及的人都最终得到了更快乐的,并且没有人特别对许可。

这些'这是一个公平的这些"双重许可证"原主保留商业许可证的项目("如果您支付美国许可费和#34;),另一方面,项目也可以在像GPL开放的类似内容源案例。

我认为它真的很难在那种情况下建立一个社区,因为开源方始终知道它' s"第二级"此外,它导致了很多许可文书工作,以便始终保留其特殊权利。所以它为项目增加了很多摩擦。

另一方面,我看到了很多BSD(或麻省理工学院或类似的)许可的开源项目,只要片段就足够大,可以在商业上是商业的,而且涉及的公司不可避免地决定转动自己的零件所有权。

所以我认为gplv2几乎是&#34的完美平衡;每个人都在相同的规则下工作,并且仍然要求人们回馈社区("山雀") 。每个人都知道所涉及的所有其他人都受到同一规则的束缚,所以它''这一切都非常公平和公平。

当然,另一部分是你也会弄清楚你的东西。当然,你可以尝试"海岸"在项目中,只是一个用户,而且它好。但如果你这样做,你也没有控制这个项目。这也可以完全很好,如果你真的只需要一个基本的操作系统,而Linux已经完成了你想要的一切。但如果您有特殊要求,则真正影响项目的唯一方法就是参与。

这让每个人都诚实。包括我。任何人都可以攻击这个项目并走自己的方式,并说"再见linus,我拿走了我的Linux&#34版本的维护。我' m"特殊"只因为 - 只要 - 人们相信我做得好。而且它究竟应该是如何的。

那和#34;任何人都可以维护自己的版本"担心一些人关于gplv2,但我真的认为它和#39; s的力量,而不是弱点。我认为它实际上是什么导致Linux避免碎片的东西:每个人都可以制作自己的项目,而且#39;好吧。事实上,这是&#34的核心设计原则之一; git" - 存储库的每个克隆都是它自己的小叉子,人(和公司)分叉他们自己的版本是所有发展如何完成的。

所以出叉ISN' t一个问题,只要你可以合并良好的部分。和#39; gplv2进来的地方。叉子的权利和自己的东西很重要,但硬币的另一面同样重要 - 当叉子被证明时总是加入回来的权利成功的。

另一个问题是您真的希望拥有支持该工作流程的工具,但您也必须具有思维方式来支持它。加入叉子的大障碍不仅仅是许可,而且还是"坏血和#34;如果叉子从非常敌对的原因开始,那么两个叉子可以很难合并 - 不适用于许可或技术原因,但因为叉子如此擅长。再次,我认为Linux避免了,主要是因为我们' ve总是看到叉子的东西,然后'在一些工作表明自己成功时尝试合并。

所以这个答案有点在一个切线上,但我认为它和#39;是一个重要的一个 - 我非常遗憾的是许可的选择,因为我真的认为gplv2是为什么的重要组成部分Linux成功了。

金钱真的是'这很棒的动机。它不会把人拉在一起。有一个共同的项目,真的觉得你真的可以成为那个项目的完整伙伴,这是一个激励人们的人,我想。

JA:这些日子当人们在GPLv2下发布源代码时,他们通常会因为Linux而这样做。您是如何找到许可证的,以及您在审查其他现有许可证的时间和努力?

LT:后来,人们仍然有一个相当大的火焰战争关于BSD与GPL(我认为部分地推动了RMS如何让RMS真正有欺骗人民攻击),所以我通过各种USENET看到了一些许可讨论新闻组我正在阅读(像comp.arch,comp.os.minix等的东西。

但这两种主要原因可能只是GCC - 这在获得Linux的情况下是非常有限的,因为我绝对需要C编译器 - 和Lars Wirzenius(" Lasu"),谁是其他瑞典语的CS大学的学生在我的一年(瑞典是芬兰的一个相当小的少数民族)。

对我来说,GPLv2尚未选择一些巨大的政治问题,这主要是我原始许可所以ad-hoc并需要更新的事实,我感谢gcc,GPLv2匹配了我的& #34;你必须给出来源回归"期望。

所以而不是弥补另一个许可证(或者只是编辑原来的许可 - 只是删除"没有钱可以改变手和#34;条款可能是一个选择),我想选择人们已经知道的一个人,而且有一些律师参与其中。

JA:你的典型日子是什么样的?花费多少钱写作代码,与审查代码,与读写电子邮件?你如何平衡个人生活并在Linux内核上工作?

LT:这几天我写了很少的代码,哈登' t很长一段时间。当我做编写代码时,最常见的情况是有一些关于一些特定问题的讨论,我做了改变并将它们作为补丁发送,主要是对建议解决方案的解释。

换句话说,我写的大多数代码都是一个"看,我们怎么做这种方式"修补程序是一个非常具体的例子。它'很容易被陷入困境,陷入了一些关于如何解决的东西的理论高级讨论,我发现描述解决方案的最佳方式是只是写代码片段 - 也许不是整个事情 - 并使其非常具体。

因为我所有的真正工作都在阅读和写作电子邮件上。它主要是关于沟通,而不是编码的。事实上,我认为这种与记者和技术博主等的沟通,从实际上是我工作日的一部分 - 它可能会比实际技术讨论更低,但我确实花费了相当多的时间。

是的,我花时间在代码点评中,但诚实地,当我得到拉出请求时,通常有问题的代码已经应该已经被多个人审查了。因此,虽然我仍然看补丁,但我实际上倾向于看起来更符合解释,以及补丁如何传给我的历史。与人民我'甚至那样,我曾经工作过长,我也是这样的:他们是他们子系统的维护者,我不是在那里微观管理他们的工作。

所以,经常,我的主要工作是"是在那里",是收集点,是管理和执行发布的人。换句话说,我的工作通常更多地涉及维护过程而不是低级代码。

JA:你的工作环境是什么样的?例如,您更喜欢黑暗的房间,没有分心,还是有一个观点的房间?你倾向于在沉默中工作,还是在听音乐时?您通常使用什么样的硬件?您是否在终端中查看vi或vancy ide?而且,您是否有优先的Linux发行版作品?

LT:我的房间不是"黑暗"但我确实在桌子旁边的窗户上有百叶窗关闭,因为我不希望明亮的阳光(不是那个阳光&#39必须在俄勒冈州的一年中非常普遍;)。所以没有观点,只是一个(凌乱的)桌子,带双4K监视器和桌面下的功能强大的台式电脑。还有几个坐在测试的笔记本电脑,而且在路上的时候。

我想默默地工作。我曾经讨厌机械磁盘驱动器的滴答 - 幸福地长期降级到垃圾桶,因为我现在已经过了几十多年了,并且嘈杂的CPU风扇也是不可接受的。

和它'所有在传统终端完成,虽然我不使用' vi'我使用这个叫做"微软与GNU Emacs无关,除了一些关键绑定相似之外,它与GNU Emacs绝对无关。当我是一个小伙子,我曾经在赫尔辛基大学习惯了它,我没有能够从中用它来烦恼,虽然我怀疑我会很快就足够了。几年前,我攻击了(一个非常有限的)UTF-8支持它,但它真的展示了它的年龄,并展示了在80' s和版本中写的所有迹象使用是一个叉子'自90年代中期以来一直维持。

赫尔辛基大学使用它,因为它在DOS,VAX / VM和UNIX上工作,这就是我被引入的原因。现在我的手指是硬件的。我真的需要切换到实际维护的东西,并正确做UTF-8。可能' nano'但是我的喧嚣的历史垃圾似乎几乎不够好,我从来没有真正被迫教导我的旧手指新技巧。

因此,我的桌面环境非常简单:打开几个文本终端,以及带电子邮件的Web浏览器(以及其他几个选项卡,主要是新闻和技术站点)。我想拥有相当数量的桌面空间,因为我曾经拥有相当大的终端窗口(100x40是我的默认启动大小),并且我并排打开多个终端。因此双4K显示器。

我在所有的机器上使用Fedora,不是因为它'必然"首选"但是因为它' m y' m y' m。我不会深深地关心分发 - 对我来说,它主要是一种在机器上安装的Linux并获得所有工具设置的方法,这样我就可以替换内核并正常工作。

JA:Linux内核邮件列表是内核开发的局面,流量极高。你如何跟上这么多的电子邮件?您是否探索了邮件列表之外的其他解决方案以进行协作和通信,或者是否有关于您所做的内容非常完美的简单邮件列表

LT:哦,我不要直接阅读内核邮件列表,哈登' t年。它'太多了。

否,内核邮件列表的点基本上得到了CC' D在所有讨论中(井 - 其中一个内核邮件列表,有很多 - 然后传统的LKML列表是倒车ISN' t一些有针对性的列表)。这样,当一个新人带入讨论时,他们可以通过查看内核邮件列表来看到历史和背景。

所以我曾经做过的是被订阅列表,但是有我没有的所有LKML电子邮件,即我在个人存档的情况下,所以我默认没有看到它,所以我&#39没有看到它。但是,当一些问题升级到我时,所有这些讨论都会出现,因为它在我的电子邮件中,直到需要在我的收件箱中。

这些天,我实际上使用了lore.kernel.org功能,因为它很好地工作,我们有一些其他内置的工具。因此,而不是在我自己的邮件档案中自动存档,而讨论结束了这种方式可见。但基本工作流程是概念上的。

我确实获得了相当数量的电子邮件,显然 - 但在多个方面,多年来一直越来越好,而不是更糟糕的事情。这是一个很大的部分是git,内核发布流程的工作原理:我们曾经有更多的代码流和工具问题。当我们仍然处理巨大的补丁炸弹时,我的电子邮件情况实际上差不多,我们仍然处理巨大的补丁炸弹,我们在开发流程中具有严重的可扩展性问题。

邮件列表(围绕它的工具)模型确实工作得很好。那个'除了电子邮件(个人对人和邮件列表)之外,除了电子邮件(邮件列表)之外,还没有使用其他通信方式传统的一个)。虽然这从来没有是我的事情,但它显然有些人喜欢用于头脑风暴。但那"邮寄列表作为存档"模型很好地工作,与整个&#34无缝地工作;在开发人员之间发送补丁作为电子邮件"和#34;发送问题报告作为电子邮件"

因此,电子邮件仍然是主要的通信渠道,并且可以轻松讨论技术问题,嵌入在同一媒体中的补丁。 它在时区工作,当每个人都如此展开地理位置时,这非常重要。 JA:我遵循内核发展大约十年,在内核上博客,并在进化时写下新功能。 我在释放3.0内核时停止了,这是8年的2.6.x版本。 自3.0释放以来,是否有可能总结在内核中发生的一些更有趣的事情? LT:嘿。 那么很久以前那就是我 ......