偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何評估一個Linux發(fā)行版的總體成本

系統(tǒng) Linux
經(jīng)濟(jì)學(xué)有云:“天下沒有免費(fèi)的午餐”,那么一個開源項(xiàng)目到底價值多少錢?到了自己手里能夠增值還是貶值?那么拋開技術(shù)債務(wù)這一塊不說,光從經(jīng)濟(jì)的角度考量下。這次我們要學(xué)習(xí)的是最最基礎(chǔ)的評估一個開源項(xiàng)目成本的方法論。

 [[261756]]

開源之道引言:為什么要翻譯十一年前的一份白皮書?

(本白皮書發(fā)表于 2008 年。)答案很簡單,就是要學(xué)會算經(jīng)濟(jì)賬,一個開源項(xiàng)目,尤其是大型的、經(jīng)過多年開發(fā)的,企業(yè)利用該項(xiàng)目就要在開始的時候算好一筆經(jīng)濟(jì)賬,它不是零成本,它像一個快速向前滾動(發(fā)展)的巨大磁石,如果你沒有投入,那么很快便失去了任何的話語權(quán),經(jīng)過一段時間,則會被狠狠的甩下,體無完膚!不僅失去了創(chuàng)新的能力,而且成為了自己的負(fù)擔(dān)。最后以失敗而告終。

如果單單的只是將項(xiàng)目的某個時間的臨時性成果來作為自己的產(chǎn)品或服務(wù),那么就要想好要不要跟上步伐,要怎么跟?不過這些都要基于一個基礎(chǔ):這個階段性的成果總成本是多少?該如何評估?于是就有了這篇文章。

介紹

Linux 操作系統(tǒng)是歷史上最為成功的開源項(xiàng)目,但是一個 Linux 發(fā)行版中的軟件究竟“價值”多少錢?2002 年,David A. Wheeler 發(fā)表了一份備受后人推崇的研究,其指出典型的 Linux 發(fā)行版中軟件代碼行數(shù)的意義所在。那么他的發(fā)現(xiàn)是什么?結(jié)果令人震驚:典型的 Linux 發(fā)行版中的總開發(fā)成本高達(dá) 12 億美元。我們將基于 Wheeler 先生的發(fā)現(xiàn)而繼續(xù)挖掘。使用相同的工具,我們重新以當(dāng)前的美元來計(jì)算,構(gòu)建 Fedora 9 發(fā)行版的成本需要大約 108 億美元。另外,僅內(nèi)核一項(xiàng)的開發(fā)需要約 14 億美元,本論文概述了我們研究過程中使用的技術(shù),并指出開發(fā) Linux 的成本計(jì)算模式。

Linux 操作系統(tǒng)是當(dāng)今計(jì)算中流行的開源操作系統(tǒng),在 2008 年,它意味著是一個價值 250 億美元的生態(tài)系統(tǒng)。1 自 1991 年創(chuàng)建以來,它已發(fā)展成為計(jì)算機(jī)領(lǐng)域的一支重要力量,為紐約證券交易所、移動設(shè)備、超級計(jì)算機(jī)、消費(fèi)設(shè)備提供重要的驅(qū)動力量。

作為一款開放的操作系統(tǒng),Linux 是協(xié)同開發(fā)的,這意味著沒有任何一家公司對其開發(fā)或持續(xù)的支持負(fù)全部責(zé)任。參與 Linux 開發(fā)的公司與其合作伙伴、競爭對手分擔(dān)著研發(fā)成本。這樣的開發(fā)模式進(jìn)一步發(fā)展為個人和公司共同承擔(dān),進(jìn)而成為一個超大型的、生機(jī)勃勃的生態(tài)系統(tǒng),而且驅(qū)動著無窮的創(chuàng)新力量。

超過 1000 多名的開發(fā)者,他們來自不同的公司,公司數(shù)量至少在 100 家左右,僅在過去兩年中,來自 200 家公司的 3200 多名開發(fā)人員就為內(nèi)核做出了貢獻(xiàn)。2 值得注意的是,內(nèi)核只是 Linux 發(fā)行版的一小部分,一款完整的 Linux 發(fā)行版,不僅包括內(nèi)核,還有諸如 GNOME 和 KDE 桌面環(huán)境、GNU 組件、X Window 系統(tǒng)等等很多組件。為這些項(xiàng)目做出貢獻(xiàn)的個人開發(fā)者總數(shù)肯定會達(dá)到數(shù)千人。

