0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux之父表示不會(huì)用Rust取代C語(yǔ)言開(kāi)發(fā)內(nèi)核

馬哥Linux運(yùn)維 ? 來(lái)源:InfoQ ? 作者:Jeremy Andrews ? 2021-06-08 16:48 ? 次閱讀

Linux 誕生于 1991 年,距今已經(jīng) 30 年了。雖然它一開(kāi)始只是 Linus 的一個(gè)個(gè)人項(xiàng)目,而非出于要開(kāi)發(fā)一個(gè)新操作系統(tǒng)的偉大夢(mèng)想,但如今的 Linux 早已無(wú)處不在。

30 年前,當(dāng) Linus Torvalds 第一次發(fā)布 Linux 內(nèi)核時(shí),他還是赫爾辛基大學(xué)的一名 21 歲的學(xué)生。他宣布說(shuō):“我正在開(kāi)發(fā)一個(gè)(免費(fèi)的)操作系統(tǒng)(這只是個(gè)愛(ài)好,不會(huì)做得很大,也不會(huì)很專業(yè)……)”。30 年后,500 強(qiáng)超級(jí)計(jì)算機(jī)和 70% 以上的智能手機(jī)都在運(yùn)行 Linux。很顯然,Linux 不僅大,而且很專業(yè)。

30 年來(lái),Linus Torvalds 一直在領(lǐng)導(dǎo)著 Linux 內(nèi)核的開(kāi)發(fā),啟發(fā)了無(wú)數(shù)開(kāi)發(fā)者和開(kāi)源項(xiàng)目。2005 年,Linus 開(kāi)發(fā)了 Git,用來(lái)管理內(nèi)核開(kāi)發(fā)過(guò)程。Git 現(xiàn)在已經(jīng)成為最流行的版本控制系統(tǒng),受到無(wú)數(shù)開(kāi)源和私有項(xiàng)目的信任。

正值 Linux 誕生 30 周年之際,Linus Torvalds 通過(guò)電子郵件回復(fù)了 Tag 1 咨詢公司的創(chuàng)始合伙人/首席執(zhí)行官 Jeremy Andrews 的訪談問(wèn)題(《An Interview With Linus Torvalds: Linux and Git - Part 1》),回顧并總結(jié)了過(guò)去這些年他在領(lǐng)導(dǎo)大型開(kāi)源項(xiàng)目過(guò)程中得到的真知灼見(jiàn)。本文著重介紹 Linux 內(nèi)核開(kāi)發(fā)和 Git。InfoQ 對(duì)訪談內(nèi)容進(jìn)行了翻譯,以饗讀者。

Linux 內(nèi)核開(kāi)發(fā)

Jeremy Andrews:Linux 無(wú)處不在,它是整個(gè)開(kāi)源世界的靈感源泉。當(dāng)然,事情并不是從一開(kāi)始就這樣的。1991 年,你在 comp.os.minix Usenet 新聞組中發(fā)布了一個(gè) Linux 內(nèi)核。十年后,你寫(xiě)了一本書(shū),叫作“Just for Fun: The Story of an Accidental Revolutionary”(中譯名:《只是為了好玩:Linux 之父林納斯自傳》),對(duì)那段歷史進(jìn)行了深度回顧。今年 8 月,Linux 將迎來(lái)它的 30 周年紀(jì)念日!在這個(gè)過(guò)程中,你是在什么時(shí)候開(kāi)始意識(shí)到 Linux 并不僅僅是一個(gè)“愛(ài)好”的?

Linus Torvalds: 這聽(tīng)起來(lái)可能有點(diǎn)荒謬,實(shí)際上我很早就開(kāi)始意識(shí)到了。在 1991 年末(以及 1992 年初),Linux 已經(jīng)比我預(yù)想的要大得多。

那時(shí)候可能只有幾百個(gè)用戶(確切地說(shuō)不是“用戶”,因?yàn)槿藗冞€要不斷地對(duì)它進(jìn)行修修補(bǔ)補(bǔ)),從沒(méi)想過(guò) Linux 后來(lái)能夠發(fā)展壯大。在我看來(lái),最大的轉(zhuǎn)折點(diǎn)是當(dāng)我意識(shí)到其他人正在使用它,并對(duì)它感興趣,它開(kāi)始有了自己的生命。人們開(kāi)始發(fā)送補(bǔ)丁,這個(gè)系統(tǒng)能做的事情比我最初預(yù)想的要多得多。

1992 年 4 月的某個(gè)時(shí)候,X11 被移植到 Linux 上(其實(shí)我也記不太清具體時(shí)間了,畢竟那是很久以前的事了),這是一個(gè)重大進(jìn)步,Linux 系統(tǒng)突然間有了 GUI 和一系列全新的功能。

我一開(kāi)始并沒(méi)有什么大計(jì)劃。這只是一個(gè)個(gè)人項(xiàng)目,并不是出于要開(kāi)發(fā)一個(gè)新操作系統(tǒng)的偉大夢(mèng)想。我當(dāng)時(shí)只是想了解我的新 PC 硬件的來(lái)龍去脈。

所以,在發(fā)布第一個(gè)版本時(shí),實(shí)際上更多的是想“看看自己都做了些什么”。當(dāng)然,我希望其他人會(huì)覺(jué)得它有趣,但它并不是一個(gè)真正可用的操作系統(tǒng)。它更多的是一種概念驗(yàn)證,而且只是一個(gè)我在當(dāng)時(shí)做了幾個(gè)月的個(gè)人項(xiàng)目。

從“個(gè)人項(xiàng)目”到其他人開(kāi)始使用它、給我反饋(和 bug 報(bào)告)和發(fā)送補(bǔ)丁,對(duì)我來(lái)說(shuō)是一個(gè)巨大的轉(zhuǎn)變。

舉個(gè)最基本的例子:最初的版權(quán)許可是“你可以以源代碼的形式發(fā)布它,但不能用它賺錢”。

對(duì)于當(dāng)時(shí)的我來(lái)說(shuō),商業(yè)版 Unix 太貴了(作為窮學(xué)生,我已經(jīng)為了買新 PC 花光了所有錢),所以我希望這個(gè)操作系統(tǒng)的源代碼是公開(kāi)可用的(這樣人們就可以提供補(bǔ)丁),我希望將它開(kāi)放給像我這樣負(fù)擔(dān)不起昂貴電腦和操作系統(tǒng)的人。

1991 年末(或是 1992 年初),我把許可改為 GPLv2,因?yàn)橛腥讼氚阉攒洷P(pán)的形式分發(fā)給本地 Unix 用戶組,但又想收回軟盤(pán)的成本,并補(bǔ)償他們拷貝軟盤(pán)所花費(fèi)的時(shí)間。我覺(jué)得這很合理,因?yàn)椤懊赓M(fèi)”與否并不是最重要的,最重要的是要“公開(kāi)源碼”。最終的結(jié)果是:人們不僅在 Unix 用戶組中發(fā)布它,在幾個(gè)月之內(nèi)還出現(xiàn)了 SLS 和 Slackware 的軟盤(pán)發(fā)行版。

與最初的那些根本性的變化相比,后來(lái)的一切都是“增量式”的。當(dāng)然,有些增量式的變化也是大跨步(IBM 的加入、Oracle 數(shù)據(jù)庫(kù)的移植、Red Hat 的首次公開(kāi)募股,Android手機(jī)上的應(yīng)用,等等),但在我看來(lái),它們?nèi)匀徊蝗缱畛醯摹拔也徽J(rèn)識(shí)的人都在使用 Linux”那樣具有革命性。

