引子:開源項目那么多,哪些是值得我們學(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個了。
三個感想
- 成功的開源項目,真是鳳毛麟角
- 絕大多數(shù)開源項目都是少數(shù)人開發(fā)的小項目
- 這331個項目,也許可以作為我們的重要參考
第一個問題:他們用什么配置庫?

這是331個項目,使用配置庫的情況(有些項目,同時使用多種配置庫),有兩個現(xiàn)象值得注意:
- 接近92%的項目,已經(jīng)在使用git——git的統(tǒng)治地位,已經(jīng)無可動搖
- 只有53%的項目,在使用Github——那些用git卻不用Github的項目,是什么原因?
通過數(shù)據(jù)來分析:是否使用Github與項目創(chuàng)建時間的關(guān)系


通過這個圖,可以看出兩個現(xiàn)象:
- 越是新創(chuàng)建的開源項目,hosting在Github上比例越高
- 越是新創(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個項目,我們無法了解他究竟是用什么來管理的。
簡單的來看:
- Github已經(jīng)占據(jù)統(tǒng)治地位
- Github的占有率僅僅27%。
- Bugzilla也算老而彌堅
- 有很多項目,在選擇自己的工具
通過數(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)系,咱們可以一塊來干。