Download presentation
Presentation is loading. Please wait.
Published byAnthony York Modified 6年之前
1
开发者参加某个项目 Developer Onboarding in GitHub: The Role of Prior Social Links and Language Experience 和该项目中的多少人有关联 使用过的编程语言 Casey Casalnuovo, Bogdan Vasilescu, Premkumar Devanbu, Vladimir Filkov Computer Science Department, UC Davis FSE 15 GitHub数据,可以做什么? 合适的研究问题:有价值,有意思,有新意 研究可行性:直接使用GitHub的数据就可以表达和验证,无需问卷调查等其他手段 数据处理 数据分析:对研究问题使用统计学工具进行验证
2
研究动机 背景: 开发者为什么会加入一个开发团队? 开源团队:多样,流动性,双向选择 开发者无法预测项目的未来
GitHub: Social Coding
3
研究问题 项目中有老搭档 加入可能性 曾经的社交关系和 语言经验 加入时的生产力 曾经的社交关系和 语言经验 全程的总生产力
RQ1: Do prior social connections matter when developers join new projects? That is, are they more likely to join projects in which there are developers they have already collaborated with in the past? RQ2: How does the presence of past social connections, and their strength, influence initial developer productivity in both familiar (past language experience) and unfamiliar project environments (no past language experience)? RQ3: What is the effect of past experience and prior social connections on how productive a developer will be overall in a project? 曾经的社交关系和 语言经验 加入时的生产力 曾经的社交关系和 语言经验 全程的总生产力
4
结论 开发者更倾向于加入到和其中成员有曾经合作关系的项目
开发者参加一个新项目中,如果其中有曾经的合作者,初始生产力比 baseline 增加 3.7% ~ 6.2%;如果主语言是开发者曾使用过的,结果类似。 Prior Language Experience 和 Prior Social Connections 会大大提高开发者在项目中累积的生产力,29.5% ~ 54.3% 有 Prior Social Connections 但是没有 Prior Language Experience,会让累积生产力超过 baseline 的可能性降低 9.6% 更强的社交关系,会略微降低初始生产力;但会增强累积生产力
5
数据收集 数据来源:GHTorrent(截止到 2014/11/1),diversity data set 开发者筛选:至少5年,500条commit,10个项目(fork项目除外) 1274个开发者:65280个项目 git clone 58170个项目 git log 1255个开发者:58092个项目 提交日志:识别author,file,added and deleted lines. 解决多个 和username指向同一个开发者的问题 时间划分 (项目参与: t1~t10;计算生产力:只考虑t1~t9加入的开发者) 语言估计:后缀,34种(top20+GitHub11+other+ambiguous+头文件) t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 08/4/1 2009 2010 2011 2012 2013 2014
6
建模项目参与 原假设:参与项目完全随机 检验:每个开发者所有时间段累积,每个开发者各个时间段(如果该时间段该开发者没有参与项目,或者没有prior social links,则不考虑) 超几何分布: N:该时间段之前还未参加的项目数;K:其中有prior social links的项目数 n:该时间段开发者参加的项目数;k:其中有prior social links的项目数 结果
7
建模参加后的生产力 因变量 负二项分布:over-dispersed count data(variance 远大于 mean)
Productivity:修改文件数 其他选择:commit数(不够细),增/增删行数(噪音多) 过滤特异点: 超过50个文件的提交 超过20的prior link 累积模型中开发者超过500个文件修改的项目过滤
8
自变量:Prior Social Connections
Stable pair:两个开发者至少共同贡献2个项目 开发者D和项目p的 initial social connections: 另一种方案:不进行team size的规范化,选择最强联系的权重,只看都是主要贡献者时的关系 回归模型类似,但显著性和解释能力下降 Past Experience:每种语言修改文件的数量 相关的人 合作的项目 team size
9
控制变量 Project Team Size:参加时有多少人已加入
Total Productivity per Time Period:在整个社区中的修改文件数,参与项目数(考虑累积生产力时,参与项目数用以前参与的项目数代替) Joining and Founding:加入 / 创建(项目commit的第一天提交) Time Period Joined:哪个区间加入(对累积生产力有影响) 其他:项目大小,和team size相关,不考虑
12
GitHub 数据统计可视化示例
13
谢谢
Similar presentations