Jeremy Andrews:你是否曾經(jīng)后悔修改了許可協(xié)議?或者說(shuō),其他人或公司用你開(kāi)發(fā)的系統(tǒng)賺了很多錢,你因此感到后悔嗎?

Linus Torvalds: 我從來(lái)沒(méi)有后悔過(guò)。

首先,我過(guò)得還不錯(cuò)。我不是特別富有,但我是一個(gè)薪水很高的軟件工程師,可以按照自己的節(jié)奏做我喜歡做的事情。關(guān)鍵是我百分之百認(rèn)為這個(gè)許可是 Linux(以及 Git)取得成功的重要原因。我認(rèn)為,當(dāng)所有人都認(rèn)為他們有平等的權(quán)利,沒(méi)有人在這方面有特權(quán)的時(shí)候,他們才會(huì)變得更快樂(lè)。有很多項(xiàng)目采用了“雙重許可”,一方面,原作者保留了商業(yè)許可(“只要你支付了許可費(fèi)用,就可以使用它”),另一方面,項(xiàng)目也可以在 GPL 許可下開(kāi)源。

我認(rèn)為要在這種情況下建立好的社區(qū)是非常困難的,因?yàn)殚_(kāi)源那一方知道自己是“二等公民”。另外,為了讓享有特權(quán)的那一方一直享有特殊的權(quán)利,需要做很多許可文書(shū)工作,這給項(xiàng)目帶來(lái)了額外的阻力。

另一方面,我見(jiàn)過(guò)很多基于 BSD(或 MIT 等類似的許可)許可的開(kāi)源項(xiàng)目,當(dāng)它們變得足夠強(qiáng)大,大到具備商業(yè)價(jià)值時(shí),它們就開(kāi)始分裂,相關(guān)的公司不可避免地會(huì)將自己的那部分變成專有的。

我認(rèn)為 GPLv2 能夠在“每個(gè)人都處于相同的規(guī)則之下”和“要求人們回饋社區(qū)”之間取得完美的平衡。每個(gè)人都知道,所有參與者都受到相同的規(guī)則的約束,所以這是非常公平的。

當(dāng)然,你的投入總會(huì)得到回報(bào)。如果你只是想輕度參與項(xiàng)目,或者只是想作為一名用戶,那也是可以的。如果你真的只是這樣,就也無(wú)法控制這個(gè)項(xiàng)目。如果你真的只需要一個(gè)基本的操作系統(tǒng),而 Linux 已經(jīng)具備你想要的所有功能,那也完全沒(méi)有問(wèn)題。但如果你有特殊的需求,想要為這個(gè)項(xiàng)目做一點(diǎn)事情,那么唯一的方法就是參與其中。

這讓每個(gè)人都秉持誠(chéng)實(shí)的態(tài)度,包括我在內(nèi)。任何人都可以 fork 這個(gè)項(xiàng)目,用他們自己的方式,然后說(shuō)“再見(jiàn)了,Linus,我要維護(hù)自己的 Linux 版本”。我之所以“特別”,僅僅是因?yàn)槿藗兿嘈盼夷馨压ぷ髯龊谩?/p>

“任何人都可以維護(hù)自己的 Linux 版本”,這讓一些人對(duì) GPLv2 產(chǎn)生了懷疑,但我認(rèn)為這是一種優(yōu)勢(shì),而不是劣勢(shì)。我認(rèn)為,這實(shí)際上是避免 Linux 出現(xiàn)分裂的原因:每個(gè)人都可以創(chuàng)建自己的項(xiàng)目分支。事實(shí)上,這也是“Git”的核心設(shè)計(jì)原則之一——代碼庫(kù)的每一個(gè)克隆都是一個(gè)分支,人們(和公司)再 fork 出自己的版本,完成開(kāi)發(fā)工作。

所以,分支不是問(wèn)題,只要你能把好的部分合并回來(lái)。這就是 GPLv2 發(fā)揮作用的地方。能夠拉取分支,并按照自己的方式修改代碼,擁有這些權(quán)利很重要,但另一方面也同樣重要——當(dāng)一個(gè)分支被證明取得了成功,有權(quán)利把它合并回去。

另一個(gè)問(wèn)題是,除了要有支持這種工作流的工具,也要有可以支持它的心態(tài)。合并分支的一大障礙不僅是許可問(wèn)題,還有“嫌隙”問(wèn)題。如果分支是源于對(duì)立,那么要合并兩個(gè)分支就非常困難——不是因?yàn)樵S可或技術(shù)方面的原因,而是因?yàn)榉种еg太過(guò)對(duì)立。我認(rèn)為 Linux 避免了這種情況的發(fā)生,主要是因?yàn)槲覀円恢闭J(rèn)為分支是一件很自然的事情。而且,當(dāng)一些開(kāi)發(fā)工作被證明取得了成功,嘗試將其合并回來(lái)也是很自然的。

雖然這個(gè)答案有點(diǎn)偏離正題,但我認(rèn)為它很重要——我不后悔修改了許可,因?yàn)槲艺娴恼J(rèn)為 GPLv2 是 Linux 取得成功的一個(gè)重要原因。

金錢不是一種很好的激勵(lì)方式,它無(wú)法讓人們團(tuán)結(jié)在一起。我認(rèn)為,參與一個(gè)共同的項(xiàng)目,并感覺(jué)到自己可以成為這個(gè)項(xiàng)目的合作伙伴,這樣才能激勵(lì)人們。

Jeremy Andrews:現(xiàn)在,人們基于 GPLv2 發(fā)布源代碼通常是因?yàn)?Linux。你當(dāng)時(shí)是怎么找到這個(gè)許可的?你在調(diào)研其他許可方面又投入了多少時(shí)間和精力呢?

Linus Torvalds: 那個(gè)時(shí)候,有關(guān) BSD 和 GPL 的爭(zhēng)論非常激烈。我在閱讀各種新聞組(比如 comp.arch、comp.os.minix 等)時(shí)看到了一些有關(guān)許可的討論。

其中兩個(gè)最主要的原因可能是 gcc 和 Lars Wirzenius。gcc 對(duì) Linux 的發(fā)展起到了很大作用,因?yàn)槲铱隙ㄐ枰粋€(gè) C 語(yǔ)言編譯器。Lars Wirzenius 是我在念大學(xué)時(shí)另一個(gè)說(shuō)瑞典語(yǔ)(瑞典語(yǔ)在芬蘭是小語(yǔ)種)的計(jì)算機(jī)系學(xué)生。

Lasu 比我更喜歡討論與許可相關(guān)的事情。

在我看來(lái),選擇 GPLv2 并不算是什么重大的政治問(wèn)題,主要是因?yàn)槲易畛踉谶x擇許可時(shí)太過(guò)倉(cāng)促,后來(lái)需要做出修改。況且,我很感恩有 gcc,并且 GPLv2 更符合我對(duì)“你必須把源代碼合并回來(lái)”這種想法的期望。

因此,與其另起爐灶新建一個(gè)許可,不如選擇一個(gè)人們已經(jīng)知道并且有一些律師參與其中的許可。

Jeremy Andrews:通常情況下,你的一天是怎么過(guò)的?其中有多少時(shí)間花在寫(xiě)代碼上,多少花在評(píng)審代碼上,多少花在電子郵件上?你如何平衡個(gè)人生活和 Linux 內(nèi)核開(kāi)發(fā)工作?