正因?yàn)?Linux 是協(xié)作開發(fā)的,因此無法從某個單一的來源來估算開發(fā)該項(xiàng)目的成本。2002 年,David A. Wheeler 發(fā)表了一項(xiàng)備受好評的研究,該研究檢查了典型 Linux 發(fā)行版中存在的軟件代碼行(基于 Red Hat Linux 7.1)。3 他總結(jié)說 —— 正如我們所做的那樣 —— 軟件代碼行數(shù)是確定開源軟件價值最實(shí)用的方法,因?yàn)樗鼘W⒂谧罱K結(jié)果而不是每個公司或每個開發(fā)人員的估算。4 使用他開發(fā)的用于計(jì)算和分析 SLOC(軟件代碼行數(shù)Software Lines of Code)的行業(yè)標(biāo)準(zhǔn)工具,他確定在美國通過傳統(tǒng)的封閉方法開發(fā) Linux 發(fā)行版將花費(fèi)超過 12 億美元。

但那已經(jīng)是 6 年前的事情了,由于 Linux 的創(chuàng)新和增長速度每年都在增加,因此我們有必要更新這個 12 億美元的數(shù)字,從而希望能夠準(zhǔn)確反映當(dāng)今 Linux 中開發(fā)的真正價值(以及軟件開發(fā)本身的成本上升)。在本文中,Linux 基金會著手確定典型 Linux 發(fā)行版中所代表的總開發(fā)成本,并更新自 2002 年發(fā)布以來廣泛使用的 12 億美元數(shù)字。

我們分析了 2008 年 5 月 13 日發(fā)布的 Fedora 9 發(fā)行版。之所以選擇 Fedora,因?yàn)?Fedora 是一種流行度蠻高,口碑也還行的 Linux 發(fā)行版,它也是紅帽企業(yè)版 Linux 的原型,而紅帽企業(yè)版 Linux 則是擁有 Linux 市場的很大份額的發(fā)行版。更何況還是 Wheeler 在其原始論文中分析的 Red Hat Linux 7.1 軟件的直接后代。

在本研究中,我們使用了 David A. Wheeler 所開發(fā)的 SLOC 工具 —— SLOCCount。SLOCCount 用到了行業(yè)標(biāo)準(zhǔn)的建設(shè)性成本模型COnstructive COst MOdel(COCOMO),該模型是一個算法軟件成本估算模型,5是由 Barry Boehm 6 開發(fā)的。該模型使用基本回歸 7 公式,其參數(shù)衍生自歷史項(xiàng)目數(shù)據(jù)和當(dāng)前項(xiàng)目特征數(shù)據(jù)。8 我們從 2002 年開始更新他的研究,包括不斷增長的 Linux 內(nèi)核代碼庫和其他軟件包,以及軟件開發(fā)人員的薪水。(關(guān)于此的更多細(xì)節(jié)將在下文的“方法論”部分中進(jìn)行詳細(xì)討論。)

基于該方法,如果是采用傳統(tǒng)的封閉方法來開發(fā)這樣一個規(guī)模的 Linux 發(fā)行版的話,我們估計(jì)需要 108 億美元(2008 年)。

方法論

我們的基本方法是:

  1. 以非壓縮格式安裝源代碼文件;這需要下載源代碼并在我們的測試機(jī)器上正確安裝。
  2. 計(jì)算源代碼行數(shù)(SLOC);這需要仔細(xì)定義 SLOC。
  3. 使用估算模型(基于 COCOMO 實(shí)踐)來估算以專有方式開發(fā)相同系統(tǒng)的工作量和成本。

如果大家對于我們是如何安裝和分析源代碼感興趣的話,請參閱附錄內(nèi)容。

為了延續(xù)原作者的研究,我們決定使用和 2002 年所采用同一套基礎(chǔ)代碼,即選擇了 Fedora 社區(qū)發(fā)行版,這也是紅帽企業(yè)版 Linux(RHEL)的基礎(chǔ)平臺。經(jīng)過一番考量,我們決定采用 Fedora 9 這個版本。我們統(tǒng)計(jì)了所有在 http://mirror.kernel.org 鏡像歸檔文件中公開的 Fedora 9 軟件包。之所以選擇這個源,是因?yàn)槲覀儾幌胛覀冏罱K衡量的結(jié)果被其它因素所影響。Fedora 包含比紅帽企業(yè)版 Linux 更多的軟件包,其中一個原因是多元化社區(qū)參與構(gòu)建 Fedora,而不僅僅是一家公司。使用 SLOCCount 應(yīng)用程序是一項(xiàng)相對簡單的任務(wù):只需將其指向源代碼所在的正確目錄,然后讓它運(yùn)行即可。在 Wheeler 的網(wǎng)站上仍然提供有關(guān)程序如何工作以及如何使用它的詳細(xì)說明。9

