开发者价值评估可视化团队来自湖北大学计算机与信息工程学院OS-HUBU社区,团队里的成员有:田明炎、周志峰、周珊珊、王耀庆。
本作品前端设计由田明炎完成,周志峰负责模型的分析,数据清洗与设计由周珊珊和王耀庆共同完成,可视化界面布局设计是所有人共同讨论所确定的。
GitHub是一个面向开源及私有软件项目的托管平台,作为开源代码库,GitHub拥有超过900万开发者用户,和众多的开源项目。在这样一个拥有众多开发者和开源项目的社区中,开发者的贡献和价值评估就变得至关重要。
首先,对于企业招聘来说,GitHub上的开发者价值评估能够帮助他们了解开发者的整体水平和多个方面的能力。通过开发者价值评估的大屏,能够详细了解开发者在具体方面的能力表现,能够帮助企业更加客观地去了解和评估一个开发者的能力。
其次,对于开发者自身而言,价值评估它能够直观地表现一个开发者的能力水平,并从多个维度来对开发者的价值进行分析与描述,从而能够更为全面的去表现开发者的价值。也能帮助开发者展示自身的能力,有针对性地去提升自身能力。
最后,对于整个开源社区来讲,GitHub上的开发者价值评估也能够帮助推进开源社区的一个发展和进步。能力出众的开发者还能通过自身的贡献来去影响和激励其他开发者进行学习,这样整个开源社区也在不断发展进步。
所以,开发者价值评估具有重要的意义,对于企业、开发者还有开源社区都有重要作用。
开发者价值评估大屏的总体目标是通过开发者在GitHub上的各种事务来对开发者的价值进行一个评估,然后通过一个可视化的大屏来评估和衡量开发者在GitHub上的贡献和价值,并从多个角度来展示开发者的价值以便帮助他们更好了解自身能力,做出提升。也能给企业和团队提供一些参考,帮助他们选择与之匹配的开发者来进行协作。
本文选取了2020年的GitHub全域日志数据,开发者数据以及仓库数据。其中开发者产生的事务有109G的数据,其中拥有仓库的开发者有30多万个,我们选取这一部分的开发者产生的日志数据来做为我们的数据集,并对其进行处理分析,进而表现开发者的价值评估体系。由于这段数据只能从clickhouse数据库中打开,所以模型所需的数据分析和得分计算都在DBeaver里进行。
经过数据收集后,本文已经有了开发者的日志数据,围绕开发者的价值评估来讲,我们需要进行筛选。
本文将从项目管理能力、团队协作能力、编程能力、学习能力和敬业度这五个维度来展示开发者的价值。
其中项目管理能力主要体现在以下四个影响因素:开发者管理项目的数量、合并项目里pull requests的数量、更新项目版本的数量、在管理的项目里回复issue的数量。在数据库中找到相应字段进行统计。
团队协作能力包括与开发者有过协作的开发者的数量与开发者与其协作者之间紧密程度的平均值。与开发者有过协作的开发者的数量很容易得到,开发者与其协作者之间紧密程度的平均值是开发者与所有协作者的紧密程度和与开发者合作过的人的比值得到的。然而协作者的紧密程度是通过开发者和协作者在某个issue或者pr中进行评论互动,评论互动一次则加一分以此类推,最后算出每一个协作者与开发者之间的紧密程度做总和。这里只需要从数据库中统计在issue和pr中进行评论互动的次数即可。
学习能力只包括开发者所掌握的编程语言的数量,从language标签中就能得到。然后统计开发者掌握的编程语言数量即可。
敬业度包括每日活跃频率和工作贡献度。每日活跃频率是指软件开发者一年中活跃天数占全年天数的比例。工作贡献度表示软件开发者在一年中的工作贡献量占其同行的平均贡献量的比例,工作贡献量包括issue_comment、open_issue、open_pr、review_comment和pr_merged 的数量。这些都能在数据库中找到相应字段。
编程能力包括创建项目的集合、参与他人项目的集合和follower的数量。创建项目的集合包括创建项目的总量、项目的watch总数和项目的fork总数。参与他人项目的集合包括参与项目的总量、提交pr的总数、对pr进行review的总数和pr被合并的数量。我们在日志数据,开发者数据以及仓库数据中选择我们需要的八个数据。
在收集的数据中,存在开发者有些字段值的缺失,例如开发者项目被fork的数量和watch的数量会存在缺失的情况,统一补0处理。由于存在时间段不统一的问题,在数据的选择上我们也是选择最新的数据来进行统计。
在计算数据的时候由于2020年只有部分的开发者在GitHub上拥有仓库,所以本文挑选30万个开发者来进行数据分析与合理性推断。
在数据清洗之后,本文就要计算五个指标的分数和总分。项目管理能力、编程能力、团队协作能力中统计的数据会进行一个分段打分,其中满分是100分,然后会用CRITIC权重法对影响因素进行权重赋值,最后再加权求和得到分数。学习能力的影响因素只有编程语言的数量这一个,所以直接对编程语言的数量进行分段赋分就能得到分数。敬业度则是用开发者活跃频率与开发者工作贡献度相乘得到。活跃频率是开发者活跃天数与整年天数的比值,工作贡献度就是开发者在GitHub上的工作量比上所有开发者的平均工作量,其中包括issue_comment、open_issue、open_pr、review_comment和pr_merged的数量,最后也会进行分段给分,将分数映射到100分。
**功能描述:**本模块展示了GitHub开发者价值评估模型,首先、中间的位置展示开发者的价值总分数,其次、5个一级指标围绕着中间的总分数做旋转,并且一级指标的圆形里展示分数和等级这两个个信息。
**(1)**开发者价值总分:初始数值展示的是评分最高的开发者的分数,分数越高表示该开发者价值越高。
**(2)**一级指标展示:一级指标围绕着总分旋转,并且初次展示的分数、等级是价值总分最高的开发者的具体情况,等级是根据开发者所占排名的位置所判定的。如图一所示:
图 1 开发者价值评估一级指标展示
**功能描述:**本模块提供一个轮播表,里面展示着开发者价值评估体系前100位开发者的基本信息、开发者活跃度情况和开发者各项二级指标的能力比较情况。为了方便用户对数据有着快速而准确的理解采用雷达图展示开发者二级指标的得分与平均分数的比较情况。
**(1)**开发者选择:轮播表顶部默认显示的是评分最高的开发者。
**(2)**开发者基本信息展示:这里展示开发者的用户名、开发者在GitHub的工龄(从创建账号开始到现在)、开发者价值评估总分。
**(4)**二级指标比较:采用雷达图来显示开发者二级指标分数和平均分数的比较情况,由此可以直观的看出开发者的优势与不足之处,同时也能够直观的评测出GitHub大部分开发者的能力大小。
具体情况如图二、三所示:
图 2 2020年GitHubTop100开发者个人信息
图 3 开发者五维能力分布
**功能描述:**本模块会统计不同国家以及GitHub上不同企业开发者的等级分布情况。通过此模块用户可以看到哪些国家的开发者人数多,哪些国家的开发者群体较为优秀。而企业间的对比可以让人们了解各个大公司的开发者群体在开源领域的能力。
**(1)**每个国家优秀开发者的占比:展示2020年GitHub上人数最多的10个国家群体的优秀开发者所占的比例,由此看出在GitHub上哪个国家的开发者群体较强。
**(2)**不同公司的优秀开发者占比:展示2020年GitHub上谷歌、微软等10个大公司的开发者群体的不同等级分布,对比不同公司的开发者群体的能力高低。
具体情况如下图所示:
图 四 2020年GitHub开发者规模top10国家
图 五 2020年GitHub开发者规模top10企业
为了更好的展示GitHub每个用户的价值,本设计将前面三个模块进行联动。当在轮播表里点击某个开发者的用户名时,第一和第二块的内容会变成当前点击用户的具体信息,同时轮播表顶部会固定为当前点击的开发者的信息,第三块的内容属于固定信息不会因用户名的改变而改变。
为了能够更好的参与到开源的实践以及贡献中去,本项目在GitHub上创建了一个仓库,并且拥有了28个commit以及10个已经合并的pr。仓库名为OS-HUBU/01-02-01-DevValSys。
在未来这个项目将吸引更多的人参与,开发者价值评估是开源领域里的一个重要的组成部分,其中的指标和指标的计算方式还需要越来越多的人来加入并且提供自己的想法,同时在未来本团队将根据这些意见来完善我们的指标体系。
大屏登录地址:
视频查看地址:
https://www.bilibili.com/video/BV1cH4y1f7Xm
感谢所有为开发者价值评估做出贡献的同学,感谢OS-HUBU开源组织对此项目的鼎力支持。