Linus Torvalds: 我現(xiàn)在寫(xiě)的代碼很少,而且已經(jīng)很久沒(méi)寫(xiě)了。再要寫(xiě)代碼,通常是因?yàn)槿藗儗?duì)某些特定的問(wèn)題存在爭(zhēng)議。我修改代碼,并將其作為補(bǔ)丁發(fā)布出去,作為對(duì)解決方案的解釋說(shuō)明。

換句話說(shuō),我寫(xiě)的大部分代碼更多的是作為解決方案的示例,而補(bǔ)丁是一種非常具體的例子。人們很容易陷入理論討論的陷阱,而我發(fā)現(xiàn)描述解決方案最好的方式是寫(xiě)代碼片段,不一定要完整的程序,只要讓解決方案具體化一些即可。

我的工作時(shí)間都花在電子郵件上了。主要是溝通,而不是寫(xiě)代碼。事實(shí)上,我認(rèn)為這種與記者和技術(shù)博主之間的交流就是我工作的一部分——它可能比技術(shù)討論優(yōu)先級(jí)低一些,但我也花了相當(dāng)多的時(shí)間在這類事情上。

當(dāng)然,我也會(huì)花一些時(shí)間在代碼評(píng)審上。但老實(shí)說(shuō),當(dāng)我收到一個(gè) PR 時(shí),有問(wèn)題的代碼通常已經(jīng)被其他人評(píng)審過(guò)了。所以,雖然我仍然會(huì)看一下補(bǔ)丁,但實(shí)際上會(huì)更多地去關(guān)注注解,以及補(bǔ)丁的演化過(guò)程。但對(duì)于那些與我共事很久的人,我不會(huì)這么做:他們是自己子系統(tǒng)的維護(hù)者,我不需要對(duì)他們的工作指手畫(huà)腳。

所以,很多時(shí)候,我的主要工作就是“待在那里”,執(zhí)行管理和發(fā)布任務(wù)。換句話說(shuō),我的工作通常更多地是關(guān)于維護(hù)過(guò)程,而不是底層代碼。

Jeremy Andrews:你的工作環(huán)境是怎樣的?比如,你是喜歡黑暗、不會(huì)受人打擾的房間,還是喜歡能看到風(fēng)景的房間?你喜歡在安靜的環(huán)境下工作,還是喜歡一邊聽(tīng)音樂(lè)一邊工作?你通常使用哪種硬件?你是在終端上使用 vi 來(lái)評(píng)審代碼,還是使用某種奇特的 IDE?你是否有偏愛(ài)的 Linux 發(fā)行版作為開(kāi)發(fā)環(huán)境?

Linus Torvalds: 我的房間并不“暗”,但我確實(shí)把桌子旁邊窗戶上的百葉窗關(guān)上了,因?yàn)槲也幌胍獜?qiáng)烈的陽(yáng)光。所以,我的房間沒(méi)有什么風(fēng)景視野,只有一張(凌亂的)桌子,配了兩個(gè) 4k 顯示器,桌子下面有一臺(tái)強(qiáng)勁的電腦主機(jī)。還有幾臺(tái)筆記本電腦供我測(cè)試和在路上用。

我喜歡安靜地工作。我很討厭機(jī)械硬盤(pán)的滴答聲,所以我把它們?nèi)舆M(jìn)了垃圾桶,現(xiàn)在只使用 SSD。這樣已經(jīng) 10 多年了。嘈雜的 CPU 風(fēng)扇聲也是不可接受的。

代碼評(píng)審都是在傳統(tǒng)的終端上完成的,不過(guò)我沒(méi)有使用 vi。我使用的是“micro-emacs”這個(gè)令人討厭的東西。它與 GNU emacs 完全沒(méi)有關(guān)系,只是有些鍵綁定與它相似。我在赫爾辛基大學(xué)時(shí)就習(xí)慣用它了,到現(xiàn)在還沒(méi)改掉這個(gè)習(xí)慣。幾年前,我給它增加了(非常有限的)utf-8 支持,但它確實(shí)很老舊了,所有的跡象都表明它是在 80 年代開(kāi)發(fā)的,我使用的版本是一個(gè)自 90 年代中期以來(lái)就沒(méi)有更新過(guò)的分支。

赫爾辛基大學(xué)選擇了這個(gè)工具,因?yàn)樗梢栽?DOS、VAX/VMS 和 Unix 上運(yùn)行,這也是為什么我也會(huì)用它。到現(xiàn)在,我的手指已經(jīng)對(duì)它形成肌肉記憶了。我真的需要換個(gè)有人維護(hù)并支持 utf-8 的工具,只是我增強(qiáng)的那部分功能用起來(lái)還好,所以一直沒(méi)有強(qiáng)迫我的手指去接受新的工具。

我的工作桌面相當(dāng)簡(jiǎn)單:幾個(gè)文本終端,一個(gè)打開(kāi)了電子郵箱的瀏覽器(還打開(kāi)了其他幾個(gè)標(biāo)簽,主要是新聞和科技網(wǎng)站)。我喜歡大的桌面空間,因?yàn)槲伊?xí)慣使用大終端窗口(100x40 是我的默認(rèn)初始大?。?,并且并排打開(kāi)好幾個(gè)。我使用了兩個(gè) 4k 顯示器。我在所有的機(jī)器上都安裝了 Fedora 發(fā)行版,并不是因?yàn)槲移珢?ài)它,而是因?yàn)槲伊?xí)慣了。我并不太關(guān)心使用哪個(gè)發(fā)行版——對(duì)于我來(lái)說(shuō),選擇發(fā)行版只是在機(jī)器上安裝 Linux 和開(kāi)發(fā)工具的一種方式。

Jeremy Andrews:Linux 內(nèi)核郵件組(https://lore.kernel.org/lkml/)是人們公開(kāi)交流內(nèi)核開(kāi)發(fā)的地方,流量非常高。你是怎么處理這么多電子郵件的?你嘗試過(guò)郵件組之外的其他協(xié)作和溝通解決方案嗎?或者說(shuō),這種簡(jiǎn)單的郵件組對(duì)你的工作來(lái)說(shuō)足夠好嗎?

Linus Torvalds: 我沒(méi)有直接閱讀內(nèi)核郵件組里的郵件,而且好幾年都沒(méi)有。郵件太多了。

內(nèi)核郵件組里的郵件會(huì)被抄送到所有的討論當(dāng)中。當(dāng)新人加入討論時(shí),他們可以通過(guò)查看內(nèi)核郵件組來(lái)了解相關(guān)的歷史和背景。

過(guò)去我會(huì)訂閱郵件組,讓所有沒(méi)有抄送給我的電子郵件自動(dòng)歸檔,默認(rèn)不看它們。當(dāng)一些問(wèn)題需要我介入時(shí),我可以找到所有相關(guān)的討論,因?yàn)樗鼈兌荚谖业碾娮余]件里,只是在需要時(shí)才會(huì)出現(xiàn)在我的收件箱里。

現(xiàn)在,我使用的是 lore.kernel.org 提供的功能,因?yàn)樗芎糜?,而且我們還基于它開(kāi)發(fā)了一些工具。這樣就不需要讓郵件自動(dòng)歸檔了,我們換了一種討論方式,但基本的工作流程是一樣的。