欲計(jì)算該發(fā)行版的開發(fā)成本,我們從美國勞工統(tǒng)計(jì)局查閱了計(jì)算機(jī)程序員的基本工資概況。根據(jù)美國勞工統(tǒng)計(jì)局的數(shù)據(jù),2008 年 7 月美國程序員的平均工資為 75,662.08 美元。 10 這也是我們的 SLOCCount 運(yùn)行中使用的工資金額。(當(dāng)然,如今大多數(shù)軟件開發(fā)都是全球性的,因此使用僅限美國的工資數(shù)字有點(diǎn)以偏概全。然而這時一個值得我們持續(xù)探索的主題,在未來我們要找到一個途徑來確定全球平均工資,將之作為生產(chǎn)成本的基準(zhǔn)。)

還應(yīng)該指出的是,薪水本身并不是軟件開發(fā)成本的決定因素。在他的文章中,Wheeler 提及了 SLOCCount 中的開銷參數(shù),其中包括測試成本、設(shè)備、公司運(yùn)營成本以及開發(fā)人員的總賠償金。這些參數(shù)被稱之為總包比例wrap rate。

要知道這些總包比例的增長是非常之迅速的,在美國,專業(yè)員工的平均薪酬百分比(病假、休假、保險福利)為 29.0%。11 因此,雖然我們剛才所提及的美國勞工統(tǒng)計(jì)局給出的數(shù)據(jù)是程序員的平均工資為 75,662.0810 美元,但是企業(yè)主實(shí)際要付的數(shù)字為 97,604.08 美元。而且這只是總包比例的一部分。

Wheeler 當(dāng)年的評估將總包比例的值設(shè)為 2.4。雖然這個數(shù)字明顯因公司和地區(qū)而異,但進(jìn)一步的研究顯示,沒有任何重要證據(jù)表明這個數(shù)字需要在我們所測試中進(jìn)行調(diào)整。

源代碼和估計(jì)成本結(jié)果

根據(jù)前面所示的所有假設(shè),F(xiàn)edora 9 的 SLOC 和估計(jì)產(chǎn)量值如下。

代碼類型 代碼行數(shù)
全部總的代碼行數(shù)(SLOC) 204,500,946
開發(fā)效果估算:人年(人月) (基本的 COCOMO 模型,人月 = 2.4 * (KSLOC ** 1.05) 59389.53(712674.36)
進(jìn)度估算,年(月)(基本的 COCOMO模型,月份 = 2.5 * (人月 ** 0.38) 24.64(295.68)
預(yù)計(jì)總開發(fā)成本,(平均工資 = 75,662.08 美元/年,間接費(fèi)用 = 2.40) 10,784,484,309 美元

旁注:最初的 SLOCCount 年薪數(shù)字是 2000 年 $56,286 美元,有心人可以看到我們對此進(jìn)行了相應(yīng)的轉(zhuǎn)換。為了實(shí)現(xiàn)它,我們將總費(fèi)用乘以 2008 年美元(10,784,484,309 美元)的 0.744,這是 SLOCCount 通常使用的 2000 年程序員工資($56,286)與我們發(fā)現(xiàn)的 2008 年 7 月工資($ 75,662.08)之間的比率。結(jié)果是 2000 年開發(fā) Fedora 9 的成本超過 80 億美元。這使讀者很好地了解了這六年中 Linux 發(fā)行版中添加了多少代碼和功能。

聚焦 Linux內(nèi)核,及其增強(qiáng) COCOMO 模型

正如本文的研究覆蓋的內(nèi)容,聰明的讀者一定發(fā)現(xiàn)了,并非所有 Linux 系統(tǒng)中所有的組件都需要得到同等的對待。根據(jù) COCOMO 模型,一些項(xiàng)目的性質(zhì)和復(fù)雜性需要不同的考慮。

這一點(diǎn)在 Wheeler 自己的 2002 年文章的后續(xù)行動中更為明顯,他強(qiáng)調(diào)了對 Linux 內(nèi)核就應(yīng)該使用的不同估計(jì)模型。12 在這篇新文章中,Wheeler 堅(jiān)持認(rèn)為,由于 Linux 內(nèi)核代碼通常比“普通”應(yīng)用程序更復(fù)雜 —— 特殊的除外 —— 它需要的分析超出了基本的 COCOMO 模型。例如,像 Mozilla 這樣的用戶空間應(yīng)用程序更容易逐行編碼,因?yàn)樗诟叩膶哟紊媳怀橄螅⑶抑恍枰幚砀俚娜蝿?wù)。然而,現(xiàn)代企業(yè)級操作系統(tǒng)內(nèi)核則需要同時執(zhí)行大量極其復(fù)雜的操作,也就是說技術(shù)含量更高、難度也更大。

