Skip to main content

25 年后再次采访 Linux 之父

编者按:1994 年,《Linux Journal》创刊。当时杂志的特写文章是杂志的第一位发行人 Robert Young(后来与人联合创办了Red Hat)对 Linus Torvalds(Linux 内核的作者)的采访。25 年之后,两人再度坐到了一起,就 Linus 本人的近况,Linux 的成功之道以及未来之路,自己的工作哲学,对社交媒体的看法,对网络喷子和匿名性的态度,对年轻开发者的建议等进行了推心置腹的交流。
Robert Young 与 Linus Torvalds 的访谈录
Robert Young:很高兴能有个借口跟你取得联系。你跟家人都挺好的吧?你的孩子现在应该都上大学了。我和 Nancy 还有我们的 3 个女儿都挺好。我和 Marc 创办 Red Hat 的时候老大 Zoe 11 岁,现在她准备有第二个孩子了——也就是说,我现在都当爷爷了。
Linus Torvalds:其实我的孩子都还没大学毕业,不过 Patricia(老大)今年5月会毕业。Celeste(最小的)在读高三,所以再过半年我们就成空巢老人了。
3 个孩子都还不错,当外公我想/希望是几年后的事情了。
Bob:1994 年我第一次采访你时,你会不会认为到 2019 年自己还会维护这个东西?
Linus:我想 1994 年的时候自己就已经感到惊讶了,想不到我的最新项目不仅仅又是一个“做点有趣的直到它做了我需要的一切然后再找点别的去做”这样的项目。当然,那时候还处在开发相当早期的阶段,但那已经是我做了几年的项目了,并且已经有了自己的生命。
所以我想我试图要表达的是,我未必会预料到会再做它几十年,但它已经迈过了一道坎,成为我生命当中一个相当重要的东西。其实我从来都没有给 Linux 制订过长期计划,我做事都是一天天来的,而不是考虑 5 年或者 10 年后的事情。
Bob:关于实现你的梦想的危险性,你过去有一句名言——在被问到对 Linux 的未来目标是什么时,你经常开玩笑说是“统治世界”。现在你——还有更广大的开源/自由软件圈——已经实现了这个目标,接下来呢?
Linus:呃,我很久以前就不开“统治世界”的玩笑了,因为随着时间推移这个看起来不怎么像是玩笑了。但它一直都是个玩笑,这也不是我(或者任何其他开发者)做所做的事情的原因。那个原因永远都只是为了做出更好的技术,去发掘有趣的挑战。
其实在核心层面没有一样东西改变。所有的细节都变了——硬件已经很不一样,我们的问题已经很不一样,我的角色已经很不一样。但“做得更好,发现有趣的挑战”依旧不变。
比如说,1994 年那时,我基本上是个开发者。当然,我也是首席维护者,但虽说我花了很多时间在合并补丁上,但我基本上都是写自己的代码。现在我很少写很多代码了,而且我写的往往是伪代码或者样例补丁,然后发邮件给真正的开发者。我曾经对把自己叫做“经理”犹豫过,因为其实我并没有做过年度考评或者预算之类的事(感谢上帝!),但我绝对更像是技术领导而不是实际的程序员,过去许多年里一直都是这样。
所以真正重要的东西没有变过,但跟 1994 年相比,我的角色以及所有那些细节,显然已经非常非常不一样了。
Bob:再过 25 年,你以及这个代码库会去到哪里?
Linus:呃,那时候我都 75 岁了,我怀疑到时候还能不能每天都这么投入。但考虑到我一直做这个都快 30 年了,也许我届时还会跟进下去。
好消息是我们的确有一个非常坚实的开发者群体,我不担心“Linus 会走向何方”之类的问题。当然,很长一段时间以来,大家一直都在讨论核心开发者怎么变得越来越老的问题,但这其实不是因为我们找不到任何新人,而完全是因为我们依然有很多做了很久的人还在做,并且仍然享受其中。
我曾以为有朝一日会有个令人兴奋的全新 OS 出现,取代 Linux(嘿,1994 年那时候我大概仍然认为也许 Hurd 会做到这一点!),但我们不仅做这个做了很长一段时间,而且仍然做得非常好,我也意识到开发新的操作系统要比我想象的难多了。这的确需要很多人付出很多努力,而 Linux——或者更广大的开源——的优势,正在于你可以站在别人的肩膀上做开发。
所以,除非技术版图出现了翻天覆地的变化,否则的话我认为 Linux 再过 25 年依然会做得相当好。这不是因为代码本身的任何细节怎样,而完全是因为其开发模式和问题空间使然。
到那时候我可能干不动了,而且很多代码都会被升级替换,但我认为这个项目仍将保留下来。
Bob:这些年来为了让你满意,你和内核团队是不是一直在更新内核代码?已有 25 年历史的不断扩张的 Linux 代码库是否存在重写的需要或者压力?是不是可以用比 C 语言“现代”一点的语言来重写?
Linus:这些年来我们已经对大多数子系统进行了很多的大规模重写——当然不是一次性地——很多代码块最终都已经成为了没人再想去修改的了(通常是因为那是过时硬件的驱动程序,已经很少人用,但我们还将支持)。不过,整个内核有一个大一统的代码库的好处之一,是当我们需要做出一些大的改变时,我们就能做到。可能有一些内核之外的驱动程序等(包括源码和二进制文件),但我们一直以来的政策都是,如果是内核以外的话,就不关开发的事。所以,必要的时候我们可以做出彻底改变。
至于 C,没有比这更好的语言出现。我们已经针对新的改进过的功能更新了内核源码(在这些年里 C 语言本身也发生了变化),而且我们还为额外的类型检查、运行时验证以及强化等给 C 语言上添加了各种扩展,但基本上除了一些小细节之外,这门语言基本上还是一样的。
而且说实话,这看起来不大可能会变。大家看到处在活跃开发中的那种语言不是用来进行底层系统开发的,而是为了让用好看的 UI 等开发用户应用更容易而准备的。这类语言显然不想干内核需要的事情,比如底层人工内存管理等。
可以想象,我们会有一些“框架”语言来生成驱动程序或类似东西,而且在我们内部实际上也有自己的简化“语言”来进行配置,我们在建构过程中的确也使用了一些其他语言,所以 C 不是我们使用的唯一语言。但到目前为止,这是大部分都是用 C 写的,“真核”都是用 C 来写的。
Bob:你选什么样的硬件?是不是那种 Linux(或任意其他)笔记本牌子货?还是平板或者手机?
Linus:我的主要开发设备是非常普通的 PC 工作站。那是这些年来组装起来的。机器没什么特别,自打我对它大改之后其实已经有 2 年了,所以甚至都算不上先进。在家里我的主要要求其实就是要彻底的安静。除了几个风扇以外,里面没有任何的活动件(所以再也没有机械硬盘了),而且风扇大部分时间内甚至都不用转。
外出时(幸好不用经常),我的主要需求是屏幕要好、要够轻。我的目标重量是 1 公斤(带电源),说实话,我还没有达到这个理想目标,但目前对我来说最好的折衷是 XPS13。
Bob:似乎 Linux 在桌面的成功不在于 PC 桌面而在于(通过 Android 实现的)设备桌面。你怎么看?
Linus:呃,传统 PC 显然不再像以往那样占主导了。哪怕你一台电脑(即便仍跑 Windows 或 OS X),很多人也主要是通过 web 浏览器和一些应用程序来使用。当然,还有那种“工作站”用户,这是那种我个人一直设想中的桌面。虽说还很重要,但它似乎已经不能像当年的 PC 那样去推动市场发展了。强大的台式机似乎主要是用来开发、玩游戏、或做媒体编辑。那种“休闲”类桌面似乎更多是浏览器类的东西,而且往往只是一台平板或者手机。
当然,Chrome 在其中某些领域似乎做得不错。不过就每天都跟 Linux 打交道的人数而言, Android 显然占了大块头。
[Bob 注:就“统治”的严格意义来说,这可能是公平的。但尽管过去几年 PC 总出货量有所下降,但 1994 年到 2014 年 PC 市场的累积增长依然可观,以致于即便在 PC 市场放缓的今天,每年 PC 的安装量仍然是 1994 年的四五倍]

