從28萬個開源項目中,我們能夠?qū)W到一些什么?

引子:開源項目那么多,哪些是值得我們學(xué)習(xí)的?

這里聲明一下,僅僅是學(xué)習(xí)一下:他們是用哪些工具,來管理自己的項目的?

開源項目多如牛毛,值得分析的項目也很多很多。從哪里入手呢?幸運的是,在開源社區(qū),有一個著名的網(wǎng)站,過去叫oloho,現(xiàn)在改名叫openhub。在他的網(wǎng)站首頁,有這么四行字,以表明他們的數(shù)據(jù)庫是多么的全面、豐富:

Indexing 669,008 open source projects
Connecting 3,742,793 open source contributors
Tracking 679,761 source control repositories
Counting 31,158,335,454 lines of code

這么說來,事情就變得比較“簡單”了,我需要把openhub的數(shù)據(jù),都抓回來。


數(shù)據(jù)的篩選過程

具體的數(shù)據(jù)抓取過程,簡直不忍詳述(我的內(nèi)心,幾乎是崩潰的)??偠灾抑蛔サ搅?89,631個項目。openhub雖然號稱自己索引了66萬的開源項目,其實這僅僅是他的數(shù)據(jù)庫里的最大ID號!當(dāng)我順著這個ID一個一個的去抓的時候,有很多ID,都已經(jīng)被刪除了。

在抓取到的項目數(shù)據(jù)中,有兩個數(shù)值,特別值得參考:contributors(參與開發(fā)者的數(shù)量);users(該軟件的用戶數(shù)量)。相對而言,users的數(shù)據(jù),可以認為是一個樣本,即該開源項目的所有用戶中,愿意并且知道該如何來openhub點擊I use this的人。因此,即使是排名第一的Firefox,在openhub也只有13158個用戶??紤]到Firefox的用戶數(shù),已經(jīng)超過5億(來源于維基百科英文版),因此,我們相信這個數(shù)據(jù)僅僅是一個4萬分之一的采樣結(jié)果。

隨后,我觀察了這28萬多個項目的users數(shù)據(jù)與contributors數(shù)據(jù),頓時驚訝的發(fā)現(xiàn),絕大多數(shù)項目,都小的可憐,用戶也少得可憐。

當(dāng)我以“select count(*) from projects where contributors>30”查詢時,只搜到了  1662個項目...
當(dāng)我以“select count(*) from projects where users>30”查詢時,只搜到了1260個項目...
當(dāng)我合并以上兩個條件查詢時,只搜到了335個項目。
再從這335個項目中,排除掉最近一年已經(jīng)不再有活動的項目,于是只剩下了331個了。

三個感想

  1. 成功的開源項目,真是鳳毛麟角
  2. 絕大多數(shù)開源項目都是少數(shù)人開發(fā)的小項目
  3. 這331個項目,也許可以作為我們的重要參考

第一個問題:他們用什么配置庫?


這是331個項目,使用配置庫的情況(有些項目,同時使用多種配置庫),有兩個現(xiàn)象值得注意:

  1. 接近92%的項目,已經(jīng)在使用git——git的統(tǒng)治地位,已經(jīng)無可動搖
  2. 只有53%的項目,在使用Github——那些用git卻不用Github的項目,是什么原因?

通過數(shù)據(jù)來分析:是否使用Github與項目創(chuàng)建時間的關(guān)系



通過這個圖,可以看出兩個現(xiàn)象:

  1. 越是新創(chuàng)建的開源項目,hosting在Github上比例越高
  2. 越是新創(chuàng)建的開源項目,事實上成功的也越多(當(dāng)然,2010年以后的數(shù)量銳減,我們懷疑是好酒也要陳釀的原因)

通過數(shù)據(jù)來分析:是否使用Github與項目代碼規(guī)模的關(guān)系



由于不同的開源項目,代碼行數(shù)差異巨大,因此我們只能以log(col)對數(shù)結(jié)果,來做區(qū)間劃分。可以看到一個非常明顯的趨勢,當(dāng)然代碼行數(shù)超過10萬行以后,代碼部署在Github上的項目,就開始明顯下降,直到為0。

總結(jié):是否使用Github,越是新的項目越愿意用;越是大的項目越?jīng)]法用。


第二個問題:他們用什么來管理issue?


排名前五的工具中,Github:91個項目;Bugzilla:81個項目;JIRA:43個項目;Trac:20個項目;另外還有9個項目,完全是在maillist里“管理”issue的。

一共有39種不同的工具,另外還有6個項目,我們無法了解他究竟是用什么來管理的。

簡單的來看:

  1. Github已經(jīng)占據(jù)統(tǒng)治地位
  2. Github的占有率僅僅27%。
  3. Bugzilla也算老而彌堅
  4. 有很多項目,在選擇自己的工具

通過數(shù)據(jù)來分析:使用的issue tracking工具與項目創(chuàng)建時間的關(guān)系


1990年之前創(chuàng)建的項目,其中有一個已經(jīng)開始使用Github了。但是,這僅僅算是個案。更加明顯的趨勢是:越是新的項目,越是傾向于采用Github管理自己的issue。

相對而言,其他各種Issue Tracking工具的比例,都在下降。

通過數(shù)據(jù)來分析:使用的issue tracking工具與項目規(guī)模的關(guān)系


隨著用戶數(shù)量的增加,我們猜想:issue的數(shù)量與復(fù)雜度,也會逐漸增加??梢钥吹竭@樣的趨勢:Github的使用率,也在不斷下降。

總結(jié):是否使用Github來管理項目的issue,越是新的項目越愿意用;越是大的項目越?jīng)]法用。


尚未完成的分析:

  • 開源項目使用的CI工具的情況
  • 開源項目使用的Code Review工具的情況
  • 開源項目使用的文檔類工具的情況
  • ......

主要還是工作量太大了。。。對這個分析有興趣的同學(xué),可以與我聯(lián)系,咱們可以一塊來干。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容