副标题#e#
2014年7月13日,由北京大学信息化与信息管理研究中心、北京大学CIO班教务办公室和中国新一代IT产业推进联盟主办,北达软协办,CIO时代网承办的“第三届中国大数据应用论坛”在北京大学隆重举行,来自业界的相关专家学者、CIO、媒体朋友等150多人参与了此次的大数据盛会。
北京大学软件研究所周明辉教授为大家带来了题为《开源社区的大数据分析》的主题演讲,周教授首先为大家分析了开源与闭源的区别,在开源软件的操作过程中会产生大规模的软件操作数据,因此可以利用软件操作数据进行分析和预测,在演讲中还与大家分享了几个开源实例,讲到了长期贡献者对开源社区的生存至关重要。大数据时代,中国面临创新机遇,企业数据,使得数据收集变得容易,逐渐实现从data.org到info.org 及knowledge.org的转变。周明辉女士的演讲深深的吸引了现场嘉宾们的注意力,特别是关注开源技术的嘉宾朋友。以下为演讲实录:
\
北京大学软件研究所 周明辉教授
我希望我的报告能够从不同的视角让大家理解当前大数据时代有怎样的机会和挑战。我的报告是“开源社区的大数据分析”。
首先我的研究工作有60%是基于开源数据的,国内大部分同学、企业家对开源是非常不熟悉的,我想先介绍一下。开源或多或少大家接触过,我们简单看一下,目前在世界上最有名的一些开源软件有哪些,对于浏览器市场Chrome都知道,其它的像数据库,像服务器,只要是市场上有一个成功的商业软件,为了抵抗他们知识产权对市场的霸占,基本在开源社区有人建立开源软件。比如浏览器,2014年6月份,IE市场份额58.38,从数据来看对于开源软件其实对商业软件是非常大冲击,比如说web服务器阿帕奇,基本每一个网站全世界有60%的网站都是用的这个开源软件。
接下来一个问题,这么多在市场上占据如此大份额的开源软件都是谁在开发?这是一张图,大家看到有字的这些是GNOME的,全球目前资源共享达到几千人,在经度纬度是这么一个分布,南美多,中国寥寥无几,我经常听到一个批评,我们中国人是只知道从开源去拉的,我们贡献非常少。从广度看,对于一个大型开源软件,志愿者分布在全球各个地方。
我们是讲数据,对于这些开源软件来讲,数据怎么产生的?有许多开发者,刚才讲到分布在全世界各个地方,他们使用这些工具,包括版本控制,大家如果是在企业做信息处理工作,知道做任何一件事情在软件开发时候,这些轨迹会记录在这些软件开发支持工具里面,所以从古到今,所有开源项目的开发意识全部都被记录在这些工具中,并且基本上全部都是公共可访问的,这就给我们提供了一个理解开源世界,进而使整个软件开发非常好的契机。
我们看一下目前在开源世界这个数据规模什么样子,Gnome目前超过70万个问题处理数据,并且每天有上百个新的产生,阿帕奇可以超过60万封邮件,每天有1千多封新邮件产生。Mozilla每天有2万多条新提交,目前最流行Github.com网站有超过1.2千万的项目。我们软件工程学科有一个分支做这个事情,我们希望基于这些存在的数据并来研究软件开发效率和质量。我们称为软件数字考古学。
这是一个基本方法,这是我讲到的在英特尔上所有开源项目留下的数据,所有开发历史每个代码提交,每个问题处理,每个评论都留下来,我们拿到这些数据后进行清洗处理,我们就可以对软件开发我们所关心的问题来预测未来实施推荐,提供决策支持。
这是我们非常重要的四部分,第一必须获取必须清洗数据,这个不像在企业,对于提供方有专业接口,拿到数据要得到有效结果要去理解数据产生的场景,需要理解相应数据法则建立回答你所要回答的问题。
举例,对于软件开发来讲,我们会对一些什么问题关心呢?重点是效率和质量,比如风险评估到底做怎么样一个项目需要多少人多少时间,质量预测,对于现在这个软件来讲,每一篇代码最有可能出错,第二是全球分布开发效率,比如一个项目我是大公司,团队全球各地,到底按什么方式组建团队?这是我们在IBM做调研时候他们某一个项目的经验。比如美国人负责和客户打交道,中国人设计,印度人实现,这是他们认为非常好实践方法。开源生态系统是我们研究焦点,APP等等这些,重点问题这些开源生态系统是包括用户,包括生产者,包括各种开发者,这个生态系统怎么建立?怎么可以持续不断发展下去?接下来我会讲两个例子,在我们这个领域基于这些数据,为了回答这些问题我们怎么做怎么回答怎么做预测。
第一个例子对开源社区长期贡献者非常关键,新人缺乏经验,但如果这些在社区待过足够长时间他们留下来,对于开源社区无论是发展以及健康生态都重要,所以有一个重要问题对开源社区比较关心,我怎么去吸引长期贡献者。这是问题的回答,大家看这张图,这是两个社区,一个是Gnome,一个是Mozilla,每年有新支援者参与开源社区,但是参与进来到能够在社区里面待三年,三年以上是长期贡献者,这是每个月比例,从曲线看,这条曲线在不断下降的,这给我们带来一个问题,到底这些长期贡献者为什么在逐年降低?使得我们对这个问题更加感兴趣。
我们研究一个焦点是什么?我们研究这个问题是想对社区提供支持,新来者进入社区时候告诉你说谁更有可能在这个社区待下去,对于社区里面的长期贡献者,对于社区里面贡献人员可以有限的注意力放在这些未来最有可能成为长期贡献者的新来者身上面。这些有一些技术细节不想深入,但是我希望给大家一个基本认识,我们这些数据来自版本控制问题追踪,这些全部记录在案,我们建立基础是基于这样的数据观察每一个人进入到项目第一个月所有的活动,然后来判断到底和谁交互,当时意愿怎么样,环境怎样有效交互,或者环境有负面影响。这是两个社区上一个数据规模。
#p#副标题#e##p#分页标题#e#
[page] 从这些数据我们可以度量到非常多信息,取决于我们对数据认识和对项目实现认识。两个例子,出来者进入这个社区和进入到公司一样,我们用这些数据可以度量到个人交际圈,他和谁交互,那些人效率怎么样,影响对社区认识。
第二个不仅是个人个体的一个认知,还包括这个个体所在整个项目环境一个社会性。我们度量有细节,我不多讲。但是重点我们用这些数据可以从不同角度去度量到这个个体跟它周围小环境大环境之间一个互动。最后得到结论,对于开源社区第一个月,看第一个月活动能够预测在多大程度上能够成为在这个项目待足够3年贡献者,比如我们发现的是小环境,每个人不同,和谁交互,交互人能力多高,交互的人注意力够不够,很大程度影响这个项目在这个社区里待下的意愿。
大环境比如说产品流行度,任务密度等等。刚才讲基于这些数据,我们建立了一些量度,我们理解了这个人和社区和项目和其他人怎么交互。现在基于这些信息知道第一个月活动我就能够知道,你未来是不是会在这个环境里待下去,这个对管理者还是其他贡献者都是他实时决策的重要支持,到底应该把更多注意力放谁身上,开源社区来讲人员非常少,怎么把有限资源放到更有潜力人身上,这是这个问题关注的重要点。
还一个例子,比如有研究商业公司对开源影响,大部分公司是关心,我怎么样应用更好吸引到用户,比如说现在大家都做开源,我也会做开源。因为开源有很多志愿者,到一个公司加入开源,开源有自身特点,有自己的优势,但公司进入到开源以后,你会用你的影响力对开源公司造成伤害到它的优势的一个影响,我们所做的这个研究其实给出了任何一个公司你想去加入开源时候,有一些决策支持和你的控制手段,你是需要考虑的。
第二个,我刚才只是讲到,我有整个开源项目,版本控制数据70T,我刚才讲我做一个研究,只面向Gnome和Mozilla两个项目,我可以利用这么大规模数据回答更大问题,这是第二个例子,代码复用检测,是很技术的名词,版权问题,中国从来对版权是不够重视的,这是很多问题起源。比如说最近ORACLE和Google争版权,三星和苹果版权之争,苹果一个版权手机一滑,大家知道三星手机支持的,这个是苹果一个版权,这种版权之争源起都在于当你程序员、当你员工写应用,写新点子时候,怎么知道别人代码尤其开源代码是什么,你是否可以借用那些点子代码。还一个问题,OpenSSL的Heartbleed .刚才揭示一个问题,现在开源代码太多了,版本控制数据有70T,但是对一个公司做软件开发时候,我有1千1万个员工没有办法控制,他们从网上把代码拿下来,任何一份代码到公司够大时候,可能引起诉讼。有一个研究比较重要,对于开源世界,我公司每天新产生的这些代码到底有哪些部分是引用了哪些代码,我们希望面向开源宇宙代码进行代码复用检测。这里只是给大家一个感觉,在这个领域做这个事情计算量和规模多大。
在我们这个领域,我的工作是最好成果之一,我可以负责任地说,大家因为讲到企业数据,企业信息推荐的时候都会讲到计算,我的计算能力有多强,但事实上,我们在做这些研究工作时候,我们面临这些数据时候,我讲到大数据大归根到底其实是对于任何一个特定的领域,你在原有基础之上所面临挑战是什么。刚才我讲到这个问题,我想对整个开源世界去进行复用检测,但事实上我们现在能够抵达这是一些初步结果。
我们发现最常使用软件代码,比如操作系统Linux kernel、,还有Ruby on Rails等等,测试框架Cucumber这个也是目前非常流行的。
上面我讲到两个例子,一个针对个体项目进行研究例子,一个针对整个开源世界进行研究的例子,大家也已经看到了我们已经获得的一些研究结果。从我们领域来讲,我们目前所面临主要挑战是什么?首先是数据收集。比如收集数据,他们系统管理员对数据有严格规定,我们考虑不要影响到正常客户对他们服务器的访问,这些事情非常困难。第二数据规整化,在座各位应该理解这个问题。第三个从数据中寻找规律,去回答我想要回答的问题,这个挑战体现在每个领域最有价值的地方,重点是理解数据法则。
最后这个,当前公司做得非常多,我想这么大数据又想在线分析,性能上如何做到实时分析这么多数据,实时显示这些数据?最后分享一点关于大数据思考,前面讲本领域一些研究,问题的研究结果。
中国的创新机遇,大家应该比我理解更深刻,大家也讲了非常乐观的企业的应用,我只想说,我只想从我所看到的知识积累的角度来讲,我们已经错过了软件兴盛,开源兴盛的时期,我们的技术积累远不如人家。今天全世界讲大数据,我们已经看到,公司个体数据以及用户营销一些数据都已经给我们提供了很好机会去研究数据驱动的决策支持等等,所以从我的角度来讲,在座各位有什么更好手段抓住这些机遇,首先贡献数据。我们现在现有基础上,对数据贡献好像比较缺乏,建立共享平台开放数据访问,这是我等下讲到我努力做的事情。最后希望数据是永远在那的,重点是指我们能够采用怎样方法,从数据里面获得信息获得知识,最后真正帮助我们进行决策支持。
最后讲什么是大,这个问题我经常被问到,说是大数据,为什么称为大?我讲我的观点。只要在我任何一个领域内超出你处理能力,超出忍受能力可以说大。这是我推荐定义。在我们领域来讲,我们目前做的尝试,讲到开源世界,包括跟我们有建立关系和合作项目企业,我们努力收集所有数据,希望能够规整化并且开源出来,现在北京交通这么拥挤,如果政府能够把汽车交通数据能够开源出来,我相信有无数非常有智慧网友给我们规划无数条道路出来,这个数据如果能够开放出来让大家访问,是吸引群众创新的最好渠道。在我们项目希望做这样的事情,首先是在这些开源项目,因为是软件项目,会提供一些基本的信息,最后以这些数据为基础抓住核心价值,从数据里面挖掘出来回答本领域最有价值问题的一些量度,最后能够真正实现。谢谢。