01
一封咆哮的邮件
2012年,Mauro收到了一封来自Linus的这封邮件,开篇就是一顿劈头盖脸的臭骂:
Mauro,闭上你他妈的嘴!
这就是个内核的Bug好吧?你做维护者多久了,到现在还没学会内核维护的第一条原则?!
如果一个(内核)的更改导致用户程序出错,那就是内核的 bug。我们绝对不去责怪用户空间的程序。这有多难理解?
更糟的是,就算它没导致应用程序崩溃,提交 f0ed2ce840b3 也是彻头彻尾的狗屎。
......
闭嘴,Mauro。永远不要再试图把内核空间的 bug 归咎于用户空间。
......
这个提交本来是烂得可以直接回滚的,根本不值得我跟你废话,但它影响太大了,让KDE上的所有媒体应用都挂了,我不能回滚了事,必须搞清楚到底发生了什么....
......
我们绝不破坏用户空间!
说真的,这条规则有那么难懂吗?
......
把你他妈的“合规工具”修好,因为它明显是坏的。还有,把你写内核代码的方式也改改吧!
以“Shut up”开头,以“Fucking”结尾,真是典型的Linus风格。
02
谁是 Mauro?
如果我收到这封信,恐怕我的头都要炸了!
挨了一顿臭骂的Mauro Chehab是何许人也?
让我们从Linux内核的开发方式说起。
Linux内核极其庞大,分布在全球的程序员都可以提交代码,Linus一个人根本应付不过来。
很自然地就形成了一个分层的代码维护和提交的体系:
开发的流程大概是这样的:
1.开源社区贡献者(来自全球的开发者)提交补丁(patch)。
2.模块维护者审核代码,管理特定模块
3.高级维护者将子模块的代码集成并整理为更大的子系统。
4.Linus Torvalds 最终审核关键改动,并在 merge window 内合并到主线(mainline)内核中
这种模式被称为:“Benevolent Dictator for Life”(仁慈独裁者终身制) + 模块化维护者制
Linus Torvalds位于金字塔尖,距离Linus最近的那一层的维护人员被称为Lieutenants(副手/副官/副将),他们包括:
Mauro就是“副官”之一!
他是一位资深的 Linux 内核开发者和维护者,尤其长期负责 Linux 媒体子系统(media subsystem),该子系统涵盖的内容广泛:摄像头、遥控器、TV 卡、音视频采集卡、数字广播(DVB)等。
他维护了包括 V4L2(Video for Linux 2)和 DVB(Digital Video Broadcasting) 在内的大量驱动和中间层代码。
Mauro从2000年代中期开始向内核提交代码,在Linux内核邮件列表上非常活跃,不仅自己写代码,还经常评审别人提交的补丁。
毫不夸张地说,Mauro是Linus手下最得力的干将之一,但也是在一个极高标准下被严格要求的干将。
Linus咆哮他,不是因为他不行,而是因为他太重要,不容许犯错。
Linus是针对Mauro一个人的吗?
不是的,除了Mauro之外,Linus 曾多次骂过包括 Andrew Morton、Kay Sievers、Ingo Molnar 等知名内核开发者,但这些人依然是核心团队的重要成员。
这是因为,Linus多次表示,他对代码质量和开发流程的要求高于“人际和谐”!
03
Linux内核社区的大问题
我自己在过去的20多年也见过很多项目,有些项目还非常庞大,我发现很多项目在设计之初架构都非常漂亮,代码都非常整洁,但是随着时间的发展,人员来来往往,只要项目能活过5年,基本上都会出现代码腐化的情况。
原因就是在疯狂的需求冲击下,当初的架构设计很难守住,该重构的不重构,走捷径,加Flag.....很快就把系统拖垮,变成屎山。
但是像Linux这样的世界上最大的开源协作项目,每年的活跃贡献者都好几千,提交的补丁数有好几万,历经30余年,架构一直完好,代码质量在软件业一直处于顶尖水平,这不能不说是一个奇迹。
Linus这种极其严格,毫不留情的管理风格应该是起了很大的作用。
想想看,无数的开发者亲眼目睹Mauro和其他“副官”受到的羞辱以后,肯定会想:我靠,这些大佬都被骂了狗血喷头,Linus对内核代码质量和稳定性要求真高,以后编写代码、提交代码一定得小心,万一我被他揪住了就惨了.....
实际上,Linus只会对他的“副官”和核心维护者发出类似的咆哮,对于普通开发者和新手,Linus的态度还是温和的,很多时候会耐心指出问题所在,他自己在多个场合也承认:“我对维护者严厉,是因为我对他们有更高的期待。”
但是,Linus的技术观点可能绝对、完全正确,但他这种传达观点的方式是非常糟糕的。
这种羞辱的风格,一次两次还行,长期以往肯定会给Linux内核维护社区带来巨大的问题。
1. 人才流失
例如Sarah Sharp,Intel开发者,USB 3.0子系统的重要维护者,多次公开反对Linus在邮件列表上的辱骂式发言,认为这种文化“有毒”。
2015年退出内核开发时说:“我不再愿意为了技术忍受语言暴力。” “说话直率不是借口,社区需要尊重。”
Linus的回应是: “我不是一个友善的人,我不在乎你,我关心的是技术和内核。”
2.精英主义蔓延
老大如此,手下人耳濡目染,就会效仿。
“顶级 Linux 内核开发人员经常会互相吼叫,以纠正彼此的行为。”
这就逐渐形成了一种以技术能力为核心、语气直白甚至尖刻的沟通文化。
更进一步,形成了一种“精英主义的鄙视链”,即越核心、越资深的开发者,对“菜鸟”、“文档不看型用户”、“不写测试就提交PR的人”有更少的耐心。
3.企业贡献者小心翼翼
Linus的这种粗鲁的风格,会让不少企业在和Linux社区互动时,不得不小心翼翼。
因为企业不是个人,需要维持形象稳定,避免企业品牌与公开“吵架”事件挂钩。
有些公司甚至还设计了内部的流程,确保代码质量在送出前已经达到主线风格要求,然后由资深的内核开发者代为提交。
就是“不希望第一封邮件就被 Linus 爆喷。”
04
Linus 的“咆哮风格”是怎么炼成的?
Linus Torvalds 这种直率、尖锐甚至粗鲁的“骂人风格”,并不是一开始就有的。
在1991~1996年期间,Linus 更多是一个谦逊的年轻黑客,他会感谢大家的建议,也会在邮件列表中耐心回应,语气还比较温和。
记得他最初发布 Linux 内核时说自己是个“业余爱好者”,邀请大家来“玩一玩”。
1997 ~2001年是Linux的飞速成长期,各大巨头开始用户Linux。
Linux 项目规模迅速扩大,开发者增多,邮件列表活跃。
Linus强势展露,开始“毒舌”,不过主要是直接攻击技术缺陷,但还未完全“爆粗”,比如说“C++ is a horrible language...”。
进入2000年代,Linus养成了嘲讽式批评的风格,经常点名批评开发者,公开羞辱,粗口频出,动不动就是“脑残”,“狗屎”,“Please just kill yourself now.”,名场面就是:“NVIDIA, fuck you.”
2018年,Linus终于意识到自己的问题,他发了一封公开道歉的邮件,承认自己对一些人的粗鲁言辞和不尊重行为,对社区氛围造成了伤害。
他宣布“短暂休假”,开始自我反省。
一个月后,Linus就宣布回归,并且带回了新的行为准则。
在技术上他依然坚持严苛的标准,但他在邮件中的语气变得更加克制和礼貌,多次使用Thanks,Sorry之类字眼,几乎看不到脏话。
05
Linus还能撑多久?
在技术面前,没有人是完美的。
Linus 的咆哮式管理风格曾为 Linux 奠定了坚不可摧的技术基础,也带来了争议与反思。在效率与尊重之间,开源社区正在学会更成熟地前行。
技术可以强硬,态度也可以坚定,但尊重与体面,是人与人之间最起码的底线。
Linus已经改变,但是他今年已经55 岁了。
他能继续审阅成千上万的补丁到什么时候?他的接班人会是谁?这个庞大的开源帝国能否继续健康运转?
这些问题,将是 Linux 社区未来10年的最大挑战之一。
全文完,觉得不错的话点个赞或者在看吧!