Linus又炮轟GitHub!看看你們的merge機(jī)制,只會(huì)產(chǎn)生垃圾
嘴炮大師, Linux 之父 Linus Torvalds 最近又噴人了!
「So, GitHub, fxxk you!」
GitHub是基于git進(jìn)行版本管理和代碼開(kāi)源的網(wǎng)站,并且Linus也是git之父,所以Linus可以說(shuō)是GitHub之父之父(誤)。
這次事件的起因是Paragon軟件為L(zhǎng)inux內(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)容
2、還需要確切的作者身份和提交者信息等
但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)核線程優(yōu)化的問(wèn)題時(shí),一個(gè)人提出了一個(gè)他認(rèn)為非常高效的方案,但 Linus 并不認(rèn)同,覺(jué)得這個(gè)人有點(diǎn)喜歡打嘴炮,也不想辯論了,直接看代碼解決好了!這句話也深受廣大程序員的認(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)題之一。」
Nvidia的驅(qū)動(dòng)、CUDA核心運(yùn)算、DLSS等技術(shù)始終閉源,與擁抱開(kāi)源的Linus注定不合拍,不過(guò)我還是想說(shuō),
老黃,賣(mài)點(diǎn)顯卡給玩家吧!