但很顯然,我仍然會(huì)收到很多郵件——但從很多方面來(lái)看,這些年來(lái)情況變得越來(lái)越好,而不是越來(lái)越糟。其中很大一部分原因是 Git 和內(nèi)核發(fā)布流程的改進(jìn):我們過(guò)去在代碼流程和工具方面存在很多問(wèn)題。在本世紀(jì)初是最為糟糕的,當(dāng)時(shí)我們?nèi)匀辉谔幚砭薮蟮难a(bǔ)丁炸彈,我們的開(kāi)發(fā)流程存在嚴(yán)重的可伸縮性問(wèn)題。

郵件組模式確實(shí)運(yùn)作得很好,但并不是說(shuō)人們就不使用除電子郵件之外的其他溝通方式了:有些人喜歡各種實(shí)時(shí)聊天工具(比如傳統(tǒng)的 IRC)。雖然我不是很喜歡這樣,但很顯然有些人喜歡用它們來(lái)進(jìn)行頭腦風(fēng)暴。但這種“郵件組存檔”模式運(yùn)作得非常好,并且能夠無(wú)縫地與“開(kāi)發(fā)者之間以郵件的形式發(fā)送補(bǔ)丁”和“以郵件的形式發(fā)送問(wèn)題報(bào)告”相結(jié)合。

所以電子郵件仍然是主要的溝通渠道,并且因?yàn)猷]件中可以包含補(bǔ)丁,我們可以更容易地討論技術(shù)問(wèn)題。而且郵件可以跨越時(shí)區(qū),當(dāng)參與者分布在不同地區(qū)時(shí),這一點(diǎn)非常重要。

Jeremy Andrews:我密切關(guān)注內(nèi)核開(kāi)發(fā)大約有 10 年了,并在 KernelTrap 上寫(xiě)與內(nèi)核有關(guān)的博文,大概是在 3.0 內(nèi)核發(fā)布時(shí)停止更新博客。3.0 內(nèi)核的發(fā)布與 2.6.x 內(nèi)核的發(fā)布相隔了 8 年。請(qǐng)總結(jié)一下自 3.0 版本以來(lái)內(nèi)核開(kāi)發(fā)中發(fā)生的一些有趣的事情。

Linus Torvalds: 那是很久以前的事了,我不知道該從哪里開(kāi)始總結(jié)。從 3.0 版本到現(xiàn)在已經(jīng) 10 年了,在這 10 年中發(fā)生了很多技術(shù)上的變化。ARM 已經(jīng)發(fā)展成熟,ARM64 已經(jīng)成為我們的主要架構(gòu)之一,并出現(xiàn)了大量新的驅(qū)動(dòng)程序和核心功能。

如果說(shuō)過(guò)去 10 年有什么有趣的事情,那一定是我們努力保持開(kāi)發(fā)模式的穩(wěn)定,以及那些沒(méi)有發(fā)生改變的東西。

在過(guò)去的幾十年里,我們經(jīng)歷了多種不同的版本號(hào)方案和不同的開(kāi)發(fā)模式,3.0 版本最終確定了后來(lái)一直使用的模式。它讓“基于時(shí)間發(fā)布,版本號(hào)只是數(shù)字,與特性無(wú)關(guān)”這一說(shuō)法落地了。

在 2.6.x 版本中,我們就有了基于時(shí)間的發(fā)布模式,所以它并不是什么新東西,但 3.0 版本確實(shí)是讓這種模式板上釘釘?shù)闹陵P(guān)重要的一步。

我們以前使用隨機(jī)編號(hào)方案(主要是在 1.0 版本之前),然后用“奇數(shù)表示開(kāi)發(fā)版內(nèi)核,偶數(shù)表示穩(wěn)定的生產(chǎn)就緒版內(nèi)核”,然后在 2.6.x 版本中,我們開(kāi)始進(jìn)入基于時(shí)間的發(fā)布模式。但人們?nèi)匀粚?duì)“什么時(shí)候需要增加主版本號(hào)”存在疑問(wèn)。3.0 版本正式發(fā)布后,宣告了主版本號(hào)沒(méi)有任何意義,我們盡量簡(jiǎn)化數(shù)字,不要讓它們變得太大。

因此,在過(guò)去的 10 年里,我們做了巨大的改變(有了 Git,就可以很容易地得到一些數(shù)字統(tǒng)計(jì)數(shù)據(jù):超過(guò) 1.7 萬(wàn)人提交了大約 75 萬(wàn)次代碼),但開(kāi)發(fā)模式仍然相當(dāng)穩(wěn)定。

但并非一直都是這樣的,內(nèi)核開(kāi)發(fā)的前 20 年經(jīng)歷了相當(dāng)痛苦的開(kāi)發(fā)模式變更,只是在過(guò)去 10 年中,發(fā)布可預(yù)測(cè)性才得到大幅提升。

Jeremy Andrews:目前,最新的版本是 5.12-rc5?,F(xiàn)在的發(fā)布流程標(biāo)準(zhǔn)是怎樣的?例如,-rc1 和 -rc2 有什么不同?你會(huì)在什么情況下決定正式發(fā)布其中一個(gè)給定的版本?如果在正式發(fā)布之后出現(xiàn)了大量的回歸會(huì)怎樣?這種情況發(fā)生的頻率是怎樣的?這些年來(lái),這個(gè)過(guò)程是如何演變的?

Linus Torvalds: 我之前提到過(guò),這個(gè)過(guò)程本身是很標(biāo)準(zhǔn)的,并且在過(guò)去十年里一直如此。在此之前,它經(jīng)歷了幾次演變,但實(shí)際上從 3.0 開(kāi)始它就像時(shí)鐘一樣走得很穩(wěn)定。

到現(xiàn)在為止,我們的發(fā)布節(jié)奏是這樣的:先是兩周的合并時(shí)間窗口,然后是大約 6 到 8 周的候選版本,然后是最終版本。這樣子差不多 15 年了。

規(guī)則一直都是一樣的,盡管它們并不總是被完全嚴(yán)格執(zhí)行:合并時(shí)間窗口是針對(duì)那些被認(rèn)為已經(jīng)“經(jīng)過(guò)測(cè)試和準(zhǔn)備就緒”的新代碼,然后在接下來(lái)的大約兩個(gè)月里進(jìn)行修復(fù),以確保所有的問(wèn)題都得到解決。有時(shí)候,那些所謂的“就緒”代碼會(huì)在發(fā)布之前會(huì)被禁用或完全推翻。

這個(gè)過(guò)程會(huì)重復(fù),所以我們大約每 10 周發(fā)布一次。

達(dá)到可以發(fā)布的標(biāo)準(zhǔn)是我對(duì)候選版本有足夠的信心,而這是以各種問(wèn)題報(bào)告為基礎(chǔ)的。如果某些方面在 rc 后期仍然會(huì)出問(wèn)題,我就極力推翻這些內(nèi)容,并建議將其放在后續(xù)的版本中。但總體而言,很少會(huì)出現(xiàn)這種情況。

這樣就完全沒(méi)有問(wèn)題了嗎?不是的。一旦內(nèi)核發(fā)布了,就會(huì)有新用戶,他們會(huì)發(fā)現(xiàn)一些在 rc 版本中沒(méi)有被發(fā)現(xiàn)的問(wèn)題。這幾乎是不可避免的。這也是為什么我們需要“穩(wěn)定內(nèi)核”樹(shù)。在發(fā)布之后,我們可以繼續(xù)修復(fù)代碼。一些穩(wěn)定內(nèi)核比其他版本內(nèi)核維護(hù)的時(shí)間更長(zhǎng),被稱為 LTS(“Long Term Support”)版本。