Linux 之父(Linus Torvalds)
Bob:如果你得解决网络世界的其中一个问题,那会是什么?
Linus:都不是技术性的问题。但是,我对现代的“社交媒体”深恶痛绝——如 Twitter、Facebook、Instagram 等。这是一种病,似乎鼓励了坏行为。
我认为其实邮件也有部分同样的问题,我之前曾经说过:“在互联网上,没人能听得出你的微妙”。只要不是面对面的交流,你就会错过所有正常的社会线索,很容易就会错过幽默和挖苦,但也很容易就会错过对方的反应,所以就会有吵得不可开交等面对面交流不易出现的情况。
但电子邮件仍然管用。你仍然必须花精力去写,而且一般都会有一些实际内容(技术性或者其他)。那些“点赞”和“分享”之类根本就是垃圾。不用付出,也没有质量控制。实际上,这些都跟质量控制是背道而驰的,大家目标的共同点最少,都是些标题党,是为了唤起情绪反应,往往是道德义愤之一。
再加上匿名,这完全是令人作呕。当你甚至都不把真名写在你的垃圾(或者你分享或点赞的垃圾)上时,的确是一点作用都没有的。
其实我是认为匿名性被高估的人之一。一些人将隐私与匿名混为一谈,认为这两者是息息相关的,保护隐私意味着你需要保护匿名。我想这是错误的。如果你是告密者的话匿名是重要的,但如果你无法证明自己的身份,你在一些社交媒体平台上的疯狂谩骂就不应该可见,而且你也不应该能够分享它或者点赞。
好吧,我这也是谩骂。我不上任何的社交媒体(我试过一段时间的 G+,因为上面的人不是脑残,但显然它从来都没火过),但这依然令我困扰。
Bob:本期的《Linux Journal》关注的是孩子与 Linux。对于年轻的程序员/计算机科学学生你有什么建议?
Linus:其实我是最不应该问的人。我知道自己很小的时候就对数学和计算机感兴趣,直到大学之前我基本上都是自学的。我做的一切差不多都是自发的。所以当大家说“我应该做什么?”时,我不能理解大家面临的问题。我根本就没有这样的问题。
Bob:你我的第一次见面是在 DEC 展上。在“疯狗” Jon Hall 和 DEC 的资助下,那是你第一次去美国。
Linus:我认为那其实是我第二次到美国。我想第一次是去犹他普洛佛,跟 Novell 讨论 Linux(为了 Novell 的一个内部项目,是 Caldera 的前身)。
不过 DECUS 展(是在新奥尔良吗?也许我记错了)的确是我最早到美国的目的地之一。
Bob:我曾经问过你回到赫尔辛基时是怎么处理掉积压的电子邮件的。你的回答令我感到吃惊,后来我一直都引用你说的话。你只是说你会把积压的邮件发往 /dev/null。我表示震撼并且问你:“如果收件箱有重要邮件怎么办?”你耸耸肩回答道:“如果是重要的话,写信的人会再发一遍的。”这可能是任何人能给我的最释怀的建议了。你现在还遵循这种邮件处理哲学吗?
Linus:多少还是这样的,但与此同时,我的工作流已经改变了很多,所以旅行不会像过去那样对我的工作造成那么大的干扰了。所以一这段时间以来我往往会尽量不让大家注意到我出去了。如果在一两天内我的互联网连接可能有问题的话(尤其是如果你是水肺潜水员的话)我会提前警告一下。但大多数时候,我在世界任何地方都可以干活。我试过把行程安排在合并窗口期以外(有时候会失败),因为那这是我收到拉取请求最多的时候。
所以这段时间我都是把邮件存在云端,这样子机器间切换就容易多了,这也意味着当我旅行并且使用我的笔记本时,不再会像过去那样下载邮件到本地机器那么痛苦了。
而且不仅我的邮件是这样——实际上,几乎所有的内核开发最终都是靠 git 来分发的,这也意味着我在哪台机器上基本上已经不是问题,而且同步要比过去通过电子邮件一个个去处理补丁容易多了。
不过,我那个“如果邮件重要,对方会重新发送”的看法依然有效。大家都知道,我差不多是全年连轴转的,如果我几天内都没有对拉取请求做出响应的话,这仍然意味着它可能会被埋没在我一堆邮件当中,大家就会再发一封邮件来提醒我一下。
但这种情况其实已经比过去少见多了。1994 年的时候,我还没那么工作过度,离开一周也没什么大不了的,但是,在接下来的几年里,情况慢慢变得越来越糟,以至于我们以前那种邮件发补丁的工作流意味着我有时被迫忽略补丁,因为我已经没有时间去处理,且知道大家还会再次发邮件的。
很高兴,那样的时光早已一去不复返。BitKeeper 对我产生了很大的的影响,尽管不是所有的维护者都喜欢它。现在 git 意味着我不再通过邮件收取成千上万的补丁,我的收件箱看起来不再像过去那么糟糕了。所以跟它相处也容易些了。
顺便说一句,有一条规则可能比“如果邮件重要,对方会再次发送”还要重要,我已经执行力很长一段时间:如果不必回复,那就不回复。如果我收到邮件后的反应是别人可以处理的话,我会干脆忽略这封邮件。一些日理万机的邮件人会设置自动回复说“抱歉,我最终会处理的你邮件的”。但我会忽略任何自己觉得与我无关的事情。这么做纯粹是因为我觉得我承受不起鼓励大家给我发送梗更多邮件的后果。
所以我收到很多邮件,但其实大部分我都不回的。实际上,我的工作很多都是掌控全局,知道发生了什么事。所以我会看很多邮件,但一般不怎么写邮件。
Bob:1995 年 5 月,Don Becker 在华盛顿组织的一场 Linux 用户组会议中,你发表过一次演讲,中途你曾停下来问听众谁知道男子冰球世锦赛芬兰对瑞典的比分。作为与会的加拿大代表,我得以向你保证芬兰赢得了比赛。说道这个,芬兰最近赢得了世界青年锦标赛,你肯定感到很开心。还是你会为美国欢呼?
Linus:嗨!冰球也许是芬兰的国球,但我不是狂热的体育迷。搬到美国并不意味着我会选棒球或者橄榄球,只是意味着冰球也失去了那种“我周围的人在乎”的感觉。
Bob:我们很多人都对你在 Linux 技术决策的公开辩论中直言不讳的态度感到钦佩。嗯,其他人就不喜欢你直率的说话风格。随着时间的推移,你认为自己是不是多多少少有了一些外交辞令的味道了?
Linus:如果说有什么区别的话,我想我已经变得更安静了。我不会说这是“更加外交辞令”,但也许是更有自知之明了,而且我也在试着不那么咄咄逼人。
这部分是因为大家不再像过去那样对我进行解读。过去的环境更加随心所欲一点,我们也是一群享受乐趣的极客。现在的环境跟过去不一样了。再者也不像过去那样个人化了,现在参与开发的人已经成千上万,这还只是计算量发出补丁的人数,还不是做 Linux 的人的全部。
而“用不同的方式解读我”的部分原因在于,大家用一种 1994 年时不曾有的严肃态度来对待我。这绝对不是抱怨说当时大家没有认真对待我——其实恰恰相反。这更多是我的抱怨,抱怨大家现在太过认真地对待我了,所以我再也不能说一些愚蠢的废话了。
所以我仍然会号召大家(尤其是公司)做些蠢事,但现在我这么做的时候必须知道这是新闻,如果我朝某些公司竖中指的话是会被记住几十年的。不管是否活该,这种行为可能都不值得。
Bob:你还有什么要说的吗,无论是公开或者私下?
Linus:我从来都没有想要传播的“讯息”,所以……

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...