来自新智元
【导读】Linux 之父 Linus 最近在邮件列表中又炮轰 GitHub,直指 GitHub 的合并机制,直言只能产生绝对无用的「垃圾」信息,并告诫后来人:永远不要使用 GitHub 界面来 merge 任何东西!
嘴炮大师,Linux 之父 Linus Torvalds 最近又喷人了!GitHub 是基于 git 进行版本管理和代码开源的网站,并且 Linus 也是 git 之父,所以 Linus 可以说是 GitHub 之父之父(误)。这次事件的起因是 Paragon 软件为 Linux 内核开发了一个 NTFS 文件系统的读 / 写驱动程序代码,在 commit 时写了一个错误的 message,导致 Linus 火气飙升。八月初时,Torvalds 就向 Paragon 软件公司提出了一个建议,要求应该提交一个 pull request 把代码合并到内核源代码中,以便将其读 / 写 NTFS 驱动程序包含在即将发布的 5.15 版本内核中。NTFS 是 Windows 原生的文件系统,Paragon 的文件系统实现能够提高 Linux 和 Windows 文件的互操作性,而现有驱动程序的写支持能力不足。事发仓库来自 Paragon-Software-Group /linux-ntfs3。可以看到在 Fork 后作者在 GitHub 初始化 pull 中写了一句 Merge branch 'torvalds:master' into master,Linus 在邮件中直接说这种 message 完全是不可接受的,commit message 应当是有信息量的,可以从 fork 前的消息看到 Linux 仓库中 Torvalds Linus 一直在遵守约定。邮件中还对 GitHub 明褒暗贬,「GitHub 哪都好,就是 merge 不行」。并表示 GitHub 的 merge 只会「创造完全无用的垃圾合并」。Linus 强调说明,Linux 内核的合并需要在符合规则的情况下进行,这就意味着所提交的消息应包含:但 GitHub 把这些都给省略掉了,在 Linux 的 kernel.org 中,可以看到这些信息一目了然。最后 Linus 表示,希望不要再犯这种低级错误了,在 ksmbd 的 pull request 中已经说过一遍了,并且我的回应还是和以前一样:GitHub 的 inital pull 通常有点大病,这次我会接受,但希望你以后开发代码时能够以「合适」的方式。Linus 的这种「直」性格能够极大的提升工作效率,一封邮件就把以后 Linux 相关的 merge 问题解决了,而他的金句也有很多。「Talk is cheap, show me the code.」2000 年 8 月 25 日,在讨论关于内核线程优化的问题时,一个人提出了一个他认为非常高效的方案,但 Linus 并不认同,觉得这个人有点喜欢打嘴炮,也不想辩论了,直接看代码解决好了!这句话也深受广大程序员的认可,广为流传。除了金句之外,Linus 还喜欢炮轰各种各样看着不爽的东西。2007 年时,有位名为 Dmitry Kakurin 的开发者在查看了 Git 源代码并发现其使用的是纯 C 而非 C++ 后,他表示不可理喻,于是发帖喷道(太年轻了,敢和 Linus 喷):「完全没有什么可移植性,代码就是一坨屎。」BS 的意思就是 bullshit。Linus 直接回复「YOU are full of bullshit.」Linus 称,C++ 标准太复杂导致不合格使用者太多,容易误用和滥用语言特性。C++ 语言想解决的问题都不对路,都是一些皮毛问题,而没有涉及真正深层次的问题。C++ 的对象、模板和函数重载都基本上纯粹是 C 的语法扩展,是语法糖,总体上把 C 的语法和类型系统都弄得更糟。他建议,在系统编程里直接用 C 就可以,非系统编程里,应该选择一种有垃圾收集的语言,C++ 语言的特性基本无用,只会捣乱。因此,什么时候 C++ 都不可能是正确的选择。C++ 是狗屎,根本没啥设计,只是在 C 上面加了些渣滓而已。面向对象解决的都是一些小问题。2012 年开始很多笔记本配备了采用 optimus 技术的双显卡设计,即同时具有 Intel 核心显卡和 Nvidia 独立显卡。这种设计没有考虑到 Linux 系统,导致用户安装 Linux 系统后遇到无法解决的显卡驱动问题,而且更麻烦的是 Nvidia 又卖大量芯片给 Android 用,就导致了那句经典名言。Linus 上文说的是「NVIDIA 一直是我们与硬件制造商之间遇到的最严重的问题之一。」Nvidia 的驱动、CUDA 核心运算、DLSS 等技术始终闭源,与拥抱开源的 Linus 注定不合拍,不过我还是想说,
参考资料:
https://lore.kernel.org/lkml/CAHk-=wjbtip559HcMG9VQLGPmkurh5Kc50y5BceL8Q8=aL0H3Q@mail.gmail.com/