所以 Wheeler 解釋說,發(fā)行版中的組件不能使用同一種標(biāo)準(zhǔn)的方法來進(jìn)行分析,就內(nèi)核來說就應(yīng)該使用增強(qiáng) COCOMO 模型intermediate COCOMO model來進(jìn)行衡量。增強(qiáng)的 COCOMO 模型有更多的參數(shù)供選擇,因此,應(yīng)該更準(zhǔn)確地分析一個復(fù)雜的軟件本身。在 2004 年的文章中,他詳述了他對這些參數(shù)的評估細(xì)節(jié),即調(diào)整整體的凈效應(yīng),將 SLOCCount 中的工作因子值從默認(rèn)值 3 到 4.64607,同時,-effort 指數(shù)值也變?yōu)?1.12,在增強(qiáng)的 COCOMO 軟件估算模型下,這是分配給半分離軟件semi-detached software項(xiàng)目的值。

基于這些新的參數(shù),針對 Linux 內(nèi)核做了一個單獨(dú)的評估(Fedora 9 的內(nèi)核版本是 linux-2.6.25.i686):

代碼類型 代碼行數(shù)
全部總的代碼行數(shù)(SLOC) 6,772,902
開發(fā)效果估算:人年(人月)(有效模型,人月 = 4.64607 * (KSLOC**1.12)) 7557.4(90688.77)
進(jìn)度估算,年(月)(基本的COCOMO模型,月份 = 2.5 * (人月** 0.38)) 15.95 (191.34)
預(yù)計(jì)平均開發(fā)人員數(shù)量(有效/時間表) 473.96
預(yù)計(jì)總開發(fā)成本,(平均工資 = 75,662.08美元/年,間接費(fèi)用 = 2.40) $1,372,340,206

本研究方法的局限性和優(yōu)勢