所有這些在過(guò)去十年里都沒(méi)有什么變化,盡管后來(lái)有了更多的自動(dòng)化流程。一般來(lái)說(shuō),內(nèi)核測(cè)試自動(dòng)化是很困難的——因?yàn)楹芏鄡?nèi)核是驅(qū)動(dòng)程序,十分依賴硬件的可用性。不過(guò),我們有幾個(gè)測(cè)試場(chǎng)同時(shí)進(jìn)行引導(dǎo)和性能測(cè)試,以及各種隨機(jī)負(fù)載測(cè)試。這些在這幾年有了很大的改善。

Jeremy Andrews:去年 11 月,有人說(shuō)你對(duì)蘋(píng)果公司在部分新款電腦中使用的 ARM64 芯片十分感興趣。Linux 會(huì)支持它們嗎?我看到一些代碼被合并到 for-next。即將到來(lái)的 5.13 內(nèi)核有可能在蘋(píng)果 MacBook 上啟動(dòng)嗎?你有可能是它的早期采用者嗎?ARM64 有什么重大的意義?

Linus Torvalds: 我偶爾會(huì)跟進(jìn)一下,但現(xiàn)在說(shuō)這些還為時(shí)過(guò)早。正如你所說(shuō)的,早期支持可能會(huì)被合并到 5.13 中,但這只是一個(gè)開(kāi)始,并不能說(shuō)明 Linux 和蘋(píng)果電腦將來(lái)會(huì)怎樣。

主要問(wèn)題不是 arm64 架構(gòu),而是與之相關(guān)的所有硬件驅(qū)動(dòng)程序(特別是 SSD 和 GPU)。到目前為止,一些底層的東西得到了支持,但除了可以啟用硬件之外,沒(méi)有任何有用的結(jié)果。要想達(dá)到可以被人們使用的程度,還需要一些時(shí)間。

不僅僅是蘋(píng)果的硬件得到了改進(jìn)——arm64 架構(gòu)總體上也已經(jīng)成長(zhǎng)了很多,內(nèi)核在服務(wù)器領(lǐng)域也更具競(jìng)爭(zhēng)力了。不久前,arm64 在服務(wù)器領(lǐng)域的競(jìng)爭(zhēng)力還很弱,但亞馬遜的 Graviton2 和安培的 Altra 處理器——都是基于改進(jìn)后的 ARM Neoverse IP——比幾年前的產(chǎn)品要好很多。

我已經(jīng)等了十多年都沒(méi)能等到一個(gè)可用的 ARM 機(jī)器,可能還要繼續(xù)等下去,但情況明顯比以前好了一些。

事實(shí)上,我很早之前就想要一臺(tái) ARM 機(jī)器。當(dāng)我還是個(gè)少年,我真正想要的是一臺(tái) Acorn Archimedes,但可用性和價(jià)格讓我最終選擇了 Sinclair QL(M68008 處理器),然后幾年后換成了 i386。

所以,這個(gè)想法已經(jīng)醞釀了幾十年。但到現(xiàn)在它們還沒(méi)有被廣泛使用,而且對(duì)于我來(lái)說(shuō),它們?cè)趦r(jià)格和性能方面都不具競(jìng)爭(zhēng)力。希望在不久的將來(lái),這個(gè)想法能夠變成現(xiàn)實(shí)。

Jeremy Andrews:內(nèi)核中有什么東西需要進(jìn)行完全的重寫(xiě)才能達(dá)到最優(yōu)的嗎?或者說(shuō),內(nèi)核已經(jīng)有 30 年的歷史了,知識(shí)、編程語(yǔ)言和硬件在這 30 年里發(fā)生了很大的變化:如果現(xiàn)在讓你從頭開(kāi)始重寫(xiě),你會(huì)做出哪些改變?

Linus Torvalds: 如果有必要的話我們會(huì)這么做的。我們真的很擅長(zhǎng)重寫(xiě),那些本來(lái)會(huì)造成災(zāi)難的東西很久以前就被我們重寫(xiě)了。

我們有很多“兼容”層,不過(guò)它們一般不會(huì)造成太大問(wèn)題。如果從頭開(kāi)始重寫(xiě),這些兼容層是否要去掉,我們還不清楚——它們存在的目的是為了與舊二進(jìn)制文件向后兼容(通常是與舊架構(gòu)向后兼容,例如在 x86-64 上運(yùn)行 32 位的 x86 應(yīng)用程序)。因?yàn)槲艺J(rèn)為向后兼容是非常重要的,所以即使重寫(xiě),我也希望保留這些兼容層。

所以很明顯,有很多東西并不是最優(yōu)的,畢竟任何東西都有改進(jìn)的空間。但就你提的這個(gè)問(wèn)題,我不得不說(shuō),我不鄙視任何東西。有一些遺留驅(qū)動(dòng)程序,可能沒(méi)有人關(guān)心,也沒(méi)有人去清理,會(huì)做一些丑陋的事情,但這主要是因?yàn)椤皼](méi)有人關(guān)心”。這些在過(guò)去不是問(wèn)題,而一旦成為問(wèn)題,我們就會(huì)積極把這些沒(méi)人關(guān)心的東西移除掉。多年來(lái),我們已經(jīng)移除了很多驅(qū)動(dòng)程序,當(dāng)維護(hù)不再有任何意義時(shí),我們會(huì)放棄整個(gè)架構(gòu)支持。

“重寫(xiě)”的主要原因是:整個(gè)架構(gòu)不再有意義,但仍然存在一些應(yīng)用場(chǎng)景。最有可能的情況是,一些小型嵌入式系統(tǒng)并不需要 Linux 提供的所有東西,它們的硬件很小,需要的是更簡(jiǎn)單、更少的系統(tǒng)功能。

Linux 已經(jīng)有了長(zhǎng)足的發(fā)展。現(xiàn)在,即使是小硬件(比如手機(jī)等)也比當(dāng)初開(kāi)發(fā) Linux 所使用的機(jī)器強(qiáng)大得多。

Jeremy Andrews:如果用 Rust 來(lái)重寫(xiě)一部分系統(tǒng)會(huì)怎樣?在這方面還有改進(jìn)的余地嗎?在內(nèi)核開(kāi)發(fā)方面,你覺(jué)得是否有可能用另一種語(yǔ)言(比如 Rust)來(lái)取代 C 語(yǔ)言?

Linus Torvalds: 我不認(rèn)為我們會(huì)用 Rust 取代 C 語(yǔ)言來(lái)開(kāi)發(fā)內(nèi)核,但可能會(huì)用來(lái)開(kāi)發(fā)一些驅(qū)動(dòng)程序,也許是整個(gè)驅(qū)動(dòng)子系統(tǒng),也許是文件系統(tǒng)。所以不是“取代 C 語(yǔ)言”,而是“在一些有意義的地方擴(kuò)展我們的 C 代碼”。

當(dāng)然,驅(qū)動(dòng)程序幾乎占了內(nèi)核的一半代碼,有非常大的重寫(xiě)空間,但我不認(rèn)為所有人都會(huì)很期待使用 Rust 全盤(pán)重寫(xiě)現(xiàn)有的驅(qū)動(dòng)程序??赡堋坝行┤藭?huì)用 Rust 開(kāi)發(fā)新驅(qū)動(dòng)程序,或者適當(dāng)?shù)刂貙?xiě)一部分舊驅(qū)動(dòng)程序”。

