李納斯定律:只要有足夠多的眼球,就可讓所有bug浮現。
開放源代碼運動的主要領導者、最為大眾所知道(并最具爭議性)的黑客——埃里克·雷蒙(Eric Steven Raymond)在他 1999 年出版的討論軟件工程方法的著名文集《大教堂和市集》中首次描述了這樣一個精彩的觀點:
只要足夠多的眼球關注,就可讓所有軟件缺陷浮現。
更正式地來說即是:
只要有足夠的測試員及共同開發者,所有軟件缺陷都會在很短時間內被發現,而且能夠很容易被解決。
他以開源操作系統 Linux 之父李納斯·托瓦茲(Linus Torvalds)的名字來命名它,以此向李納斯致敬。
把代碼呈現給多個開發人員,讓大家一起判斷代碼是否合格,這就是最簡單的軟件代碼審查形式。各種研究和試驗都反復的驗證了代碼審查(形式不限)在發現軟件 bug 和安全漏洞中的有效性,證明代碼審查要比軟件測試效果好的多。
在關于軟件工程方法的《事實與謬論(Facts and Fallacies)》一書中,作者 Robert Glass 將這條定律描述為開源運動的”真經(mantra)”,但同時認為這條定律并不準確,因為缺乏足夠的支持證據,并且有研究發現,遺漏的 bug 數并不跟審查的人數之間存在線性的變化。更準確的說,當審查人數在2-4 個人之間時,效果最佳,增加更多的審查者對消除 bug 比例的影響不大。一些非開源的專業開發人員,他們雖然提倡在軟件開發者執行嚴格的、獨立的代碼分析,但同時用有限的人手進行深度的代碼審查——而不是強 調”眼球“的數量。
以著名的心臟出血(Heartbleed)bug 為例——非常重要的開源軟件中的一個很膚淺的 bug——2 年多的時間里沒有人能夠發現,要知道,全世界上百萬臺服務器都在使用含有這個 bug 的 OpenSSL 軟件。但雷蒙對于心臟出血(Heartbleed)這個案例有不同意見,他認為雖然 OpenSSL 使用廣泛,但事實上”沒有任何的眼球“注意了它的源代碼。
在 2001 年出版的《黑客倫理與信息時代的精神》(The Hacker Ethic And the Spirit of th Information Age)里,李納斯在其為此書做的序言中,自己定義了另外一個李納斯定律”黑客行為的動機是什么?——李納斯法則(Linus’s_Law)“:
人類所有的動機可分為遞進的三種類型 — 生存(survival)、社會生活(social life)、娛樂(entertainment)。
…
“黑客”是已經超越利用計算機謀生存而進入后面兩個階段的人。計算機本身就是娛樂。黑客堅信沒有比這更高的動力階段。
(本文編譯自維基百科詞條 Linus’s_Law,CC licensed)
<span id="shareA4" class="fl">
</span>
</div>