沒有完美的方法來估計(jì)像 Linux 那樣復(fù)雜和不斷發(fā)展的軟件項(xiàng)目的價值。雖然我們認(rèn)為這種方法是最好的方法,但它可能過度計(jì)算價值的某些方面,而低估了其他方面。以下是我們認(rèn)為該方法存在限制的部分:

  • COCOMO 模型是研究封閉式軟件開發(fā)而設(shè)計(jì)的。因此,我們認(rèn)為它低估了開源、協(xié)作開發(fā)的軟件項(xiàng)目(如 Linux)中固有的測試復(fù)雜性。由于變更的頻繁,且不論大小,而且開發(fā)者本身均是分布全球各地,Linux 生態(tài)系統(tǒng)參與者的測試負(fù)擔(dān)比專有的獨(dú)立公司高出一個數(shù)量級。
  • 衡量 Linux 發(fā)行版價值的另一個困難就是確定開始時包含 Linux 發(fā)行版的內(nèi)容。我們的研究包含了 Fedora 的公共源代碼庫中所有軟件包。但是,F(xiàn)edora 本身也有不同的版本(例如 LiveCD 版本)。當(dāng)然還有更大的發(fā)行版,例如,Debian GNU / Linux 的代碼倉庫 13 就比 Fedora 更大。還有大量的開源軟件在任何一個發(fā)行版中都找不到。開源是一個非常大的宇宙,我們只是以 Linux 發(fā)行版為研究單位,盡可能的包含足夠多的開源軟件罷了。
  • SLOC 分析的弱點(diǎn)是它專注于軟件項(xiàng)目的凈增加。舉例來講,任何熟悉內(nèi)核開發(fā)的人都會意識到,開發(fā)過程中的人力成本是刪除和修改代碼的時候。刪除和更改代碼所花費(fèi)的精力,并未反映在與此估算相關(guān)的值中。因?yàn)樵趨f(xié)作開發(fā)模型中,代碼被開發(fā),然后被更改和刪除,真正的價值遠(yuǎn)遠(yuǎn)大于現(xiàn)有的代碼庫。聰明的你,想一下內(nèi)核的開發(fā)流程:當(dāng)幾行代碼添加到內(nèi)核時,必須修改更多代碼才能與現(xiàn)有的代碼兼容。理解依賴關(guān)系和結(jié)果然后更改代碼的工作在本研究中沒有得到很好的體現(xiàn)。
  • 協(xié)作開發(fā)意味著,通常會有多個個人或小組致力于解決相同技術(shù)問題的不同方法,其中只有一種方法“獲勝”而包含在最終版本中。 由于“失敗”方法并未包含在最終的發(fā)布版本中,因此該 SLOC 方法未考慮這些方法的開發(fā)工作。
  • 由于 Linux 不同的發(fā)行版之間,以及同一個發(fā)行版的不同版本之間的代碼行數(shù)是有著巨大差異的,所以將本研究冠以研究 “Linux” 是有點(diǎn)牽強(qiáng)的。 分析內(nèi)容有很多不同的選擇,我們只能選擇一種。出于這個原因,我們發(fā)現(xiàn)所有發(fā)行版共享的離散包的估計(jì)值(例如內(nèi)核)更有意義。
  • 很遺憾的是,我們只能以量來代替研究質(zhì)。Linux 社區(qū)的壯大速度很快,但同時也包含了一些不被經(jīng)常用到的代碼,比如舊的驅(qū)動程序。但是,包含此代碼非常重要,因?yàn)?Linux 中包含特定于體系結(jié)構(gòu)的代碼以及驅(qū)動程序(與其他操作系統(tǒng)不同)。因此,此數(shù)字將大于操作系統(tǒng)本身內(nèi)不包含這些組件的其他操作系統(tǒng)。
  • 本研究假設(shè)所有開發(fā)者都來自美國,那么相應(yīng)的就以美國勞動力的相關(guān)成本為基準(zhǔn)來計(jì)算。盡管事實(shí)上,絕大多數(shù)的開源軟件開發(fā)都是全球性的,其勞動力成本也會相應(yīng)變化。
  • 本研究中反映的數(shù)字表示從頭開始一款 Linux 發(fā)行版,進(jìn)而計(jì)算開發(fā)所需的成本。 值得注意的是,這可以估算成本,但不會估算更大生態(tài)系統(tǒng)的價值,因?yàn)槿绱藦V泛使用的核心技術(shù)改變將產(chǎn)生巨大而深遠(yuǎn)的經(jīng)濟(jì)影響。

Linux 是如何增長的

本研究還沒有考慮逐步更新和擴(kuò)展 Linux 代碼庫的年度開發(fā)成本?;谶@些數(shù)字(或任何人對 Linux 發(fā)行版的直接經(jīng)驗(yàn)),很容易看出 Linux 發(fā)行版中包含的功能在過去六年中是如何以爆炸般的形式發(fā)展的。

例如,F(xiàn)edora Linux 9 包含超過 2.04 億行純的源代碼(SLOC),相比之下 Red Hat Linux 7.1(2002 年發(fā)布)才是區(qū)區(qū)的 3000 萬行,而再往前的版本 6.2 中只有超過 1700 萬行。代碼庫在過去的六年里,增加了 1.74 億行代碼。使用 COCOMO 成本模型,我們估計(jì) Fedora 9 需要大約 60,000 人年的開發(fā)時間(相比之下,Red Hat 7.1 為 8,000 人年,而 6.2 版為 4,500 人年)。因此,與 Red Hat Linux 7.1 相比,F(xiàn)edora 9 的大小增加了大約 680%,工作量增加了 750%,傳統(tǒng)開發(fā)成本增加了 900%。背后的原因之一則是由于過去幾年全球范圍內(nèi)可用的、成熟的開源/自由軟件程序數(shù)量的增加。這種增長表明 Linux 具有更大的發(fā)展勢頭:不斷增加開源軟件包可以增強(qiáng) Linux 用戶可用的應(yīng)用程序,反過來也使得 Linux 作為計(jì)算平臺更具吸引力。

通過審視發(fā)行版中排名前十的軟件包列表,我們可以輕易得知,(構(gòu)成發(fā)行版的)Linux 的模塊化是它本身的特性。如果有時間的話,這個特性的分析本身就是十分有趣的事情,比如,就拿嵌入式 Linux 的發(fā)行版來說吧,分析其使用最頻繁的組件以及與該計(jì)算部分相關(guān)的開發(fā)成本會很有意義。

