提起 Linus Torvalds 大家的第一反应是怎样的?是严苛刻薄,还是神级伟大,亦或是孤傲清高?二十五年来,Linus Torvalds 一直坚持在技术第一线,开发了 Linux 和 Git 两个项目,并深刻影响了软件行业。如果没有 Linux,就不会有基于 Linux 的安卓系统,那世界是怎样的?如果没有 Git 的诞生,就不会基于 Git 的 GitHub,那么开源的兴旺之势将会迟来多久?
有人问 Linus,你是如何成长为今天的你自己的?Linus Torvalds 说,我本人并不适合回答这个问题,因为这是个渐进不自知的过程;应该请一个不会天天见到他的人以第三方视角,来谈谈一个不敢直视别人眼睛的十二岁书虫小男孩怎样蜕变成今天的样子的。虽然现在,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 语言入门的那段代码:
10 print “SARA IS THE BEST”
20 goto
Linus 表示他很怀疑这段代码是否发自真心。他狡黠一笑地说,因为他和他妹妹 Sara 并不是一直都是最好的朋友,可能当时他自己只是想试着友好些,并借此机会向展示 Sara 他的编程能力。
使用 BASIC 语言编程在很多人看来很蠢,Edsger Wybe Dijkstra,Dijkstra 算法发明者曾经表示:
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
“一个有过 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。
开发 Linux,只选对的
最初 0.01 版本只有 10000 行代码,内核编程的前六个月都是 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 想必是极为严苛的,能赢他由衷赞叹的代码当属少数。
Linus 的商业化:厂商与基金会
大约在 1992 年 Linux 0.12 版本的时候,Linus 收到朋友转发有厂商在售卖 Linux 的消息。Linus 称当时自己的第一反应就是:什么?他们竟然在卖这个东西?朋友问道“这个真的是你所期望发生的吗?”Linus 知道朋友希望他说“不”,希望得到类似于免费开源梦等答案;但是他很诚实说“呃,是吧。但是,我不知道接下来会怎样”。
Linus 在乎的不是价格,他在乎的 Linux 可以成为像 Unix 一样的知名操作系统。在他看来商业化和推广是很有必要的,很多开源项目本应该更加壮大的,遗憾的是它们太过纯粹了。其实 Linus 也会担心商业公司不正当地利用开源成果,开始接触厂商的时候,Linus 坦言他很紧张;但是很快接触后发现对方很可爱,商业化意味着很多繁琐的事情,抛开商业策略、宣传推广等,单单是 QA 工作就让程序员们皱起眉头了,正式商业公司完成了所有 Linus 没有兴趣做的事情。
一切都分工明确,内核开发工作完全交由 Linus 主导,任何一丁点的商务他都不会过问。他说可能商业化中会有很多问题,但是 Linus 完全放手。不过,Linus 指出开源项目的核心维护者需要做到的是“free and pure”。
Linus Torvalds 于 2003 年决定离开当时的公司、加入开源码发展实验室以专职投入到 Linux 内核的工作,后来 Linux 基金会正式成立。正如所愿,这就是 Linus Torvalds 和基金会的分工,基金会负责接管许可证、专利、法务等问题,处理电话、邮件和文件准备等工作,事无巨细。
Linus 只想做技术,不想处理技术以外的事情。“如果你是一名工程师,很有可能你只想处理自己感兴趣的技术问题,其他一切事情你都想移交给别人来处理。” LinusTorvalds 说他很庆幸自己不需要担心商业和管理的问题,他只要能领到工资不担心养孩子上学的问题就很好。
Linux 基金会执行总监 Jim Zemlin 称这是正确的模式: Linux 操作系统标准价值 103 亿美元;Linux 基金会拥有 Linux、Kubernetes、Cloud Foundry、Xen 等项目,以及 CNCF 基金会、Node 基金会等,整体所写的代码价值标准为 145 亿美元;由此估算 Linux 的经济价值占据整体价值 71%,不愧为开源项目鼻祖。
坚持了 25 年,但是已经不能掌握内核的全部了
“在大家的眼中,我是那个创造了 Linux 并依然维护它的人。”
“为什么我 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 的初始版本,该系统定位目标特色是:
-
速度
-
简单的设计
-
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
-
完全分布式
-
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
十二年来,Git 围绕当初设定的目标不断迭代,并且深受喜爱。
然而,在 Git 被创造出来之后的前三四年,Linus 称业界对它并不是很认可,因为这种版本管理方式与大家已经习惯的 SVN 方式相差很大,当时普遍反响是 Git 太难用了。
但是慢慢地,圈内的声音发生了变化,Linus 认为大家应该开始接受并适应了 Git。
而几乎每个开发者都会使用的 GitHub 则使用 Git 为核心技术,于 2007 年问世。一个有趣的故事是,Linus 本人欣赏但不使用 GitHub,并认为 GitHub 还有可以提高改善的地方。在一次 linux.com 的采访中,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 说他也会度假很喜欢潜水,但是一旦在外面“浪”过一周,他就“心痒痒”地想回去编程。
Linus 非常强调自我驱动,他强调一定要知道自己内心想做什么,什么是真正让你感兴趣的事情。比如,如果你对某开源项目感兴趣,那你可以去阅读学习源代码,但是要警惕成为专家的想法:Linux 内核那么大,没有人了解全部、没有人是专家,Linus 称自己也不是面面俱到。
Linux 成功是因为足够幸运
在媒体见面会上,Linux 中国的老王问道,“Linux 系统和您个人所取得的成功是一种偶然还是必然?”Linus Torvalds 回答说,这份成功的背后既有必然性也有偶然性。其中偶然性,是在于时机刚刚好。如果 Linux 出现再早几年就可能赶不上互联网的发展,没有了网络传播、社区协作也就很难取得成果。如果再晚几年,可能成功的就是另外的操作系统。也就是说,必然性在于大家对开源操作系统的需求。而 Jim Zemlin 则表示“Do the right thing”,并且成功需要有良好的模式。
推崇成功等于 99% 汗水和 1% 创新
Linus Torvalds 认为,科技行业对创新的颂扬是一种自鸣得意,沾沾自喜,以自我为中心。
他更直白地表示:“行业所说的这么多的创新都是扯淡,”他说,“任何人都可以创新,不要把‘另类思考(think different)’当成什么了不起的事情,谈论那些都是毫无意义的。成功的 99% 就是把工作做好,也就是说要埋头苦干。”
Torvalds 说:“所有真正的工作并非说的如云如雨、不着边际的天花乱坠,而是在于细节。”
Torvalds 认为成功的项目都是 99%的汗水和 1%的创新。
编程之外的 Linus
除了编程之外,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 依然葆有着他的技术好奇。
-
http://www.infoq.com/cn/news/2017/07/Linus-Torvalds-no-Linux
-
http://www.infoq.com/cn/articles/linus-torvalds-linux
-
http://www.infoq.com/cn/articles/dialog-linus-linux-25-years-old
-
http://www.infoq.com/cn/news/2017/02/Linus-Torvalds-success-new
今日荐文
点击下方图片即可阅读
如何面试工程师?
文章评论