在线技术社区用户研究综述
2020-11-25张凯强倪亚晨
张凯强,倪亚晨
(四川大学计算机学院,成都610065)
0 引言
互联网诞生不久,用户便可以在网络中生产和传播资源,根据资源主题,用户群体和和使用方式的不同,分为各种网络社区,如社交网络社区Facebook、QQ、微信等,主要是以在网络上进行社交活动的社区;问答社区[1],如Google Answer、百度知道和知乎等,这类社区允许用户提问并且回答他人的问题。在线技术社区,如 GitHub、StackOverflow、CSDN 等,这类社区主要是供技术爱好者或者从业者们使用[2],来分享和提高自己的技术。
在线技术社区主要有两种形式,一种是以代码为核心,代表网站是:2008年上线的GitHub,其是现在全球最大的开源代码托管平台,以及2014年上线的码云Gitee,面向国内技术开发者的代码托管平台等,这类平台主要是供在线技术社区用户管理和学习代码;另外一种是以技术问答为中心,代表网站是:2008年由两位技术博主创建的技术知识问答社区StackOverflow,以及1999年创立的中国专业IT社区CSDN,这类在线技术社区主要以用户提问,其他用户来回答的形式来提供服务。
作为一种集成化的知识资源共享和信息资源传播平台,在线技术社区为用户提供了技术交流、技术咨询和共享空间,深受技术相关从业者和爱好者的青睐。用户可以在社区发表博客或帖子来记录分享自己对某一问题的经验看法,或者在自己的代码仓库上传自己的项目代码用以管理代码,也可以浏览或收藏自己感兴趣的内容或者拉取自己感兴趣的别人上传的代码仓库,还可以针对自己遇到的技术难题或者疑问提出咨询,以及参与自己感兴趣的话题的讨论等。例如,全球最大的开源技术社区StackOverflow,拥有超过800万的用户以及3800万帖子[3],每天还有新用户的加入和产生大量的博客和帖子,以及浏览、点赞、评论、收藏等行为,还有现今全球最大的代码托管平台GitHub,现已拥有超过4000万开发人员以及超过1亿的代码仓库[4],每天有上千万的用户上传他们自己的代码,或者对感兴趣的项目进行收藏、拉取等。
做好在线技术社区的用户研究对于社区运营者来说十分重要,有助于他们了解用户行为,管控用户内容,并更好地了解用户需求,从而为用户提供更加精准的推荐和个性化服务,从而增加用户粘性和社区活跃度。
本文概括了当前当前最流行的在线技术社区GitHub和StackOverflow的用户研究,根据研究内容的不同分为用户本身研究和用户内容研究两类,分别进行了研究论述,并且对下一步的研究工作进行了讨论。
1 在线技术社区用户内容研究
在线技术社区的用户会在平台上托管自己的代码,写帖子进行技术交流,或者回答别人的问题,提出自己的疑问等,这些用户在社区中所产生的文档、代码等都是用户产生的内容,是用户研究中的重要部分,很多研究者都对此进行了研究。
Baltes S.和 Kiefer R.等人[5,6]研究了在 GitHub 数据仓库中的代码对于StackOverflow上的代码引用问题,他们提出了一个实证研究设计并得出结果,分析了在GitHub项目中StackOverflow代码片段的标明引用和未标明引用的现象,研究表明,平均而言,在所有仓库中平均3.22%标明了对StackOverflow代码片段的引用,在受欢迎的仓库中为7.33%,此外,研究还发现开发人员更倾向于在整个StackOverflow引用而不是特定的答案。对于Java仓库,至少有三分之二的复制代码片段未标明引用。
Baltes S.、Dumani L.和 Treude C 等人[7]研究了StackOverflow上帖子的演变与其他平台的关系,他们构建了SOTorrent,一个开放的基于官方SO数据转储的数据集。SOTorrent提供对整个帖子和单个文本或代码块级别的SO内容的版本历史的访问。它通过聚合来自文本块的URL和通过收构建了SOTorrent,一个开放的基于官方SO数据转储的数据集。SOTorrent提供对整个帖子和单个文本或代码块级别的SO内容的版本历史的访问。它通过聚合来自文本块的URL和通过收集引用将SO帖子连接到其他平台表单从GitHub文件到SO帖子。在研究提供了对SO帖子演变的见解,例如,帖子编辑通常很小,在帖子初始创建后不久发生,而且代码很少,此外,我们的分析揭示了后期编辑和评论之间的密切关系。
Treude C.和Wagner M.[8]则使用GH和SO的文本数据来对主题模型的配置参数进行了研究,他们发现:①主题建模参数配置的常用经验法则不适用于实验中使用的GH和SO语料库;②从GitHub和Stack Over⁃flow抽取的语料库具有不同的特征,需要不同的配置才能实现良好的模型拟合;③他们的模型可以可靠地预测看不见的语料库的良好配置。这些发现支持研究人员和从业人员在分析软件存储库中包含的文本数据时有效地确定适合主题建模的配置。
Cai X.、Zhu J.、Shen B.等人[9]提出了 GRETA,一种基于图形的新方法,用于在GitHub上为存储库分配标签。GRETA的核心见解是:①使用StackOverflow中的领域知识为GitHub构建实体标签图(ETG);②通过采用随机游走算法为存储库分配标签。他们已经实现了GRETA,并使用GRETA的标签分配结果为GitHub开发了一个存储库搜索引擎。并且针对几种基线方法评估了GRETA,以研究其标记GitHub存储库的有效性。结果显示,GRETA的F-Measure达到了35%,优于基线方法。此外,基于GRETA的搜索引擎获得比GitHub提供的搜索引擎更高的NDCG值,表明带有标记存储库显着增强了GitHub上的搜索能力。
Liu X.、Shen B.、Zhong H.[10]等人提出了一种名为EXPSOL的方法,该方法使用支持向量机训练的模型推荐在线资源作为新报告的异常相关错误的解决方案。他们对来自StackOverflow的数千个问题和来自GitHub的固定问题进行了两次评估,并取得了很好的效果。
2 在线技术社区用户本身研究
除了上述的用户内容,如代码、文档等的研究之外,关于用户研究的另外一个重要部分便是关于用户本身的研究,如用户兴趣、用户社交、用户行为等。
Lee K.W.和Lo D.[11]研究了GH和SO中开发人员的跨平台兴趣,研究发现开发人员在GitHub和Stack⁃Overflow中有共同的兴趣;平均而言,39%的开发人员在GitHub仓库和StackOverflow的问题属于相同的兴趣。此外,开发人员与其他共同参与两个平台活动的开发人员有着类似的兴趣。特别是,与共同参与其他平台活动的其他开发人员相比,共同提交和共同请求同一GitHub仓库并共同回答StackOverflow同一问题的开发人员有着更加相似兴趣。
Venkataramani R.、Gupta A.、Asadullah A.等人[12]开发了一个模型,通过挖掘开发人员在不同开源项目中的活动来对开发人员在目标领域的专业知识进行排名,并且为StackOverflow开发了一个推荐系统,使用了从GitHub提取的数据。
Badashian A.S.[13]提出了一个更现实的错误分配任务。首先,开发了一个开发人员专业知识的新模型,考虑了他们的代码开发的贡献,以及他们对相关问答(Q&A)平台的贡献。其次,采用经济学的角度来进行任务分配,并且建议将任务从“将一个bug或者问题分配给最佳开发人员”到“为一组合格且可用的开发人员分配多个未解决的bug或者问题”。
Vasilescu B.、Filkov V.、Serebrenik A.[14]研 究 了StackOverflow活动与开发过程之间的相互作用,并通过最大社交编码库GitHub的代码更改来验证。他们的研究表明,活跃的GitHub提交者会向其他人提出更少的问题并提供更多的问题答案。此外,活跃的Stack⁃Overflow提问者以比不提问题的开发人员的开发行为更加分散。最后,研究表明StackOverflow活动率与GitHub中的代码更改活动相关。
Wu Y.、Kropczynski J.、Shih P.C.等人[15]研究发现对GitHub上类似的代码仓库的贡献会导致用户在GitHub上相互跟随,并且互联网上有一个软件开发者的生态系统,包括很多平台,如Forrst、Twitter和Hack⁃er News等。开发人员在这些平台上进行社交介绍和其他交互,并与GitHub上的代码仓库进行交流,他们将GitHub描述为更大的开发人员交互生态系统的一部分用来研究用户的社交活动。
Y.Xiong、Z.Meng、B.Shen、W.Yin[16]提出了一种在GitHub和StackOverflow中挖掘开发人员行为的新方法。这种方法使用CART决策树链接来自两个社区的帐户,利用来自用户名,用户行为和写作方式的特征。然后,通过T图分析,基于LDA的主题聚类和跨站点标记迭代遍历站点开发人员行为。并进行了几次实验来评估这种方法。结果表明,他们的身份联系方法的精度和F-Score高于以往的方法。特别是,他们发现:①活跃的issue提交者也是积极的问题提问者;②对于大多数开发人员来说,他们在GitHub中的内容主题与他们在StackOverflow中的问题和答案的主题相似;③开发人员对StackOverflow的关注随着他们当前参与GitHub的项目发生变化;④开发人员对GitHub的关注与他们的答案相关,而不是StackOverflow中的问题和评论。
3 讨论及未来工作
随着在线技术社区的发展,用户和用户产生的内容越来越多,做好在线技术社区用户的研究对于在线技术社区的高质量发展有着重要作用,本文上述罗列了典型的在线技术社区GitHub和StackOverflow的用户研究概况,我们可以看出现有的研究大多是关于用户的某个方面的研究,如兴趣或者技术特长或者社交等,缺少对于用户更加全面的研究,而现在火热的用户画像技术便是解决之道。
我们下一步的研究工作便是使用GitHub和Stack⁃Overflow数据来对用户进行更加全面准确的画像,从用户自然属性,用户擅长领域、用户兴趣等多个方面来刻画,并将我们的画像应用于推荐系统中。