現(xiàn)在更多的是“人們?cè)趪L試和體驗(yàn)”Rust,僅此而已。Rust 優(yōu)勢(shì)的背后肯定存在復(fù)雜性,所以我會(huì)采取觀望的態(tài)度,看看這些優(yōu)勢(shì)是否真的奏效。

Jeremy Andrews:內(nèi)核中是否有你個(gè)人感到最自豪的部分?

Linus Torvalds: 我最想說(shuō)的是 VFS 層(虛擬文件系統(tǒng),特別是路徑名查找)和 VM。前者是因?yàn)?Linux 在做一些基礎(chǔ)任務(wù)(在操作系統(tǒng)中查找文件名確實(shí)是一個(gè)核心的操作)時(shí)比其他系統(tǒng)都要好得多,后者主要是因?yàn)槲覀冎С?20 多種架構(gòu),但仍然在使用一個(gè)基本統(tǒng)一的 VM 層,我認(rèn)為這一點(diǎn)很了不起。

但與此同時(shí),這很大程度上取決于“你最關(guān)注內(nèi)核的哪一部分”。內(nèi)核很大,不同的開(kāi)發(fā)者(和不同的用戶)會(huì)關(guān)注不同的方面。有些人認(rèn)為調(diào)度是內(nèi)核中最令人感到興奮的部分,有些人則關(guān)注設(shè)備驅(qū)動(dòng)程序的細(xì)節(jié)(我們有很多這樣的驅(qū)動(dòng)程序)。我個(gè)人在 VM 和 VFS 這兩個(gè)方面參與得更多,所以自然會(huì)提到它們。

Jeremy Andrews:我看了這個(gè)關(guān)于路徑名查找的描述(https://www.kernel.org/doc/html/latest/filesystems/path-lookup.html),它比我預(yù)想的要復(fù)雜。是什么讓 Linux 在這方面比其他操作系統(tǒng)做得更好?你說(shuō)的“更好”是什么意思?

Linus Torvalds: 路徑名查找是一個(gè)非常常見(jiàn)和基礎(chǔ)的任務(wù),以至于大多數(shù)非內(nèi)核開(kāi)發(fā)者不認(rèn)為它會(huì)是一個(gè)問(wèn)題:他們只知道打開(kāi)文件,并認(rèn)為這是理所當(dāng)然的。

但要做好其實(shí)是相當(dāng)復(fù)雜的。確切地說(shuō),因?yàn)閹缀跛械胤蕉荚谟寐窂矫檎?,所以?duì)性能要求很高,而且大家都希望它在 SMP 環(huán)境中具有良好的伸縮性,而在鎖定方面又很復(fù)雜。你不想發(fā)生 IO,那么緩存就非常重要。路徑名查找是如此的重要,以至于你不能把它留給底層的文件系統(tǒng),因?yàn)槲覀冇?20 多種不同的文件系統(tǒng),讓它們各自擁有自己的緩存和鎖定機(jī)制將是一場(chǎng)徹頭徹尾的災(zāi)難。

所以,VFS 層的一個(gè)主要任務(wù)是處理所有路徑名組件的鎖定和緩存問(wèn)題,以及所有的序列化和掛載點(diǎn)遍歷問(wèn)題,這些都是通過(guò)無(wú)鎖算法(RCU)來(lái)完成的,但也會(huì)有一些非常智能的鎖(Linux 內(nèi)核的“l(fā)ockref”鎖是一種非常特殊的“帶有引用計(jì)數(shù)的自旋鎖”,表面上看是為 dcache 緩存而設(shè)計(jì)的,但本質(zhì)上是一個(gè)專門(mén)的鎖感知引用計(jì)數(shù),可以在某些常見(jiàn)情況下消除鎖)。

最終結(jié)果是:底層文件系統(tǒng)仍然需要對(duì)未緩存的內(nèi)容進(jìn)行查找,但它們不需要關(guān)心緩存和一致性規(guī)則以及與路徑名查找相關(guān)的原子性規(guī)則。VFS 會(huì)為它們處理好所有這些問(wèn)題。而且它的性能比任何其他操作系統(tǒng)都要好,基本上可以在擁有數(shù)千個(gè) CPU 的機(jī)器上完美運(yùn)行。

所以不僅僅是“更好”,而是“大寫(xiě)”的更好。沒(méi)有什么能與之相提并論的了。Linux dcache 是獨(dú)一無(wú)二的。

Jeremy Andrews:過(guò)去的一年對(duì)全世界來(lái)說(shuō)是艱難的一年。新冠疫情對(duì)內(nèi)核開(kāi)發(fā)進(jìn)程帶來(lái)了哪些影響?

Linus Torvalds: 實(shí)際上,得益于我們一直以來(lái)的工作方式,它的影響非常小。電子郵件真的是一個(gè)很好的工具,我們并不依賴面對(duì)面的會(huì)議。

是的,它確實(shí)影響了去年的年度內(nèi)核峰會(huì)(今年的峰會(huì)仍懸而未決),大多數(shù)會(huì)議被取消或轉(zhuǎn)為線上進(jìn)行。以前在辦公室工作的人大都開(kāi)始在家里工作(但很多核心內(nèi)核維護(hù)者在之前已經(jīng)這么做了)。所以,周圍的很多東西都發(fā)生了改變,但內(nèi)核開(kāi)發(fā)還是像以前一樣。

很顯然,新冠疫情在其他方面影響了我們所有人的生活,但總的來(lái)說(shuō),作為幾乎完全通過(guò)電子郵件進(jìn)行交流的內(nèi)核開(kāi)發(fā)人員,我們可能是受影響最小的。

版本控制系統(tǒng) Git

Jeremy Andrews:Linux 只是你對(duì)開(kāi)源做出的眾多貢獻(xiàn)中的一個(gè)。在 2005 年,你還創(chuàng)建了 Git,一個(gè)非常流行的分布式源代碼控制系統(tǒng)。你快速地將 Linux 內(nèi)核源代碼樹(shù)從專有的 Bitkeeper 遷移到開(kāi)源的 Git 系統(tǒng)中,并在同年將維護(hù)工作移交給了 Junio Hamano。這里有很多有趣的故事,是什么原因促使你這么快就將項(xiàng)目的領(lǐng)導(dǎo)權(quán)移交了出來(lái),你是如何找到并選擇了 Junio 的?

Linus Torvalds: 答案可以分為兩個(gè)部分。

首先,我并不想創(chuàng)建一個(gè)新的源代碼控制系統(tǒng)。開(kāi)發(fā) Linux 是因?yàn)橛布蛙浖g的底層接口很吸引我——基本上是出于個(gè)人的熱愛(ài)和興趣。相反,開(kāi)發(fā) Git 是因?yàn)榇_實(shí)有這個(gè)需要:不是因?yàn)槲矣X(jué)得源代碼控制很有趣,而是因?yàn)槲沂直梢暿忻嫔系拇蠖鄶?shù)源代碼控制系統(tǒng)。而我覺(jué)得最合適的、在 Linux 開(kāi)發(fā)當(dāng)中很好用的 BitKeeper 已經(jīng)無(wú)法維持下去了。

