首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >青铜虐王者?以太坊被无名项目虐哭的背后,GitHub的活跃度排名你真的看懂了吗?

青铜虐王者?以太坊被无名项目虐哭的背后,GitHub的活跃度排名你真的看懂了吗?

作者头像
区块链大本营
发布2018-09-21 11:48:24
5340
发布2018-09-21 11:48:24
举报

作者/ Valentin Mihov 编译/ Aholiab

常混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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 区块链大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档