對于 Linux 創(chuàng)新的影響分析來講,不能僅僅通過線性的代碼增加來進(jìn)行衡量。正如近來發(fā)布的“是誰在撰寫 Linux 內(nèi)核?”的報告中所稱:”在已經(jīng)發(fā)布的版本中,內(nèi)核團(tuán)隊(duì)每年的增長率非常穩(wěn)定,約為 10%,考慮到代碼樹的大小,這個數(shù)字非??捎^。但是這不僅僅是代碼數(shù)量上的增長,還有實(shí)際功能、性能等諸多的其它因素的改進(jìn)和進(jìn)化,因?yàn)槊恳淮蔚淖兏家馕吨a的增加、刪除、修改。” 14

雖然 Linux 內(nèi)核與 Linux 發(fā)行版當(dāng)中的大多數(shù)其他組件相比,可能更改的更為頻繁,但是從整體而言,我們的數(shù)據(jù)也反映出整個 Linux 發(fā)行版每年都在不斷增長和變化。由于 Linux 內(nèi)核只是 Linux 發(fā)行版的一個?。ǖ浅V匾┙M件,其每年投入的迭代開發(fā)成本非常的高,但在本次研究中還沒有將其進(jìn)行特別的處理。

總結(jié)

那么在閱讀完這篇研究之后,你知道 Linux 的”價值”所在了嗎?雖然它可能還不是一個能夠完全回答的問題,但有些事情非常明確,那就是:Linux 的真正價值在于它重用它的能力以及它所創(chuàng)造的巨大靈活性。

想象一下,假如在一個 Linus Torvalds 不允許(實(shí)際上是迫使)Linux 用戶允許其他人重復(fù)使用他們的貢獻(xiàn)的計(jì)算世界。如果他們沒有免費(fèi)使用 Linux 并且能夠根據(jù)他們的需求修改它,那么會不會有谷歌?如果沒有可以免費(fèi)使用的價值 108 億美元的軟件,是否會有不斷擴(kuò)大的低于 350 美元的新型超便攜電腦?亞馬遜是否能夠建立其新的 Kindle 閱讀設(shè)備系列,而無需為其提供 14 億美元的免費(fèi)研發(fā)費(fèi)用?而且不能單單以金錢來衡量,Linux 發(fā)行版還意味著時間這個巨大的經(jīng)濟(jì)因素,如果這些公司被迫向任何一家公司支付每臺設(shè)備或每臺服務(wù)器的許可費(fèi),那么這些例子中的經(jīng)濟(jì)學(xué)就不可能實(shí)現(xiàn),那么他們就不得不花費(fèi)數(shù)千人年的開發(fā)時間來創(chuàng)建這個軟件。

我們可以從這項(xiàng)研究中學(xué)到什么?基于社區(qū)的 Linux 發(fā)行版所代表的大量開發(fā)成本反映了其在計(jì)算領(lǐng)域日益增加的價值和重要性。公司和個人通過參與 Linux 相關(guān)的項(xiàng)目,公司通過同行(有時是競爭對手)分擔(dān)開發(fā)費(fèi)用,進(jìn)而創(chuàng)造自己的利潤。軟件世界的一個越來越明顯的事實(shí)是,像微軟那樣,單獨(dú)承擔(dān)這種研究和開發(fā)負(fù)擔(dān)是一種昂貴的構(gòu)建軟件的方法。雖然過去的壟斷地位使他們能夠?yàn)檫@一巨大的發(fā)展提供資金,但我們深信,隨著時間的推移,未來來自合作力量的競爭將使這種孤立的做法變得難以為繼。

正如我們從這項(xiàng)研究中看到的那樣,通過 Linux 在所有計(jì)算領(lǐng)域的爆炸式增長,協(xié)同開發(fā)創(chuàng)造了巨大的經(jīng)濟(jì)價值!諸如 IBM、Intel、HP、Fujitsu、NEC、Hitachi、Google、Novell、Oracle、RedHat 等公司,以及其它所有參與到開發(fā)中的公司,他們均從這個開放式軟件開發(fā)的生態(tài)中找到了自己的利益立足點(diǎn)。但是,請務(wù)必澄清:當(dāng)這些公司參與且貢獻(xiàn)較大時,請不要忘記獨(dú)立的個人參與的開發(fā)和造就的價值是同等重要的!要知道,所有這一切都是從個體開啟的。

