青銅虐王者?以太坊被無名項目虐哭的背后,GitHub的活躍度排名你真的看懂了嗎?區塊鏈
作為開發者,在GitHub瀏覽項目時,「開發者活躍度」(DevActivity)是一個重要的參考指標。越多開發者愿意投入時間和精力在一個項目上,項目的活躍度高,活躍度高則往往意味著:開發者相信這個項目是靠譜的;這個項目的功能更豐富;以及這個項目存在「貓膩」的可能性更低。
常混GitHub的人都知道,想要從數以百萬的項目中找到靠譜的項目,有一個重要的參考標準,就是「開發者活躍度」。
然而,最近一家數據分析公司的CTO(本文作者)在分析過GitHub的開發者活躍度指數以及多個數據平臺根據該指數提供的排名后,卻發現,現有的指數數據和排名有些隱藏的坑,連以太坊這樣的王者都被無名項目給虐了。
總之,活躍度排名的水很深,還是讓圈內人為你揭秘吧。
作為開發者,在GitHub瀏覽項目時,「開發者活躍度」(Dev Activity)是一個重要的參考指標。
越多開發者愿意投入時間和精力在一個項目上,項目的活躍度高,活躍度高則往往意味著:開發者相信這個項目是靠譜的;這個項目的功能更豐富;以及這個項目存在「貓膩」的可能性更低。
雖然有些土豪開發者可以靠「刷量」把項目的活躍度給刷上去,但對于GitHub上的絕大多數普通開發者來說,刷量的成本是可望而不可即的。況且刷上去的項目,也很容易露出馬腳,經常上GitHub的人往往一眼就能看出來。
那么,這是不是說GitHub是篩選項目最靠譜的參考數據呢?帶著這個疑問,我們研究了大量活躍度指數的數據,通過將此數據與不同項目進行深度對比,發現一個有意思的現象,那就是現有的活躍度數據和排名并不能反應項目的質量和靠譜程度。
既然如此,這一現象是怎樣造成的?開發者在參考項目的活躍度時,到底該參考哪些數據呢?
王者敗給青銅,GitHub活躍度應該怎么看?
CryptoMiso是一個活躍度數據平臺,通過對以太坊、比特幣等知名項目的GitHub活躍度指數進行對比時發現,在活躍度的整體排名上,「王者」竟然敗給了無名「青銅」。
Particl和DigiByte這樣幾乎沒有存在感的項目,git commits的數量遠遠高于以太坊,排名竟然也將比特幣和以太坊遠遠甩在身后。
可問題是,Particl和DigiByte這樣的項目憑什么提交數就比比特幣和以太坊高呢?通過深挖,我們發現Particl「借鑒」了一部分比特幣的源碼,隨著「借鑒」的操作,也分流了一大批比特幣項目下的提交數(commits)和貢獻者,簡單來說就是竊取了比特幣的勝利果實。
而這種操作Particl絕不是個例,類似這樣的項目還多著呢。
隨便舉幾個例子:
DigiByte,CryptoMiso上排名第8位的項目,復制/粘貼了比特幣的源代碼;
ChainCoin,CryptoMiso上排名第18位,把比特幣的源代碼進行分叉,雖然提交數不多(不到30個),但仍然比以太坊要高;
GlobalCoin,CryptoMiso上排名第22,同樣把比特幣的源代碼給分叉了,雖然活躍度不高,但排名卻比較靠前。
雖然CryptoMiso在展示排名時會在對別的項目進行分叉的項目下用小字標注出來,但這么做似乎也并沒有什么效果,像DigiByte這樣直接復制/粘貼的項目,能耐它何?
還有一個有意思的發現是,像CryptoMiso這樣的數據平臺往往只抓取一個代碼庫(repositories)的數據。比如以太坊就有很多個代碼庫,只抓取一個數據往往無法全面反映出以太坊的活躍度。
實際上,以太坊有大量超級活躍的代碼庫。
你可能會想,那我們換個數據平臺怎么樣?行啊,我們就來看看另一個數據平臺Coincheckup,通過對過去一年的提交數進行篩選,很遺憾,數據顯示結果與上面如出一轍,DigiByte和Particl仍然分別排在第8位和第12位。
要找到以太坊,需要往后翻三頁。就連比特金(Bitcoin Gold)這樣連一條提交都沒有的項目,也排在了以太坊的前面。
還有更虐的,很多看起來提交數很多的項目,實際上摻了不少「水分」。
比如有些提交就是用pixel art畫了個像素風格的畫,也能算做有效的數據。
除此之外,利用這些數據平臺去查看項目的GitHub活躍度指數,也是件及其麻煩的事。你要一個一個的去看各個項目的數據,然后再把這些數據放到一起來對比。
不僅如此,正如上面提到很多數據網站抓取的庫很單一,你還要再確定這些庫抓取的對不對。總之,非常麻煩。
那么,要想更科學的獲取項目的GitHub活躍度指數該怎么辦呢?
事件 vs. 提交,誰更靠譜?
從上面可以看出,按照項目的提交數這個標準來判斷項目的活躍度,根本無法有效的反映出項目實際的活躍度。
因此,有些開發者認為,現有的排名機制不好,更科學的方法應該是基于「項目在GitHub上所產生的事件」。那么,事件到底又指什么呢?
事件(event)可以包括以下幾個維度:
代碼推送(code pushes)數量;
互動行為數量,包括添加/刪除/編輯/評論等行為;
pull request交互數量,包括在PRs里的添加/刪除/編輯等;
GitHub Wiki編輯數量;
commits的評論數;
開源代碼庫數量。
通過事件(event)來判斷項目的活躍度還有一個好處,那就是所有事件的返回格式都是統一的。如下面代碼所示:
調用語句也非常簡單:
通過「事件」來獲取GitHub項目的活躍度,不僅能避免上面的問題,還有以下好處:
避免了對某個項目代碼庫代碼的分叉,就能自動繼承該項目的事件數據;
歷史抓去記錄不可更改;
開發者活躍度數據更多元,不僅有提交代碼數量,還包括上面提到的種種維度。
通過這樣的判斷標準再來篩選,我們得到了以下結果:
看到了嗎,以太坊和比特幣妥妥出現在了它們應該出現的位置上,而那些在現有篩選機制上排名靠前的項目,如DigiByte、比特金等,則一個都沒有出現!
利用這一方法,我們也對ERC20 Token進行了篩選,得到的結果也靠譜了很多:
從上圖可以看出,排在最前面的分別是:Status, EOS, BAT, Golem,甚至連波場(TRON)這樣近期被黑的廠商,也排在了相對客觀的位置。
其他有意思的發現
通過今天的文章,我們可以得出一個結論:GitHub項目的活躍度指數,基于事件比基于提交數更科學,也可以避開很多坑。
同時,通過數據的結果來看,也能看出一些有意思的現象:比如ERC20項目的開發者活躍度,比很多區塊鏈平臺項目高得多。
這意味著,以太坊已經吸引到了大量的優質開發者基于這個平臺做開發。
作為開發者之一,相信通過科學的方法篩選和分析數據,找的項目會更靠譜。從今天起,也嘗試起來吧。
PS. 本文提到通過事件(event)篩選開發者活躍度的數據平臺為:
https://santiment.net
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。