我開(kāi)發(fā) Linux 已經(jīng)超過(guò) 30 年了(距離第一個(gè)版本的周年紀(jì)念還有幾個(gè)月,但在 30 年前我就開(kāi)始研究 Linux 的“前身”了),并且一直在維護(hù)它。但 Git 呢?我從來(lái)沒(méi)有想過(guò)我真的想要長(zhǎng)期維護(hù)它。我喜歡用它,而且在某種程度上,我認(rèn)為它是最好的 SCM,但它并不是我的興趣所在。

所以我總是希望別人來(lái)為我維護(hù) SCM——事實(shí)上,如果當(dāng)初我不用自己開(kāi)發(fā)這個(gè) SCM,我會(huì)很開(kāi)心。

以上就是故事的背景。

至于 Junio,他實(shí)際上是最早加入 Git 開(kāi)發(fā)隊(duì)伍的人員之一。他在我將 Git 的第一個(gè)非常粗糙的版本公開(kāi)后的幾天內(nèi)提交了第一次變更代碼,所以 Junio 在 Git 一開(kāi)始就參與其中了。

但我之所以把項(xiàng)目交給 Junio,并不是因?yàn)樗堑谝慌鷧⑴c項(xiàng)目的人。在維護(hù)了 Git 幾個(gè)月之后,讓我決定將項(xiàng)目交給 Junio 維護(hù)者的真正原因是“好品味”——一個(gè)很難描述的概念。我真的想不到還有什么更好的描述:編程主要是為了解決技術(shù)問(wèn)題,但如何解決這些問(wèn)題以及如何思考也很重要。隨著時(shí)間的推移,你開(kāi)始意識(shí)到:有些人就有這種“好品味”,他總能選擇正確的解決方案。

我不想將編程說(shuō)成是一門(mén)藝術(shù),因?yàn)樗鼘?shí)際上主要是關(guān)于“好的工程”。我很喜歡托馬斯·愛(ài)迪生的那句“天才是百分之一的靈感加上百分之九十九的汗水”:編程涉及的幾乎都是細(xì)枝末節(jié)的東西和日常繁重的工作。但是,那百分之一的“靈感”,也就是“好品味”,不僅要解決問(wèn)題,而且要干凈、漂亮地解決。

Junio 就有那種“好品味”。

每次提到 Git,我都想試著講清楚:我在一開(kāi)始提出了 Git 的核心思想,并經(jīng)常因?yàn)檫@部分工作而獲得太多榮譽(yù)。Git 的這 15 年,我也只是在第一年真正參與了項(xiàng)目。Junio 是一個(gè)優(yōu)秀的維護(hù)者,是他讓 Git 變成現(xiàn)在的樣子。

順便說(shuō)一下,關(guān)于“好品味”,以及找到擁有好品味的人,并信任他們——不僅僅 Git 是這樣,Linux 也是這樣。與 Git 不一樣的是,Linux 這個(gè)項(xiàng)目我仍然在積極維護(hù),但與 Git 一樣的是,Linux 也是一個(gè)有很多人共同參與的項(xiàng)目。我認(rèn)為,Linux 的一大成功是它擁有數(shù)百名維護(hù)者,他們都具備了“好品味”,并維護(hù)著內(nèi)核的不同部分。

Jeremy Andrews:你有沒(méi)有過(guò)這樣的經(jīng)歷:把控制權(quán)交給維護(hù)者,然后發(fā)現(xiàn)這是一個(gè)錯(cuò)誤的決定?

Linus Torvalds: 我們的維護(hù)體系從來(lái)就不是非黑即白的,所以不會(huì)出現(xiàn)這種情況。事實(shí)上,我們甚至沒(méi)有將維護(hù)權(quán)正式記錄下來(lái):我們確實(shí)有一個(gè) MAINTAINERS 文件,但那只是為了讓你在遇到問(wèn)題時(shí)能夠找到對(duì)的人,并不是某種排他所有權(quán)的標(biāo)志。所以,“誰(shuí)負(fù)責(zé)什么東西”更像是一種流動(dòng)的指南,以及“這個(gè)人很活躍,工作做得很好”,而不是“我們把所有權(quán)給了那個(gè)人,然后他搞砸了”。

從某種意義上說(shuō),我們的維護(hù)體系也是流動(dòng)的。假設(shè)你是某個(gè)子系統(tǒng)的維護(hù)者,如果你需要另一個(gè)子系統(tǒng)的東西,是可以跨界的。通常人們?cè)谶@樣做之前都會(huì)進(jìn)行廣泛的溝通,而且這種事情確實(shí)發(fā)生了。這并不是“你只能動(dòng)這個(gè)文件”之類的硬性規(guī)定。

實(shí)際上,這與前面討論的有關(guān)許可的事情有些聯(lián)系?!癎it”的另一個(gè)設(shè)計(jì)原則是“每個(gè)人都有自己的代碼樹(shù),但沒(méi)有哪一個(gè)代碼樹(shù)是特殊的”。

因?yàn)楹芏嗥渌?xiàng)目都使用了工具——比如 CVS 或 SVN——這些工具會(huì)讓一些人變得“特殊”,賦予了他們某種“所有權(quán)”。在 BSD 世界里,他們稱之為“commit bit”:給一個(gè)維護(hù)者“commit bit”意味著他可以將代碼提交到中央代碼庫(kù)。

我一直很討厭這種模式,因?yàn)樗鼤?huì)不可避免地導(dǎo)致政治“小團(tuán)體”的出現(xiàn)。在這種模式下,總有一些人是特殊、隱性受信任的。問(wèn)題的關(guān)鍵甚至不在于“隱性受信任”,而在于硬幣的另一面——其他人不被信任,他們被定義成局外人,必須受制于監(jiān)護(hù)者。

同樣,在 Git 開(kāi)發(fā)中也不存在這種情況。每個(gè)人都是平等的,任何人都可以克隆代碼,做自己的開(kāi)發(fā),做好了,就可以合并回來(lái)。

所以,沒(méi)有必要給人們特權(quán),也不需要“commit bit”。這樣就可以避免出現(xiàn)政治“小團(tuán)體”,也不需要“隱性信任”。如果他們做得不好——或者更常見(jiàn)的是,最終消失了,并轉(zhuǎn)向了另一個(gè)興趣——他們的代碼就不會(huì)被合并回來(lái),也不會(huì)阻礙其他有新想法的人。

Jeremy Andrews:Git 有沒(méi)有哪些新特性讓你印象深刻,并成為你工作流的一部分?還有哪些特性是你想要增加的?

Linus Torvalds: 我對(duì) Git 的需求總是最早得到滿足的,所以,對(duì)于我來(lái)說(shuō),Git 沒(méi)有“新”特性。

這些年來(lái),Git 確實(shí)有很大的改進(jìn),有一些在我的工作流中已經(jīng)體現(xiàn)出來(lái)了。例如,Git 的速度一直都很快——畢竟這是我的設(shè)計(jì)目標(biāo)之一——但它的大部分特性最初是圍繞 shell 腳本而構(gòu)建的。多年來(lái),大多數(shù) shell 腳本都已經(jīng)消失了,這意味著我可以比原來(lái)更快地應(yīng)用 Andrew Morton 的補(bǔ)丁。這一點(diǎn)令人感到欣慰,因?yàn)檫@實(shí)際上是我早期用于性能測(cè)試的基準(zhǔn)之一。

所以,Git 對(duì)我來(lái)說(shuō)一直都很好,而且變得越來(lái)越好。

