來(lái)自新智元
【導(dǎo)讀】Linux 之父 Linus 最近在郵件列表中又炮轟 GitHub,直指 GitHub 的合并機(jī)制,直言只能產(chǎn)生絕對(duì)無(wú)用的「垃圾」信息,并告誡后來(lái)人:永遠(yuǎn)不要使用 GitHub 界面來(lái) merge 任何東西!
嘴炮大師,Linux 之父 Linus Torvalds 最近又噴人了!GitHub 是基于 git 進(jìn)行版本管理和代碼開(kāi)源的網(wǎng)站,并且 Linus 也是 git 之父,所以 Linus 可以說(shuō)是 GitHub 之父之父(誤)。這次事件的起因是 Paragon 軟件為 Linux 內(nèi)核開(kāi)發(fā)了一個(gè) NTFS 文件系統(tǒng)的讀 / 寫(xiě)驅(qū)動(dòng)程序代碼,在 commit 時(shí)寫(xiě)了一個(gè)錯(cuò)誤的 message,導(dǎo)致 Linus 火氣飆升。八月初時(shí),Torvalds 就向 Paragon 軟件公司提出了一個(gè)建議,要求應(yīng)該提交一個(gè) pull request 把代碼合并到內(nèi)核源代碼中,以便將其讀 / 寫(xiě) NTFS 驅(qū)動(dòng)程序包含在即將發(fā)布的 5.15 版本內(nèi)核中。NTFS 是 Windows 原生的文件系統(tǒng),Paragon 的文件系統(tǒng)實(shí)現(xiàn)能夠提高 Linux 和 Windows 文件的互操作性,而現(xiàn)有驅(qū)動(dòng)程序的寫(xiě)支持能力不足。事發(fā)倉(cāng)庫(kù)來(lái)自 Paragon-Software-Group /linux-ntfs3。可以看到在 Fork 后作者在 GitHub 初始化 pull 中寫(xiě)了一句 Merge branch 'torvalds:master' into master,Linus 在郵件中直接說(shuō)這種 message 完全是不可接受的,commit message 應(yīng)當(dāng)是有信息量的,可以從 fork 前的消息看到 Linux 倉(cāng)庫(kù)中 Torvalds Linus 一直在遵守約定。郵件中還對(duì) GitHub 明褒暗貶,「GitHub 哪都好,就是 merge 不行」。并表示 GitHub 的 merge 只會(huì)「創(chuàng)造完全無(wú)用的垃圾合并」。Linus 強(qiáng)調(diào)說(shuō)明,Linux 內(nèi)核的合并需要在符合規(guī)則的情況下進(jìn)行,這就意味著所提交的消息應(yīng)包含:1、正在合并的內(nèi)容以及為什么合并這些內(nèi)容但 GitHub 把這些都給省略掉了,在 Linux 的 kernel.org 中,可以看到這些信息一目了然。最后 Linus 表示,希望不要再犯這種低級(jí)錯(cuò)誤了,在 ksmbd 的 pull request 中已經(jīng)說(shuō)過(guò)一遍了,并且我的回應(yīng)還是和以前一樣:GitHub 的 inital pull 通常有點(diǎn)大病,這次我會(huì)接受,但希望你以后開(kāi)發(fā)代碼時(shí)能夠以「合適」的方式。Linus 的這種「直」性格能夠極大的提升工作效率,一封郵件就把以后 Linux 相關(guān)的 merge 問(wèn)題解決了,而他的金句也有很多。「Talk is cheap, show me the code.」2000 年 8 月 25 日,在討論關(guān)于內(nèi)核線(xiàn)程優(yōu)化的問(wèn)題時(shí),一個(gè)人提出了一個(gè)他認(rèn)為非常高效的方案,但 Linus 并不認(rèn)同,覺(jué)得這個(gè)人有點(diǎn)喜歡打嘴炮,也不想辯論了,直接看代碼解決好了!這句話(huà)也深受廣大程序員的認(rèn)可,廣為流傳。除了金句之外,Linus 還喜歡炮轟各種各樣看著不爽的東西。2007 年時(shí),有位名為 Dmitry Kakurin 的開(kāi)發(fā)者在查看了 Git 源代碼并發(fā)現(xiàn)其使用的是純 C 而非 C++ 后,他表示不可理喻,于是發(fā)帖噴道(太年輕了,敢和 Linus 噴):「完全沒(méi)有什么可移植性,代碼就是一坨屎。」BS 的意思就是 bullshit。Linus 直接回復(fù)「YOU are full of bullshit.」Linus 稱(chēng),C++ 標(biāo)準(zhǔn)太復(fù)雜導(dǎo)致不合格使用者太多,容易誤用和濫用語(yǔ)言特性。C++ 語(yǔ)言想解決的問(wèn)題都不對(duì)路,都是一些皮毛問(wèn)題,而沒(méi)有涉及真正深層次的問(wèn)題。C++ 的對(duì)象、模板和函數(shù)重載都基本上純粹是 C 的語(yǔ)法擴(kuò)展,是語(yǔ)法糖,總體上把 C 的語(yǔ)法和類(lèi)型系統(tǒng)都弄得更糟。他建議,在系統(tǒng)編程里直接用 C 就可以,非系統(tǒng)編程里,應(yīng)該選擇一種有垃圾收集的語(yǔ)言,C++ 語(yǔ)言的特性基本無(wú)用,只會(huì)搗亂。因此,什么時(shí)候 C++ 都不可能是正確的選擇。C++ 是狗屎,根本沒(méi)啥設(shè)計(jì),只是在 C 上面加了些渣滓而已。面向?qū)ο蠼鉀Q的都是一些小問(wèn)題。除了 C++ 外,還有萬(wàn)惡之源英偉達(dá),2012 年開(kāi)始很多筆記本配備了采用 optimus 技術(shù)的雙顯卡設(shè)計(jì),即同時(shí)具有 Intel 核心顯卡和 Nvidia 獨(dú)立顯卡。這種設(shè)計(jì)沒(méi)有考慮到 Linux 系統(tǒng),導(dǎo)致用戶(hù)安裝 Linux 系統(tǒng)后遇到無(wú)法解決的顯卡驅(qū)動(dòng)問(wèn)題,而且更麻煩的是 Nvidia 又賣(mài)大量芯片給 Android 用,就導(dǎo)致了那句經(jīng)典名言。Linus 上文說(shuō)的是「NVIDIA 一直是我們與硬件制造商之間遇到的最嚴(yán)重的問(wèn)題之一?!?/span>Nvidia 的驅(qū)動(dòng)、CUDA 核心運(yùn)算、DLSS 等技術(shù)始終閉源,與擁抱開(kāi)源的 Linus 注定不合拍,不過(guò)我還是想說(shuō),
參考資料:
https://lore.kernel.org/lkml/CAHk-=wjbtip559HcMG9VQLGPmkurh5Kc50y5BceL8Q8=aL0H3Q@mail.gmail.com/