<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LWN:關(guān)于明尼蘇達(dá)大學(xué)事件近期情況的匯報(bào)!

          共 3839字,需瀏覽 8分鐘

           ·

          2021-05-23 03:09

          關(guān)注了就能看到更多這么棒的文章哦~

          An update on the UMN affair

          By Jonathan Corbet
          April 29, 2021
          DeepL assisted translation
          https://lwn.net/Articles/854645/

          4 月 20 日,全世界都知道了明尼蘇達(dá)大學(xué)(UMN,University of Minnesota)進(jìn)行的一項(xiàng)研究計(jì)劃,該計(jì)劃設(shè)計(jì)有意提交錯(cuò)誤補(bǔ)丁給 Linux 內(nèi)核。在那之后,由這項(xiàng)工作產(chǎn)生的論文被撤回了,各種郵件來(lái)來(lái)回回,然后 UMN 的許多 patch 被重新 review。顯然,現(xiàn)在是時(shí)候?qū)ψ钚虑闆r進(jìn)行一下介紹了。

          關(guān)于這項(xiàng)研究的論文并不是最近事件的直接導(dǎo)火索。相反,這些事件是由 UMN 的另一位開(kāi)發(fā)者提出的一個(gè)來(lái)源于實(shí)驗(yàn)性的靜態(tài)分析工具的錯(cuò)誤 patch 引起的。這導(dǎo)致內(nèi)核社區(qū)的開(kāi)發(fā)者們懷疑這些故意提交惡意 patch 的研究工作仍在進(jìn)行。在那之后,已經(jīng)證明其實(shí)并不是這么回事,但當(dāng)整個(gè)來(lái)龍去脈變得清晰時(shí),相關(guān)的爭(zhēng)論已經(jīng)在全速進(jìn)行。

          一句老話仍然適用:人們不應(yīng)該把那些可以被解釋為能力問(wèn)題的東西歸結(jié)到惡意之上(one should not attribute to malice that which can be adequately explained by incompetence)。

          4 月 22 日,Linux 基金會(huì)技術(shù)顧問(wèn)委員會(huì)(或稱 TAB,technical advisory board,編者本人也是該委員會(huì)的成員)發(fā)表了一份簡(jiǎn)短的聲明,指出不管其他什么爭(zhēng)論,這次提出的 patch 似乎并沒(méi)有惡意。同時(shí),Linux 基金會(huì)和技術(shù)顧問(wèn)委員會(huì)給 UMN 的研究人員發(fā)了一封信,概述了應(yīng)該如何處理這種情況。這封郵件沒(méi)有公開(kāi)發(fā)布,但 ZDNet 顯然從某個(gè)地方得到了一份副本。信中內(nèi)容包括要求完全公開(kāi)作為 UMN 項(xiàng)目的一部分而提交的錯(cuò)誤 patch,并要求撤回這些工作所產(chǎn)生的論文。

          作為回應(yīng),UMN 的研究人員發(fā)布了一封公開(kāi)信,向社區(qū)道歉,幾天后又發(fā)布了他們作為 "hypocrite commits(偽裝提交)" 項(xiàng)目的一部分所做工作的總結(jié)。總共從兩個(gè)傀儡帳號(hào)提出了五個(gè) patch,但其中一個(gè)是普通的 bug fix,應(yīng)該是不小心用了這個(gè)賬號(hào)來(lái)發(fā)送。在剩下的四個(gè) patch 中,有一個(gè)是試圖插入一個(gè) bug,但是這個(gè)實(shí)現(xiàn)本身就有問(wèn)題,所以這個(gè) patch 實(shí)際上是一個(gè)有益處的 fix;另外三個(gè)(1、2、3)包含隱藏的 bug。這三個(gè)都沒(méi)有被 maintainer 所接受,盡管拒絕他們的原因并不完全是因?yàn)檫@些埋藏的 bug 本身。

          論文本身已被撤回,不會(huì)按原計(jì)劃在 5 月提交。大家基本上可以認(rèn)為 UMN 近期不會(huì)再進(jìn)行類似的研究了。

          Patch re-review

          UMN 的這些動(dòng)作引起人們關(guān)注之后,一個(gè)直接結(jié)果就是,人們對(duì) UMN 的開(kāi)發(fā)者失去了信任,并且輿論希望采取一些懲罰性的舉措。因此,當(dāng)整個(gè)事件爆發(fā)時(shí),最先發(fā)生的事情之一就是 Greg Kroah-Hartman 提出了一組190個(gè)patch組成的 patch series,他盡可能地移除了一些 UMN 的補(bǔ)丁。事實(shí)上,這并不是所有他發(fā)現(xiàn)的 UMN patch,因?yàn)樗€提到了另外 68 個(gè)需要人工 review 的 patch 清單,因?yàn)樗鼈儾蝗菀字苯?revert。

          實(shí)際上,這些 "容易 revert" 的 patch 也需要人工 review。一旦最初的憤怒過(guò)去,實(shí)際上就沒(méi)有什么意愿去 revert 那些實(shí)際上沒(méi)有錯(cuò)誤的 patch 了。在過(guò)去的一周里,這種 review 工作一直在進(jìn)行,有不少開(kāi)發(fā)人員投入了精力。大多數(shù)可疑的 patch 被證明是可以接受的(盡管可能做得不是很漂亮),也已經(jīng)從 revert 列表中移除出去了。如果編者的統(tǒng)計(jì)是正確的話,仍有 42 個(gè) patch 將被從內(nèi)核中撤出。

          對(duì)于這 42 個(gè) patch,需要 revert 的原因各不相同。有些 patch 是用在一些過(guò)時(shí)的、可能不再被使用的驅(qū)動(dòng)程序之上,也沒(méi)有人愿意去認(rèn)真 review 它們了。其他一些 patch 中,沒(méi)有很好地實(shí)現(xiàn)預(yù)期的改動(dòng),因此將會(huì)需要用更好的方式來(lái)重新實(shí)現(xiàn)。還有一些 patch 包含了嚴(yán)重的問(wèn)題,這些肯定需要被 revert 掉(而且一開(kāi)始就不應(yīng)該被接受)。

          不過(guò),看過(guò)完整的這一系列 UMN patch 之后,我們更堅(jiān)定了一些早期看法。首先,幾乎所有的 patch 都解決了某種真正的(即使是晦澀難懂的)問(wèn)題,也就是說(shuō)這些 patch 是有理由的。雖然這些 patch 中有許多由于對(duì)代碼的理解程度低因而帶有了不少錯(cuò)誤,但似乎沒(méi)有一個(gè)是出于惡意的。

          其實(shí),"惡意(malice)" 有多種定義。對(duì)一些相關(guān)的開(kāi)發(fā)者來(lái)說(shuō),把未經(jīng)驗(yàn)證的實(shí)驗(yàn)性的靜態(tài)分析工具生成的 patch 提交上來(lái)并且未告知大家這個(gè)情況,這就是一種惡意行為。這是另一種牽涉到未得到同意的人的實(shí)驗(yàn)。至少,這是對(duì)內(nèi)核開(kāi)發(fā)社區(qū)高效工作所依賴的信任的一種侵犯。

          190 個(gè) patch 中有 42 個(gè)有問(wèn)題的 patch,也就是 22% 的有問(wèn)題 patch 比率。其實(shí)對(duì)幾乎任何一位內(nèi)核開(kāi)發(fā)者的 190 個(gè) patch 進(jìn)行詳細(xì) review 的話,都會(huì)發(fā)現(xiàn)一些回想起來(lái)并不是一個(gè)好主意的 patch。但愿這個(gè)比率不會(huì)有 22% 這么高。但必須要支持,所有這些補(bǔ)丁都被整個(gè)內(nèi)核的多個(gè)子系統(tǒng)維護(hù)者所接受了,這不是一個(gè)很好的結(jié)果。也許這比最初研究人員所尋找的結(jié)果更有意思。他們故意插入 bug 的努力失敗了,但卻能在無(wú)意中增加幾十個(gè) bug。

          同時(shí),還有一份沒(méi)有 revert 干凈的 patch 清單。這個(gè)名單還沒(méi)有公開(kāi)發(fā)布,但 Kroah-Hartman 確實(shí)從其中的七個(gè) patch 已經(jīng)開(kāi)始在做了。他還指出,TAB 將在所有這些 patch 的 review 完成后公布一份完整的報(bào)告。到目前為止,這些 patch 沒(méi)有一個(gè)在 mainline 上被 revert,這可能會(huì)在 5.13 合并窗口結(jié)束時(shí)進(jìn)行。

          Lessons learned

          從這一系列事件中得到的關(guān)鍵教訓(xùn)之一顯然是:不要把自由軟件開(kāi)發(fā)社區(qū)作為你的實(shí)驗(yàn)性工具的一種免費(fèi)驗(yàn)證服務(wù)。內(nèi)核開(kāi)發(fā)者很高興看到新工具的出現(xiàn),并且(如果這些工具能帶來(lái)好的結(jié)果)使用它們。他們也會(huì)幫助測(cè)試這些工具,但他們不太樂(lè)意收到缺乏適當(dāng) review 和解釋的、由工具產(chǎn)生的 patch。

          另一個(gè)教訓(xùn)是我們已經(jīng)知道的:內(nèi)核維護(hù)者(以及許多其他自由軟件項(xiàng)目的維護(hù)者)工作量過(guò)大,并沒(méi)有時(shí)間正確 review 經(jīng)過(guò)他們手中的所有 patch。因此,他們不得不依賴向他們提交 patch 的開(kāi)發(fā)者的可信度。可以說(shuō),當(dāng)這種信任能很好地維持住的話,內(nèi)核開(kāi)發(fā)過(guò)程就是勉強(qiáng)可持續(xù)的。而如果進(jìn)入的 patch 一般來(lái)說(shuō)不可以被信任的話,那么這個(gè)開(kāi)發(fā)流程將無(wú)法維持下去。

          這里的推論(也是我們?cè)缫阎赖模┚褪沁M(jìn)入內(nèi)核的代碼往往不像我們所想的那樣得到很好的 review。如果人們相信每一行被合并的代碼都經(jīng)過(guò)了高質(zhì)量的內(nèi)核開(kāi)發(fā)人員的仔細(xì)審查,那么確實(shí)會(huì)非常安心。事實(shí)上,有些代碼確實(shí)得到了這種程度的 review,但不是所有的代碼。例如以 5.12 開(kāi)發(fā)周期(一個(gè)相對(duì)較小的周期)為例,它在十周的時(shí)間里向內(nèi)核添加了超過(guò) 50 萬(wàn)行的代碼。仔細(xì)審查 50 萬(wàn)行代碼所耗費(fèi)的精力將是無(wú)比巨大的,因此,非常不幸的,其中許多代碼改動(dòng)在被合并之前只得到了粗略的 review 而已。

          最后一個(gè)教訓(xùn)是,人們可能會(huì)認(rèn)為內(nèi)核正面臨著被比 UMN 的研究人員擁有更多技能和資源的人插入惡意patch的可怕風(fēng)險(xiǎn)。這可能是事實(shí),但其實(shí)最簡(jiǎn)單的真相是這樣的:正規(guī)的內(nèi)核開(kāi)發(fā)者繼續(xù)在以這樣的速度插入錯(cuò)誤,而惡意行為者其實(shí)加入的不會(huì)更多了。2月份發(fā)布的 5.11 內(nèi)核到 5.11.17 為止,在stable update中已經(jīng)積累了 2281 個(gè)fix。如果我們做一個(gè)(可能過(guò)于簡(jiǎn)單了)假設(shè),即每個(gè)fix都是修正了5.11 中的一個(gè)patch引入的問(wèn)題,那么進(jìn)入 5.11 的patch中有 16%(到目前為止)都是有錯(cuò)誤的。這并不比 UMN patch所展現(xiàn)出的比率好多少。

          所以,這也許是我們從整個(gè)經(jīng)歷中得到的真正教訓(xùn):內(nèi)核開(kāi)發(fā)流程的速度是它最好的特性之一,我們都依賴它來(lái)盡可能快地獲得功能。但是這種速度可能與嚴(yán)肅的patch review以及盡可能少的bug的要求是相沖突的。今后一段時(shí)間內(nèi),我們可能會(huì)看到流程變得慢下來(lái),因?yàn)榫S護(hù)者覺(jué)得有必要更仔細(xì)地review那些改動(dòng),特別是來(lái)自新的開(kāi)發(fā)人員的patch。但是,如果我們不能將更謹(jǐn)慎的流程給制度化固定下來(lái)的話,我們將會(huì)繼續(xù)看到大量的 bug,而這些 bug 是否是故意插入的,其實(shí)并不重要。

          全文完
          LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。

          歡迎分享、轉(zhuǎn)載及基于現(xiàn)有協(xié)議再創(chuàng)作~

          長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開(kāi)源社區(qū)的各種新近言論~



          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女人妻一区二区三区免费看 | 俺去俺也射| 午夜影院三 | 粉嫩小丝袜在线观看 | 黄网址免费 |