本文中的數(shù)據(jù)由 SLOCCount 生成, SLOCCount 的版權(quán) © 2001-2004 歸 David A. Wheeler 所有,SLOCCount 是開源軟件/自由軟件,基于 GNU GPL 許可協(xié)議。

SLOCCount 沒有任何的擔(dān)保,非常歡迎大家基于 GNU GPL許可下自由的分發(fā)該軟件,欲了解 GPL 的內(nèi)容,去閱讀相關(guān)文檔。

致謝

我們要感謝以下人員對本文的審核和反饋:James Bottomley、Jon Corbet 以及 David A. Wheeler。

作者介紹

Amanda McPherson is vice president, marketing and developer programs, at the LF and leads its promotion, developer, and community-relations activities.

Brian Proffitt is community manager with the LF, managing the Linux Developer Network.

Ron Hale-Evans is senior specifications writer with the LF and works closely with the Linux Standard Base (LSB) developer team to create LSB specifications.

附錄

Fedora 9,其安裝盤并沒有包含源代碼,所以我們的代碼是從 http://mirrors.kernel.org 上下載的。因?yàn)榇_定要分析的文件會在流程中進(jìn)入另一層次的主觀性,所以決定將所有 5547 個可用的開源軟件包(src.rpm)下載并安裝在測試機(jī)器上。

從 FTP 服務(wù)器下載 src.rpm 后,就可以安裝它們了。即使沒有任何 rpm 作為二進(jìn)制 RPM 包安裝(因此可能實(shí)際只是做為測試機(jī)器上安裝的應(yīng)用程序),也建立了一個程序來允許構(gòu)建和準(zhǔn)備源代碼的 RPM,而無需 root 訪問權(quán)限,修改發(fā)現(xiàn)的過程在一個存檔的 Red Hat howto 頁面上。

源代碼已下載到測試用戶的主目錄。

然后使用 gedit 創(chuàng)建一個腳本并將其保存為同一主目錄中的 .rpmmacros。創(chuàng)建了目標(biāo)目錄集,然后使用以下命令安裝 src.rpm 文件:

  1. rpm -ivh *.src.rpm

經(jīng)過一段時間后,安裝了所有 5547 個軟件包,規(guī)范文件(.spec)位于 rpm/SPECS 目錄中,源文件和圖形填充了 rpm/SOURCES 目錄。

在此階段,必須構(gòu)建和準(zhǔn)備 src.rpm 文件,這將所有應(yīng)用程序的源代碼一一對應(yīng)地放到 rpm/BUILD 目錄中自己的目錄。為此,使用了以下命令:

  1. rpmbuild -bp nodeps *.spec

運(yùn)行此命令后,所有軟件包都已在 BUILD 目錄中正確安裝。

然后可以開始實(shí)際計(jì)數(shù)。因?yàn)榘l(fā)行版不是單個軟件項(xiàng)目,所以不應(yīng)該這樣計(jì)算。SLOCCount 提供了一個參數(shù)來補(bǔ)償: -multiproject。

對于 Fedora 9,使用的命令是:

  1. sloccount multiproject personcost 75662.08 /usr/src/rpm/BUILD/ &> sloc.txt

如需進(jìn)一步檢查,以下是 Fedora 9 源代碼中的前 10 個軟件包的統(tǒng)計(jì)數(shù)值,(供參考):

