青銅虐王者?以太坊被無名項(xiàng)目虐哭的背后,GitHub的活躍度排名你真的看懂了嗎?區(qū)塊鏈

                  區(qū)塊鏈大本營(yíng) 2018-09-07 09:39
                  分享到:
                  導(dǎo)讀

                  作為開發(fā)者,在GitHub瀏覽項(xiàng)目時(shí),「開發(fā)者活躍度」(DevActivity)是一個(gè)重要的參考指標(biāo)。越多開發(fā)者愿意投入時(shí)間和精力在一個(gè)項(xiàng)目上,項(xiàng)目的活躍度高,活躍度高則往往意味著:開發(fā)者相信這個(gè)項(xiàng)目是靠譜的;這個(gè)項(xiàng)目的功能更豐富;以及這個(gè)項(xiàng)目存在「貓膩」的可能性更低。

                  常混GitHub的人都知道,想要從數(shù)以百萬的項(xiàng)目中找到靠譜的項(xiàng)目,有一個(gè)重要的參考標(biāo)準(zhǔn),就是「開發(fā)者活躍度」。

                  然而,最近一家數(shù)據(jù)分析公司的CTO(本文作者)在分析過GitHub的開發(fā)者活躍度指數(shù)以及多個(gè)數(shù)據(jù)平臺(tái)根據(jù)該指數(shù)提供的排名后,卻發(fā)現(xiàn),現(xiàn)有的指數(shù)數(shù)據(jù)和排名有些隱藏的坑,連以太坊這樣的王者都被無名項(xiàng)目給虐了。

                  總之,活躍度排名的水很深,還是讓圈內(nèi)人為你揭秘吧。

                  作為開發(fā)者,在GitHub瀏覽項(xiàng)目時(shí),「開發(fā)者活躍度」(Dev Activity)是一個(gè)重要的參考指標(biāo)。

                  越多開發(fā)者愿意投入時(shí)間和精力在一個(gè)項(xiàng)目上,項(xiàng)目的活躍度高,活躍度高則往往意味著:開發(fā)者相信這個(gè)項(xiàng)目是靠譜的;這個(gè)項(xiàng)目的功能更豐富;以及這個(gè)項(xiàng)目存在「貓膩」的可能性更低。

                  雖然有些土豪開發(fā)者可以靠「刷量」把項(xiàng)目的活躍度給刷上去,但對(duì)于GitHub上的絕大多數(shù)普通開發(fā)者來說,刷量的成本是可望而不可即的。況且刷上去的項(xiàng)目,也很容易露出馬腳,經(jīng)常上GitHub的人往往一眼就能看出來。

                  那么,這是不是說GitHub是篩選項(xiàng)目最靠譜的參考數(shù)據(jù)呢?帶著這個(gè)疑問,我們研究了大量活躍度指數(shù)的數(shù)據(jù),通過將此數(shù)據(jù)與不同項(xiàng)目進(jìn)行深度對(duì)比,發(fā)現(xiàn)一個(gè)有意思的現(xiàn)象,那就是現(xiàn)有的活躍度數(shù)據(jù)和排名并不能反應(yīng)項(xiàng)目的質(zhì)量和靠譜程度。

                  既然如此,這一現(xiàn)象是怎樣造成的?開發(fā)者在參考項(xiàng)目的活躍度時(shí),到底該參考哪些數(shù)據(jù)呢?

                  王者敗給青銅,GitHub活躍度應(yīng)該怎么看?

                  CryptoMiso是一個(gè)活躍度數(shù)據(jù)平臺(tái),通過對(duì)以太坊、比特幣等知名項(xiàng)目的GitHub活躍度指數(shù)進(jìn)行對(duì)比時(shí)發(fā)現(xiàn),在活躍度的整體排名上,「王者」竟然敗給了無名「青銅」。

                  Particl和DigiByte這樣幾乎沒有存在感的項(xiàng)目,git commits的數(shù)量遠(yuǎn)遠(yuǎn)高于以太坊,排名竟然也將比特幣和以太坊遠(yuǎn)遠(yuǎn)甩在身后。

                  19

                  可問題是,Particl和DigiByte這樣的項(xiàng)目憑什么提交數(shù)就比比特幣和以太坊高呢?通過深挖,我們發(fā)現(xiàn)Particl「借鑒」了一部分比特幣的源碼,隨著「借鑒」的操作,也分流了一大批比特幣項(xiàng)目下的提交數(shù)(commits)和貢獻(xiàn)者,簡(jiǎn)單來說就是竊取了比特幣的勝利果實(shí)。

                  而這種操作Particl絕不是個(gè)例,類似這樣的項(xiàng)目還多著呢。

                  隨便舉幾個(gè)例子:

                  • DigiByte,CryptoMiso上排名第8位的項(xiàng)目,復(fù)制/粘貼了比特幣的源代碼;

                  • ChainCoin,CryptoMiso上排名第18位,把比特幣的源代碼進(jìn)行分叉,雖然提交數(shù)不多(不到30個(gè)),但仍然比以太坊要高;

                  • GlobalCoin,CryptoMiso上排名第22,同樣把比特幣的源代碼給分叉了,雖然活躍度不高,但排名卻比較靠前。

                  雖然CryptoMiso在展示排名時(shí)會(huì)在對(duì)別的項(xiàng)目進(jìn)行分叉的項(xiàng)目下用小字標(biāo)注出來,但這么做似乎也并沒有什么效果,像DigiByte這樣直接復(fù)制/粘貼的項(xiàng)目,能耐它何?

                  還有一個(gè)有意思的發(fā)現(xiàn)是,像CryptoMiso這樣的數(shù)據(jù)平臺(tái)往往只抓取一個(gè)代碼庫(kù)(repositories)的數(shù)據(jù)。比如以太坊就有很多個(gè)代碼庫(kù),只抓取一個(gè)數(shù)據(jù)往往無法全面反映出以太坊的活躍度。

                  實(shí)際上,以太坊有大量超級(jí)活躍的代碼庫(kù)。

                  18

                  你可能會(huì)想,那我們換個(gè)數(shù)據(jù)平臺(tái)怎么樣?行啊,我們就來看看另一個(gè)數(shù)據(jù)平臺(tái)Coincheckup,通過對(duì)過去一年的提交數(shù)進(jìn)行篩選,很遺憾,數(shù)據(jù)顯示結(jié)果與上面如出一轍,DigiByte和Particl仍然分別排在第8位和第12位。

                  要找到以太坊,需要往后翻三頁(yè)。就連比特金(Bitcoin Gold)這樣連一條提交都沒有的項(xiàng)目,也排在了以太坊的前面。

                  還有更虐的,很多看起來提交數(shù)很多的項(xiàng)目,實(shí)際上摻了不少「水分」。

                  比如有些提交就是用pixel art畫了個(gè)像素風(fēng)格的畫,也能算做有效的數(shù)據(jù)。

                  20

                  11

                  除此之外,利用這些數(shù)據(jù)平臺(tái)去查看項(xiàng)目的GitHub活躍度指數(shù),也是件及其麻煩的事。你要一個(gè)一個(gè)的去看各個(gè)項(xiàng)目的數(shù)據(jù),然后再把這些數(shù)據(jù)放到一起來對(duì)比。

                  不僅如此,正如上面提到很多數(shù)據(jù)網(wǎng)站抓取的庫(kù)很單一,你還要再確定這些庫(kù)抓取的對(duì)不對(duì)。總之,非常麻煩。

                  那么,要想更科學(xué)的獲取項(xiàng)目的GitHub活躍度指數(shù)該怎么辦呢?

                  事件 vs. 提交,誰更靠譜?

                  從上面可以看出,按照項(xiàng)目的提交數(shù)這個(gè)標(biāo)準(zhǔn)來判斷項(xiàng)目的活躍度,根本無法有效的反映出項(xiàng)目實(shí)際的活躍度。

                  因此,有些開發(fā)者認(rèn)為,現(xiàn)有的排名機(jī)制不好,更科學(xué)的方法應(yīng)該是基于「項(xiàng)目在GitHub上所產(chǎn)生的事件」。那么,事件到底又指什么呢?

                  事件(event)可以包括以下幾個(gè)維度:

                  • 代碼推送(code pushes)數(shù)量;

                  • 互動(dòng)行為數(shù)量,包括添加/刪除/編輯/評(píng)論等行為;

                  • pull request交互數(shù)量,包括在PRs里的添加/刪除/編輯等;

                  • GitHub Wiki編輯數(shù)量;

                  • commits的評(píng)論數(shù);

                  • 開源代碼庫(kù)數(shù)量。

                  通過事件(event)來判斷項(xiàng)目的活躍度還有一個(gè)好處,那就是所有事件的返回格式都是統(tǒng)一的。如下面代碼所示:

                  16

                  調(diào)用語(yǔ)句也非常簡(jiǎn)單:

                  15

                  通過「事件」來獲取GitHub項(xiàng)目的活躍度,不僅能避免上面的問題,還有以下好處:

                  • 避免了對(duì)某個(gè)項(xiàng)目代碼庫(kù)代碼的分叉,就能自動(dòng)繼承該項(xiàng)目的事件數(shù)據(jù);

                  • 歷史抓去記錄不可更改;

                  • 開發(fā)者活躍度數(shù)據(jù)更多元,不僅有提交代碼數(shù)量,還包括上面提到的種種維度。

                  通過這樣的判斷標(biāo)準(zhǔn)再來篩選,我們得到了以下結(jié)果:

                  14

                  看到了嗎,以太坊和比特幣妥妥出現(xiàn)在了它們應(yīng)該出現(xiàn)的位置上,而那些在現(xiàn)有篩選機(jī)制上排名靠前的項(xiàng)目,如DigiByte、比特金等,則一個(gè)都沒有出現(xiàn)!

                  利用這一方法,我們也對(duì)ERC20 Token進(jìn)行了篩選,得到的結(jié)果也靠譜了很多:

                  13

                  從上圖可以看出,排在最前面的分別是:Status, EOS, BAT, Golem,甚至連波場(chǎng)(TRON)這樣近期被黑的廠商,也排在了相對(duì)客觀的位置。

                  其他有意思的發(fā)現(xiàn)

                  通過今天的文章,我們可以得出一個(gè)結(jié)論:GitHub項(xiàng)目的活躍度指數(shù),基于事件比基于提交數(shù)更科學(xué),也可以避開很多坑。

                  同時(shí),通過數(shù)據(jù)的結(jié)果來看,也能看出一些有意思的現(xiàn)象:比如ERC20項(xiàng)目的開發(fā)者活躍度,比很多區(qū)塊鏈平臺(tái)項(xiàng)目高得多。

                  這意味著,以太坊已經(jīng)吸引到了大量的優(yōu)質(zhì)開發(fā)者基于這個(gè)平臺(tái)做開發(fā)。

                  作為開發(fā)者之一,相信通過科學(xué)的方法篩選和分析數(shù)據(jù),找的項(xiàng)目會(huì)更靠譜。從今天起,也嘗試起來吧。

                  PS. 本文提到通過事件(event)篩選開發(fā)者活躍度的數(shù)據(jù)平臺(tái)為:

                  https://santiment.net

                  項(xiàng)目 活躍度 數(shù)據(jù) 開發(fā)者 GitHub
                  分享到:

                  1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源;
                  2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
                  3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。