天天看點

《開源思索集》一28萬個開源項目之番外篇

本節書摘來異步社群《開源思索集》一書中的第1章,作者: 莊表偉 責編: 楊海玲, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

28萬個開源項目之番外篇

開源思索集

一、工具

資料抓取

最初是打算使用openhub.net的open api的,他們有不錯的api,還在github上放了一個開源項目。隻可惜,他們的api,最多隻能申請5個api key,每個key明天的通路請求數量不能超過1000次。當時我還不知道,其實openhub的資料隻有28萬多,還以為滿打滿算,至少得60多天才能全部抓完,頓時心就涼了。

後來有朋友介紹了一個很棒的直接抓取html頁面,然後做dom分析的工具,名叫noodle。

當然,後續的331個項目的明細資料,還是得通過openhub的api來抓取。

資料分析

完全是土法上馬:sqlite3+numbers+csv+ruby,反正各種手法,什麼稱手用什麼。

資料展示

原本是打算在numbers裡想想辦法的,後來發現實在太弱。excel也差不多,隻能到網上搜尋一些資訊圖制作的工具,後來找到了幾個不錯的線上工具,經過一番比較,最後決定用infogr.am來完成。的确非常不錯。

二、釋疑:項目大小與建立時間的關系

我與@雲風 在微網誌上有一小段讨論,起因還是我之前分析的一些觀點:

是否使用github,越是新的項目越願意用,越是大的項目越沒法用。

是否使用github來管理項目的issue,越是新的項目越願意用,越是大的項目越沒法用。

這個結論,其實在用詞上,是有些講究的:按理說,新與老相對,小與大相對;願意與不願意相對,能用與沒法用相對,我的兩個結論,對仗都不公整。其實,确實故意為之。

于是,雲風與我的對話如下。

雲風:項目規模和項目曆史本身有相關性吧。代碼規模越大的項目曆史很可能越久。

我:項目的規模,主要還是與項目本身的特性有關。原本複雜的項目,才可能越長越大。原本就是小項目,也未必就會穩定地逐年增長。

雲風:這隻能說明小項目可以曆史久,不能說明大項目可以曆史短啊。很少有新項目一開始就很大啊。代碼也是一行行寫出來的啊。

我:那就是成長速度不同了。比如openstack一開始就不小。

雲風:一開始就不小隻能說閉源開發過一段時間,或從别的地方搬遷過來的吧。你能想象不被版本管理工具管理的情況下,首次送出 10 萬行以上的代碼?看這個 link 送出日志寫的 initial fork out of nova。

後來,我也沒有再繼續這個讨論,但是卻一直在思考這個問題:“項目的大小與項目的建立時間,究竟有多少相關性?”

後來,我将兩個資料,做了一個分析:log(第一次送出代碼,至今的天數)/log(代碼行數),大概得到如下一個圖:

《開源思索集》一28萬個開源項目之番外篇

經過強大的excel的計算,兩個資料的相關系數,大約是0.203的樣子,也就是說:大緻上有較弱的正相關。

三、開源

目前,我已經将這個分析的相關資料,放在github上開源了。簡單介紹一下:

data.sqlite3.zip 是28萬基礎資料。

projects.sqlite3 是331個項目的詳細資料。

projects.csv 是我用來做資料分析的大表格。

四、名單

331個一個開源項目,名單如下:

《開源思索集》一28萬個開源項目之番外篇

繼續閱讀