Git 最大的改進(jìn)在于“普通用戶”的使用體驗(yàn)變得更好了。一部分原因是人們?cè)趯W(xué)習(xí) Git 工作流的過(guò)程中逐漸習(xí)慣了它,但更多的是因?yàn)?Git 本身變得更易于使用。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CVS
    CVS
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    10970
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    15689
  • svn
    svn
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    8614

原文標(biāo)題:Linux之父:我們不會(huì)用Rust取代C語(yǔ)言開(kāi)發(fā)內(nèi)核

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    未來(lái)嵌入式系統(tǒng)的黃金搭檔 MCX N947遇上Rust

    ? Rust 介紹 Rust 是一門(mén)注重安全的語(yǔ)言,相比于 C/C++/ASM 有著更高級(jí)的抽象能力、編譯器帶來(lái)的安全特性與廣泛友好的社區(qū)支
    的頭像 發(fā)表于 07-25 09:14 ?1069次閱讀
    未來(lái)嵌入式系統(tǒng)的黃金搭檔 MCX N947遇上<b class='flag-5'>Rust</b>

    Linux 6.10集成RISC-V更新,支持Rust編程語(yǔ)言

    本次補(bǔ)丁升級(jí)中,Linux內(nèi)核進(jìn)一步擴(kuò)展了對(duì)應(yīng)于RISC-V架構(gòu)的Rust編程語(yǔ)言支持。在此之前,Rust已可應(yīng)用在x86_64、龍芯Loo
    的頭像 發(fā)表于 05-23 17:16 ?779次閱讀

    在Aurix Tc375Lk上使用Rust編程語(yǔ)言可以嗎?

    您好,如果我想在 Aurix Tc375Lk 上使用 Rust 編程語(yǔ)言,可以嗎?如果是,鏈接 rust 編譯器 ADS 和 freetoolchain 的步驟是什么?你有在 ADS 或 freetoolchian 中鏈接編譯器
    發(fā)表于 05-17 13:42

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【Rust模塊配置規(guī)則和指導(dǎo)】

    Rust是一門(mén)靜態(tài)強(qiáng)類型語(yǔ)言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開(kāi)發(fā)等優(yōu)勢(shì)。Rust官方也使用Cargo工具來(lái)專門(mén)為Rust
    的頭像 發(fā)表于 05-10 11:32 ?1062次閱讀
    鴻蒙OpenHarmony<b class='flag-5'>開(kāi)發(fā)</b>板解析:【<b class='flag-5'>Rust</b>模塊配置規(guī)則和指導(dǎo)】

    [鴻蒙]OpenHarmony4.0的Rust開(kāi)發(fā)

    背景 Rust 是一門(mén)靜態(tài)強(qiáng)類型語(yǔ)言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開(kāi)發(fā)等優(yōu)勢(shì)。Rust 官方也使用 Cargo 工具來(lái)專門(mén)為
    的頭像 發(fā)表于 02-26 17:28 ?664次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b><b class='flag-5'>開(kāi)發(fā)</b>

    谷歌捐款100萬(wàn)美元給Rust基金會(huì),以增強(qiáng)C++與Rust的交互性

    如今,谷歌多項(xiàng)核心業(yè)務(wù)仍以 C++為主要編程語(yǔ)言,雖然無(wú)法直接使用Rust替代現(xiàn)有的C++程序,但谷歌依然選擇支持Rust基金會(huì)的“Inte
    的頭像 發(fā)表于 02-19 15:41 ?470次閱讀

    C++在Linux內(nèi)核開(kāi)發(fā)中從爭(zhēng)議到成熟

    Linux 內(nèi)核郵件列表中一篇已有六年歷史的老帖近日再次引發(fā)激烈討論 —— 主題是建議將 Linux 內(nèi)核開(kāi)發(fā)
    的頭像 發(fā)表于 01-31 14:11 ?493次閱讀
    <b class='flag-5'>C</b>++在<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>開(kāi)發(fā)</b>中從爭(zhēng)議到成熟

    鴻蒙OS之Rust開(kāi)發(fā)

    Rust是一門(mén)靜態(tài)強(qiáng)類型語(yǔ)言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開(kāi)發(fā)等優(yōu)勢(shì)。
    的頭像 發(fā)表于 01-29 17:19 ?751次閱讀

    一次Rust重寫(xiě)基礎(chǔ)軟件的實(shí)踐

    受到2022年“谷歌使用Rust重寫(xiě)Android系統(tǒng)且所有Rust代碼的內(nèi)存安全漏洞為零” [1] 的啟發(fā),最近筆者懷著濃厚的興趣也順應(yīng)Rust 的潮流,嘗試著將一款C
    的頭像 發(fā)表于 01-25 11:21 ?483次閱讀

    Git開(kāi)發(fā)者關(guān)注內(nèi)存安全問(wèn)題,探討引入Rust語(yǔ)言

    根據(jù)最新披露的郵件討論,Git開(kāi)發(fā)團(tuán)隊(duì)熱議在Git項(xiàng)目中引入Rust的可行性。作為一種開(kāi)源的分布式代碼版本管理工具,廣泛運(yùn)用于各種開(kāi)發(fā)項(xiàng)目。盡管現(xiàn)在Git項(xiàng)目主要以C與Python為主
    的頭像 發(fā)表于 01-15 14:23 ?464次閱讀
    Git<b class='flag-5'>開(kāi)發(fā)</b>者關(guān)注內(nèi)存安全問(wèn)題,探討引入<b class='flag-5'>Rust</b><b class='flag-5'>語(yǔ)言</b>

    基于Rust開(kāi)發(fā)的編程語(yǔ)言

    Move 是一門(mén)由 Rust 語(yǔ)言開(kāi)發(fā)的一門(mén)面向資產(chǎn)的編程語(yǔ)言,最早由 Facebook (現(xiàn) Meta )投入大量的人力物力開(kāi)發(fā),用于 L
    的頭像 發(fā)表于 11-17 12:30 ?581次閱讀

    開(kāi)發(fā)ARM單片機(jī)時(shí)會(huì)不會(huì)用到JSON?

    開(kāi)發(fā)ARM單片機(jī)時(shí),會(huì)不會(huì)用到JSON 會(huì)在哪些方面用到?如何使用?
    發(fā)表于 10-30 06:32

    基于ARM Linux和S3C2440的嵌入式Linux內(nèi)核設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于ARM Linux和S3C2440的嵌入式Linux內(nèi)核設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-12 10:37 ?2次下載
    基于ARM <b class='flag-5'>Linux</b>和S3<b class='flag-5'>C</b>2440的嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>設(shè)計(jì)

    Rust語(yǔ)言如何與 InfluxDB 集成

    Rust 是一種系統(tǒng)級(jí)編程語(yǔ)言,具有高性能和內(nèi)存安全性。InfluxDB 是一個(gè)開(kāi)源的時(shí)間序列數(shù)據(jù)庫(kù),用于存儲(chǔ)、查詢和可視化大規(guī)模數(shù)據(jù)集。Rust 語(yǔ)言可以與 InfluxDB 集成,
    的頭像 發(fā)表于 09-30 16:45 ?968次閱讀

    Rust GUI實(shí)踐之Rust-Qt模塊

    Rust-Qt 是 Rust 語(yǔ)言的一個(gè) Qt 綁定庫(kù),它允許 Rust 開(kāi)發(fā)者使用 Qt 框架來(lái)創(chuàng)建跨平臺(tái)的圖形界面應(yīng)用程序。Qt 是一個(gè)
    的頭像 發(fā)表于 09-30 16:43 ?1382次閱讀