回顾Linux、G linus it 之父Ls Torvalds的传奇技术人生

数码新闻 2020-05-22141未知admin

  提起 Linus Torvalds 大家的第一反应是怎样的?是严苛刻薄,还是神级伟大,亦或是孤傲清高?二十五年来,Linus Torvalds 一直在技术第一线,了

  有人问 Linus,你是如何成长为今天的你自己的?Linus Torvalds 说,我本人并不适合回答这个问题,因为这是个渐进不自知的过程;应该请一个不会天天见到他的人以第三方视角,来谈谈一个不敢别人眼睛的十二岁书虫小男孩怎样成今天的样子的。虽然现在,Linus 已经很大程度上摆脱了社交恐惧症,面对和观众们可以侃侃而谈;但是他依然认为自己不擅长于与人打交道。他认为贡献开源项目通过邮件与人互动,给人缓冲是他更喜欢的交流方式。他不喜欢很多人一起工作,linus而 Linux 和 Git 两个项目则恰恰是他所喜欢的工作形式体现。Linus 称开源社区需要有沟通专家,他们温暖而友善,但遗憾的是他自己并不是这样的人。

  Linus Torvalds 极度热爱技术,但并不是泛 IT 技术的者,他从来没有写过 web 程序、不会设置 FTP 服务器的他有着很聚焦的技术关注点。Linus 的技术兴趣很挑剔,“如果我被困在一个孤岛上,唯一逃生的机会就是写出一套漂亮的 UI,那么我死定了。所以人与人是不一样的,我不是在找借口,我只是在解释。”

  但是,他并不是一根筋的洁癖开源理想者,很早他就思考了商业对开源的作用;他很开心也很感激商业和基金会帮他处理所有那些他不愿意处理的事情,并且可以做到完全放权、不管不问。“不同的人有不同的兴趣,擅长不同的事情”。

  在他眼中,很可能大多数代码都是平庸的。为什么 25 年一直在做 Linux?“因为写出优秀的代码是件很困难的事情。”“Linux 项目中,我会和有的人说‘请不要这样做,这样又蠢又笨’,然后他们离开了再以不会靠近我。”他是优秀并严格,在工作中难免会伤及他人的自尊心。

  不过,在他特别在意的内核项目之外,我想 Linus 应该会更加随和甚至亲切。上个月有幸面对面采访 Linus,他全程面带微笑;大会开场的出席也是一如既往地没有准备 PPT。本文取材自采访和已有的一些资料,希望可以为读者们展现一个更为具体、尽量全面客观的 Linus Torvalds。

  Linus 大约从十一岁左右开始编程,最初看的是一本汇编语言的书。在祖父的电脑上,Linus 开始使用了 BASIC 语言。

  Linus 的妹妹 Sara 记得 Linus 展示的第一段代码的运行效果,是所有 Basic 语言入门的那段代码:

  Linus 表示他很怀疑这段代码是否发自。他狡黠一笑地说,因为他和他妹妹 Sara 并不是一直都是最好的朋友,可能当时他自己只是想试着友好些,并借此机会向展示 Sara 他的编程能力。

  “一个有过 BASIC 编程经历的人是很难学会好的编程习惯的。作为一个潜在的程序员,他们已经被脑残并且无法修复。”

  Linus 表示最初的编程并不是很认真,但是那真的就是十几岁的他所能触碰到了,而且他并不完全知道自己在做什么。即便当时条件有限,即便 Edsger 的断言有些令人触目惊心,但是 Linus 依然成长成为了一名卓越的程序员,并且在 1991 年还是在校学的时候就创造了 Linux 的雏形,并从此没有再离开。

  Linus 最喜欢的是在电脑上输入指令,然后它就会去执行该执行的任务,没有任何多余的动作。Linus 坦白地说有可能是太自闭或边缘化性格问题,但是这样的爽快干脆的执行感绝对不会在日常生活中出现。

  Linus 曾经公开表示,学生时期的他本来是想购买 PC 操作系统的,但是昂贵价格实在让人望而却步,于是只好告诉自己说,“哎好吧,我需要自己写出来了。”

  在 1991 年 9 月发布 Linux 系统之前,Linus 其实自己写过好多工具。巧的是,如果再晚几个月, 如果 Linus 知道后来问世的 GNU kernel 或者 386BSD(NetBSD, OpenBSD 和 FreeBSD 的前身),现在大家可能就见不到 Linux 操作系统了。所以说 Linux 系统的诞生确属是意料之外,确切地说是 Linus 为了解决遇到问题而做的事情。

  于是他专门为自己配着 80386 处理器的新电脑写下了第一版的操作系统代码,工作是在 MINIX 中使用 GNU C 编译器,并且必须使用硬盘开机。Linux 系统的第一个版本代码是上传到 FTP 服务器上的,但是至今 Linus 也不知道怎么配置 FTP,他也从来没有自建 web 站点。

  每个人喜欢做的事情不一样,对于不喜欢的事情,Linus 一律“偷懒”地寻求外援。有一个有趣的小插曲,最初 Linus 给自己写的操作系统命名“Freax”,取自(“free”)和奇异(“freak”)的结合,末尾附上“X”,是表示其为类 Unix 系统;但是 Linus 委托的 FTP 服务器认为“Freax”这个名字并不好听,于是把内核更名为 Linux。

  最初 0.01 版本只有 行代码,内核编程的前六个月都是 Linus 一人完成,但是 1992 年起 Linus 开始采纳人员的补丁。

  如今,Linus 拥有一个实力超群内核小组,Linux 系统的协助模式是 Linus 负责总体的协调和沟通,他会对接十余名核心贡献者,每个人都有自己负责的具体领域和项目内容,每次有新的任务时 Linus 会将它分配给对应的人;而这十余位核心贡献者又有各自的熟知并信赖的高手小团队。Linus 只需知道将任务交给他自己团队中十余名哪个人即可。

  这样多层次小团体的工作模式,现在看起来更像是目前备受推崇的微服务组织架构;不过 Linus 这样做的并不是因为了康威定律的 two-pizza 团队原则,Linus 认为他能信任并依赖的程序员也就 10 个左右。“你可能有很庞大的社交网络,比如在 LinkedIn 上你可能有 5000 个好友;但是其中有多少人是你信任的?”在 Linus 看来,工作上的关系和生活中的朋友类似,Linux 的模式要真正熟知并且双向协作起来都很愉快。

  VMware 开源技术总监 Dirk Hohndel 曾经问 Linus,这样模式是否是可持续性的?Linus 笑着回答如果当前团队中有程序员变老变胖不想继续做下去的话也没有问题,因为会有新的程序员补充进来。Dirk 又追问 Linus 道,在内核不断提升迭代的过程中,是不是你具有着绝对的决定权?Linus 回答到“不是的”,他发自内心地鼓励大家按照自己的需求建立 fork,如果最终这样的想法有良好的结果做证明,其精华部分就会被吸收到 Linux 内核项目中。Dirk 对此总结,当今的分支发展再吸收代码的模式其实反映的就是 Linus 本人或其团队的决定性。

  Linus 认为虽然大部分 linux 内核代码的 fork 版本不是很优秀,但是有一小部分是好的。作为一个热爱编程的神级人物,加上自称不善交流有自闭倾向,Linus 身上定不会缺少程序员们常有的代码傲骨;工作起来的 Linus 想必是极为严苛的,能赢他由衷赞叹的代码当属少数。

  大约在 1992 年 Linux 0.12 版本的时候,Linus 收到朋友转发有厂商在售卖 Linux 的消息。Linus 称当时自己的第一反应就是:什么?他们竟然在卖这个东西?朋友问道“这个真的是你所期望发生的吗?”Linus 知道朋友希望他说“不”,希望得到类似于免费开源梦等答案;但是他很诚实说“呃,是吧。但是,我不知道接下来会怎样”。

  Linus 在乎的不是价格,linus他在乎的 Linux 可以成为像 Unix 一样的知名操作系统。在他看来商业化和推广是很有必要的,很多开源项目本应该更加壮大的,遗憾的是它们太过纯粹了。其实 Linus 也会担心商业不正当地利用开源,开始接触厂商的时候,Linus 坦言他很紧张;但是很快接触后发现对方很可爱,商业化意味着很多繁琐的事情,抛开商业策略、linus宣传推广等,单单是 QA 工作就让程序员们皱起眉头了,正式商业完成了所有 Linus 没有兴趣做的事情。

  一切都分工明确,内核工作完全交由 Linus 主导,任何一丁点的商务他都不会过问。他说可能商业化中会有很多问题,但是 Linus 完全放手。不过,Linus 指出开源项目的核心者需要做到的是“free and pure”。

  Linus Torvalds 于 2003 年决定离开当时的、加入开源码发展实验室以专职投入到 Linux 内核的工作,后来 Linux 基金会正式成立。正如所愿,这就是 Linus Torvalds 和基金会的分工,基金会负责接管许可证、专利、法务等问题,处理电话、邮件和文件准备等工作,事无巨细。

  Linus 只想做技术,不想处理技术以外的事情。“如果你是一名工程师,很有可能你只想处理自己感兴趣的技术问题,一切事情你都想移交给别人来处理。” LinusTorvalds 说他很庆幸自己不需要担心商业和管理的问题,他只要能领到工资不担心养孩子上学的问题就很好。

  “为什么我 25 年来依然在做同样的事情?因为写出优秀的代码是件很困难的事情。”

  所以,能保持优秀的 Linux 内核团队常难但是重要的事情。在问及现在是否还编写 Linux 内核的代码时,Linus Torvalds 坦言现在做的项目管理的工作,他有一小撮者共同协作,当有新的任务时,他知道应该把任务分配给谁。比起代码编写这样细节的问题,他需要更加关心的是 code flow 和 process,担当起架构师的角色,关心代码稳定和如何改进更高层次更抽象的工作内容。

  除了总体的沟通协调工作,Linus 本人还负责 merge 代码,Linux 内核每三个月(70 天左右)发布 1 个版本,即便在不同国家出差,Linus 也要克服时差按时发布。

  “如果你对某开源项目感兴趣,那你可以去阅读学习源代码,但是要成为专家的想法。”Linux 内核那么大,没有人了解全部、没有人是专家,Linus 称自己也不是面面俱到。

  Linus 还称创建 Git 从来不在他的计划内,版本管理系统(和数据库)是他最不感兴趣的方向,甚至带着一种本能逃离式的讨厌。曾经的 BitKeeper 出现令他眼前一亮,本地可以留有一份源代码,很好地管理了分布式团队中“谁可以修改代码”的权限问题。2005 年, BitKeeper 的商业同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区 BitKeeper 的。Linus 不想回到没有高效版本管理的时代;而除了 BitKeeper 之外,没有软件可以做到更好的远程协同;并且 Linus 还很在意代码的完整性和整个管理流程。为此,自己动手研发一个软件成为了当时唯一的解决方案。

  基于 BitKeeper 的使用经验并结合了团队的,Linus 花费数周创造了 Git 的初始版本,该系统定位目标特色是:

  然而,在 Git 被创造出来之后的前三四年,Linus 称业界对它并不是很认可,因为这种版本管理方式与大家已经习惯的 SVN 方式相差很大,当时普遍反响是 Git 太难用了。

  但是慢慢地,圈内的声音发生了变化,Linus 认为大家应该开始接受并适应了 Git。

  而几乎每个者都会使用的 GitHub 则使用 Git 为核心技术,于 2007 年问世。一个有趣的故事是,Linus 本人欣赏但不使用 GitHub,并认为 GitHub 还有可以提高改善的地方。在一次的采访中,Linus 曾经表示 GitHub 平台不适合内核,功能设计依然比较局限。

  “我女儿的同学们在听说她的父亲是 Git 的创作者之后非常兴奋,这种兴奋程度要比说有个 Linux 创作者的父亲更高。”Linus 对 Git“更走红”的现象表示惊讶,一方面是因为 Git 最初只是为 Linux 内核者们而建;另一方面 Git 只花费了十天(相比常年深耕 Linux 系统)。Linus 总结道,对于现在的 CS 学生们,Git 似乎是个更棒更有趣的产品;这或许代表着年轻一代更熟悉更欣赏 Git。

  所有软件语言中,Linus 对 C 语言情有独钟,并认为它更趋同于机器思维、接近底层,可以让者们从软件角度去诠释硬件。

  Linus 表示自己曾经接触过硬件,但是这很,他称自己对硬件“力很强”。换而言之,Linus 很自知地没有选择在硬件的道上继续走下去。

  不过,他对现在的 Raspberry Pi、FPGA 电板很感兴趣,如果重来一次又不可以选择编写 Linux 的话,他会考虑基于硬件版的编程。

  Linus 深耕 Linux 代码二十五年如一日,InfoQ 问到 Linus,是否只要到最后大概率而言都会收获一些?Linus 表示他非常想告诉大家“就是胜利”,但是很遗憾的是事实并非如此。最重要的是找到自己感兴趣的事情去做。这二十五年来做 Linux 系统,总会有不断新的挑战出现,所以 Linus 称这些年非常有趣并不是充满重复的工作。

  最靠谱的答案也许就是 Linus 所说的他自己深深喜欢代码,除了代码之外的事情,他都不希望考虑或参与,比如许可证专利,与的沟通,或者怎么保持盈利以养家糊口;很多技术人都是这样的,他们希望可以心无旁骛地做技术工作,不希望被无关的琐事打扰。

  除了尽可能地缩小和聚焦自己的工作范围,兴趣还可以让人更主动地工作。Linus 说他也会度假很喜欢潜水,但是一旦在外面“浪”过一周,他就“心痒痒”地想回去编程。

  Linus 非常强调驱动,他强调一定要知道自己内心想做什么,什么是真正让你感兴趣的事情。比如,如果你对某开源项目感兴趣,那你可以去阅读学习源代码,但是要成为专家的想法:Linux 内核那么大,没有人了解全部、没有人是专家,Linus 称自己也不是面面俱到。

  在见面会上,Linux 中国的老王问道,“Linux 系统和您个人所取得的成功是一种偶然还是必然?”Linus Torvalds 回答说,这份成功的背后既有必然性也有偶然性。其中偶然性,是在于时机刚刚好。如果 Linux 出现再早几年就可能赶不上互联网的发展,没有了网络、社区协作也就很难取得。如果再晚几年,可能成功的就是另外的操作系统。也就是说,必然性在于大家对开源操作系统的需求。而 Jim Zemlin 则表示“Do the right thing”,并且成功需要有良好的模式。

  Linus Torvalds 认为,科技行业对创新的是一种自鸣得意,沾沾自喜,以为中心。

  他更直白地表示:“行业所说的这么多的创新都是扯淡,”他说,“任何人都可以创新,不要把‘另类思考(think different)’当成什么了不起的事情,谈论那些都是毫无意义的。成功的 99% 就是把工作做好,也就是说要埋头苦干。”

  Torvalds 说:“所有真正的工作并非说的如云如雨、不着边际的天花乱坠,而是在于细节。”

  除了编程之外,Linus 还喜欢潜水。但是他说如果潜水超过一周,他就会感觉手痒痒想编程。

  最近,Linus 在网络上发布了几块款他推荐的好物品。首当其中是潜水装备 Atomic Aquatics scuba regulator。还有一件是给猫猫准备的物品。

  2017 年 6 月,Linux 基金会首次在中国召开 LinuxCon,有幸参加采访,见到 Linus Torvalds 本尊。采访环节结束后,记者们立刻将 Linus Torvalds 团团围住,他微笑着耐心回答每个问题。在征求签名时,他有些不好意思地说“我的签名很丑”并在名字下面附上了“the ugliest signature ever”。我顺势询问是否有一句话可以送给者们时,他迟疑之后说自己不敢给出这样庄重的;但是他表示他认为做自己喜欢的、并对人也有帮助的事情很重要。

  随后,中国开源软件推进联盟陆首群走进采访室,和 Linus 见面拥抱聊天。陆先生从 20 世纪九十年代就开始推动包括 Linux 基金会在内的开源软件组织在中国的发展。

  从进入视线、交流到离开的三个多小时内,Linus Torvalds 一带微笑。

  在我看来,这种微笑不是职业训练出来的,而是一个纯粹技术人发自内心的表达。这位名扬 IT 界二十余载的神级人物,想必早已过了恃才傲物、口沸目赤的阶段,内心充盈的更多是工作中获得的欣慰与肩负的责任。

  在他提到不想关心 Linux 技术以外的任何事情、一周不写代码就坐立不安的时候,我似乎看见了那个 11 岁学习 BASIC 并从此再也没有离开自己所爱的大男孩儿,拥有一颗不老心的 Linus Torvalds 依然葆有着他的技术好奇。

原文标题:回顾Linux、G linus it 之父Ls Torvalds的传奇技术人生 网址:http://www.ucdhockey.com/shumaxinwen/2020/0522/30411.html

Copyright © 2002-2020 千秋万代新闻网 www.ucdhockey.com 版权所有  

联系QQ:1352848661