< 如顯示不全,請左右滑動 >
SLOC OSS 項(xiàng)目 按語言分別計(jì)算的 SLOC(已排序)
5961705i kernel-2.6.25i686 ansic=5727336, asm=216356,perl=6019, cpp=3962, yacc=2901, lex=1824, objc=613,python=331,lisp=218, pascal=116, awk=96
4991916 OpenOffice.org cpp=4518218, java=262028, ansic=109607, perl=66501, sh=11288, yacc=6657, cs=6600, python=3023, lex=2474, asm=2453, lisp=920, awk=734, objc=594, pascal=407, csh=301, php=104, sed=7
3118105 Gcc-4.3.0-2 0080428 ansic=1559056, java=646496, ada=478683, cpp=305899, f90=50636, asm=25272, sh=19070, exp=11829, fortran=7651, objc=3539, perl=2732, ml=2485, yacc=1440, pascal=1092, awk=764, python=582, lex=461, tcl=381, haskell=37
2664636 Enterprise Security Client 1.0.1 cpp=1725793, ansic=862640, perl=27244, asm=16749, sh=16435, cs=6232, java=5325, python=3077, lex=306, php=244, pascal=230, csh=132, objc=97, yacc=79, ada=49, sed=4
2216353 eclipse-3.3.2 java=2089544, ansic=96269, cpp=24302, jsp=3965, perl=1325, sh=878, python=46, php=24
2123390 Mono-1.9.1 cs=1862734, ansic=257228, sh=1998, perl=807, asm=335, yacc=288
2088834 firefox-3.0 cpp=1280521, ansic=743238, asm=32703, sh=14686, perl=7177, python=6549, java=2668, makefile=2451, objc=867, lisp=256, pascal=159, awk=10
1792482 bigloo3.0b ansic=1621378, lisp=143716, sh=10296, java=8233, cs=7846, cpp=849, asm=159, yacc=5
1788219 gcc-3.4.6-20060404 ansic=858843, ada=485364, cpp=196337, java=175563, asm=24403, sh=19731, yacc=14038, exp=5657, objc=4408, fortran=2032, perl=898, lex=587, awk=189, pascal=86, haskell=66, sed=17
1543156 ParaView3.2.1 cpp=960400, ansic=509436, tcl=45787, python=19574, perl=3112, yacc=1787, java=1517, sh=644, asm=471, lex=400, objc=28

參考資料

  1. IDC “The Role of Linux Commercial Servers and Workloads”, 2008 

  2. Greg Kroah-Hartman, Jonathan Corbet, and Amanda McPherson, “Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It”, April 2016, https://www.linuxfoundation.org/events/2016/08/linux-kernel-development-2016/ 

  3. David A. Wheeler, “More Than a Gigabuck: Estimating GNU/Linux’s Size” 2001 (revised 2002) 

  4. http://en.wikipedia.org/wiki/Source_lines_of_code 

  5. http://en.wikipedia.org/wiki/Estimation_in_software_engineering 

  6. http://en.wikipedia.org/wiki/Barry_Boehm 

  7. http://en.wikipedia.org/wiki/Regression_analysis 

  8. http://en.wikipedia.org/wiki/COCOMO 

  9. http://www.dwheeler.com/sloccount/sloccount.html 

  10. Bureau of Labor Statistics, CES Database http://www.bls.gov/ces/#data 

  11. Bureau of Labor Statistics, http://www.bls.gov/news.release/ecec.t05.htm (March 2008) 

  12. David A. Wheeler, “Linux Kernel 2.6: It’s Worth More!” 2004 (revised 2007) http://www.dwheeler.com/essays/linux-kernel-cost.html 

  13. For more information on Debian source-code counts, see Counting Potatoes: The size of Debian 2.2 (http://people.debian.org/~jgb/debian-counting) and Measuring Libre Software Using Debian 3.1 (Sarge) as A Case Study: Preliminary Results (http://www.upgrade-cepis.org/issues/2005/3/up6-3Amor.pdf

  14. Greg Kroah-Hartman, Jonathan Corbet, and Amanda McPherson, “Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It”, April 2008, http://www.linuxfoundation.org/publications/linuxkerneldevelopment.php 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2017-04-05 15:35:22

ManjaroLinux發(fā)行版

2017-10-16 09:04:11

Linux發(fā)行版U盤

2017-03-27 15:45:51

LinuxDeepinDock

2019-02-11 10:46:16

搜索Linux

2016-09-18 10:08:38

Linux發(fā)行版SUSE Studio

2023-05-19 12:12:07

risiOSFedoraLinux

2024-01-18 19:01:44

2021-06-11 06:10:25

Linux發(fā)行版操作系統(tǒng)

2023-06-07 14:34:48

Arch Linux發(fā)行版

2021-11-03 08:00:00

Linux開源操作系統(tǒng)

2019-04-09 15:38:18

Linux發(fā)行版Windows

2021-05-05 13:52:48

LinuxLinux 發(fā)行版U 盤

2009-03-05 08:05:30

Linux紅帽發(fā)行版

2014-01-06 16:14:20

2018-04-17 10:00:18

Linux發(fā)行版面向企業(yè)

2009-12-21 16:27:55

2023-11-27 09:33:22

2011-08-12 09:36:46

Linux發(fā)行版

2009-04-29 16:48:05

2021-12-24 14:10:26

Linux發(fā)行版
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號