摘要:近来开源社区引起了研究者极大的的兴趣,但当涉及到开发者动机时,只有极少数能得到赞同。开源社区让我们看到的是,参与者一般趋于根据自己的需求做贡献,而这种需求更多的是一种意识形态上的目的。我们相信大多数参与者做贡献能满足个人的目的。我们通过建模开源社区作为一个凸组贡献者,来展示开发者函数如何作为一个集体的智慧。我们的分析表明,大多数开发人员贡献的只有一个项目或一小部分源代码。我们还发现,大部分有用的软件功能是由一组有不同动机和个人目标的开发人员创造的一个紧急现象。
关键词:开源软件,开发者,集体智慧,开源版本,协作版本系统
1 介绍
有人提出,开放源代码软件是严重依赖开发它的群体。如果没有集体努力、社交互动和集团开放源代码社区的影响,软件的开发和采用就不会发生。如果未经证实,视图的开发人员一起劳动去实现一个共同目的是一个很有吸引力的的假设。以前的研究已经显示了开源开发者的人口数量与最大组成的集群——只有总数量开发者的25%——是不相交的。尽管他们的结论将显示为不正确的,但他们给出了开源社区并不是作为一个整体运作的证据。我们希望直接指出开源社区群体的错误描述,并通过使用流行的开放源代码开发网站SourceForge来证明几乎所有的开发人员在开放源码社区工作都是彼此独立的。
我们的假设是开源社区和他们成就能被视为一个集体智慧的模型。当贡献收集和展现作为一些有用的可以与外围产品竞争的功能的相关收集时,开发人员会花时间尝试来实现自己的目标。那些我们已将其命名为长期贡献者的开发人员,将此功能转变成市场上的应用,并竭尽全力地维护它。开源软件社区是有不同动机和个人目标的个人开发者的整体运作。在本文中,我们将研究结果展示出来,是为了证明这种集体智慧模型是一个合理的开源社区的精准写照,从而纠正为了共同意识目标来共同劳作是开源社区目标的假设。
2 相关工作
开放源代码社区的研究在过去几年已经有很多,但是对开发者动机的研究尚未取得一致意见。试图解释参与的视角从自由软件思想谈到了兴趣和创造力,还有职业问题、学习和声誉、背景和身份,开发人员希望满足个人需要等等。尽管调查的增强型指数支持每一个这些理论,但我们认为大多数的开发人员是为了努力实现自己的目标。
在文章开头的动机、治理和在开源软件开发发展中可行性的混合,Shah试图通过采访开放源代码社区的参与者来解决这些矛盾的观点。几乎所有的受访者说,他们的初始动力是因为相关工作需要。开放开源软件由于易于许可而不是合同谈判闭源软件,于是被用来完成他们的相关工作。通常造成他们贡献的原因是需求特征的匮乏,因为当需要存在时,参与者通常不会等待他人来解决这个问题。开发人员在项目内以避免冲突会配合其他个体,但倾向于专注在自己的需要。从先前的研究证据,Shah发现一个小子集的原始参与者在发现了他们的最初需要很久之后仍继续贡献。这些长期的贡献者往往是高度熟练的软件开发者,并在就业公司担当管理职位。开放源码软件开发给他们提供了一个具有挑战性的问题场所,同时利用他们的创造力。受访者表示,这些长期的贡献者会经常提交代码,修复bug和设计软件版本。这些贡献者自己也表示,他们监视邮件列表、bug报告,接收反馈和改进项目的代码。
长期的项目贡献者负责完成是唯一的可见项目保证开源社区的存在:提交代码,重写部分, 修复漏洞,设计软件版本,维持邮件列表,阅读bug报告和改进现有代码。要是由长期的贡献者组成的一小部分开源社区和长期贡献者产生的社区存在开发人员大多是短期贡献者参与社区的明显迹象该多好啊!
3 实验
我们的目标是要表明开源社区是由提出自己议程的个人组成。如果这样,它会跟着另一个模型,一个比共同意识形态更能代表社区开发者动机和行为欲望的模型。我们强调一种细节,揭示了大多数开发人员致力于一个项目,而且只有一小部分的一个项目是受了所有开发人员的贡献的影响的。方法和结果概括如下。
4 资料与方法
我们的数据收集集中在SourceForge上,托管工程从事大型种类和数量的开放源码项目的最大的开放源码开发网站。我们的目的是为了证明在开放源码社区中,开源开发人员的贡献是有限的。我们讲这个分为两个阶段。在第一个阶段,我们将使用一个外部数据库,用来装集这过去六年里从SourceForge收集的信息,以用来分析在集体水平上的开发参与者。第二阶段将包括使用SourceForge的并发版本系统。我们将使用这个记录检查一个项目级别的开发人员的贡献。这两个阶段的观察下面将更详细地讨论。
美国圣母大学主持一个维护了一个巨大的收集的数据的开源数据库(http://www.nd.edu/~oss/Data/data.html)。数据收集始于2003年1月一个SourceForge的转储场。2005年2月开始,这个转储每月一次,用于研究开源社区无尽的资源。我们将使用这个丰富的知识来证明大多数参与者开源社区也许只参与了一个开源项目。我们相信,这将是一个基本的观点,这一点也许沉重打击了联系社会社区和加强的建议,但我们需要满足自己的参与者独立的需要。数据库信息不过是有限的,它不能用于准确地确定单个开发人员贡献到给定的项目。我们使用并发版本系统(CVS)数据来填补这一缺口和确定这个项目的开发人员。
并发版本系统,也称为CVS,维护所有更改的历史在一个项目中。这个系统的一个开源项目,本身已在SourceForge社区得到广泛应用。它的目的是跟踪可以用来恢复到以前版本的源代码之内的改变和记录适当的信息。这些信息随着作者的提交有详细的变化。通过使用CVS历史记录,我们能够获得每个个体开发人员贡献在任何一个项目中的时间,或计算她修改或开发那段代码的时间。我们使用这些详细信息来表明:一个项目中开发个人拥有的知识极为有限。如果这可以显示,那么它也可以假定开发者缺乏必要的知识来为我们提供 统一的目标。
在我们的项目中,CVS直接从SourceForge通过他们提供的服务器收集数据。使用他们的系统和一个标准的CVS客户机,完整的源代码存储库为很多选中的项目被下载。通过进一步使用CVS客户机,项目历史中提取了使用一个标准的命令命名的日志。这段历史是用于创建我们的结果。
5 结果
5.1 Particpant的社区的贡献
我们的第一个假设是:大多数在开放源码社区的参与者针对一个项目做贡献。为了证明这一假设,我们收集了反映参与开源项目中的数据。对于每个月有效的数据,我们计算了分配给一个开发人员的比例项目,等等。每个月的数据是从所有的前几个月的积累。我们已经介绍了在图1这些研究结果。
一个从2003年到现在的几乎不变的趋势可以被观察到。反映参与从2007年7月份到9月份的数据点由于隐私问题SourceForge与数据库使用被破坏。(http://zerlot.cse.nd.edu/mediawiki/index.php?title=User_group)数据表明,SourceForge网站上超过75%的开发者的历史显示已经参加不超过一个项目。它显示了在报道参与的246114开发者之外,只有55873人参与了多个项目。然而这些结果不包括项目是不活跃的一段时间。接受更准确描述的分析了数据的结果,这些数据每个月被过滤,只包括活跃的计划。在被评估的月份之前的两年,活跃的计划被定义为发给软件释放的计划。
图2包含活跃的计划中参与者被过滤的项目。
类似于未经过滤的数据,从2007年7月到9月这一段时间是毁坏的,但其差异清晰可见。大约85%的开发者在活跃的计划项目上的贡献少于贡献超过三个项目的4%的开发者。线性趋势可以提取显示开发人员的比例在单一项目正在上升。同样,线性趋势可能表明:参与多个项目正在下降。
5.2 Particpant的项目贡献
我们的第二个假设是:几乎所有的开发人员都不具备整个项目的知识。这一假设可以通过检查每个开发人员在项目的参与程度发酵。在这些项目中,通过观察这水平我们测量 参与者的知识的数量。SourceForge的并发版本系统包含一个能够进行测量的信息存储库。我们分析了在2009年7月具有最高数量的参与项目。在前20个项目之外,包括前4的1个项目对分析CVS有用。我们测量了开发人员在单个项目已经作出了突出贡献的文件的百分比。一个开发者必须编辑至少一个文件的一行才算作一个贡献者。表1列出了测量。参与者为每个项目贡献的数量和比例被表示出来。
表1表明,开发人员在他们的项目有一个狭窄的范围。在其中的一些项目,多数开发人员从来没有贡献。自从有相对没有项目成员参与所有的编码工作的项目,我们可以得出结论:几乎所有的开发人员没有整个项目的知识。
6 讨论
过去的研究显示,几乎所有在开源社区的参与者由于与工作相关的需要开始贡献。这和几乎所有参与者在一年之后不再贡献的观察联系起来,我们可以假设主体参与者因为需求被推动去贡献。我们的研究结果表明,每个开发人员的贡献面都非常狭窄。单一开发人员的贡献主要被注入到单个项目,在很小比例上影响影响到整个项目。这巩固了认为开发者以实现自己的目标作为驱动而贡献给开源社区的假设。
长期的贡献者,他们很可能通过他们自己的贡献,能继续行使开放源码项目的权力。通过代码修订和软件版本,它们引导开源项目的进展和未来。在我们的研究中,我们发现一些开发人员在开放源码社区中运行在一个伟大项目的数量和其他一些他们参与的项目差不多。确定家事这些雄心勃勃的开发者个这些长期贡献者一样,维护社区应该是一个客观的未来。
随着大多数参与者都努力实现自己的目标,并且长期的贡献者坚持维护项目,功能型软件生产出来。这结论校正符合我们的假设:开源社区的软件发展现象可以解释作为集体智慧的社区模型。自从他们被绑定到同个项目,所有的开发人员在单个项目的目标也可以假定 以某种形式有关。因为开发者的目标被充满,该项目将开始达到一个运作正常的阶段。随着项目的增长与不断扩张的功能,长期的贡献者是唯一可以保持运转的人。
7 结论
我们的研究加强了这个想法:开发人员在开放源码社区的贡献是根据他们的个人需求驱动。在本文中,我们开发了一个集体智慧模型,以解释如何由开发人员来满足个人需求的有用的开放开源软件。尽管这一观点并不适用每个贡献者,但它代表了大部分的开源社区。基于这本文中我们的调查,我们已经证实:大部分开源社区的参与者只为一个项目贡献,并且几乎没有一个人拥有一个项目的所有知识。开发人员基于他们的个人需求作出贡献,同时,他们的贡献收集并成为一个相关收集有用的功能。
我们的数据的范围仅限于SourceForge,它是否是展示开源社区最好的一个例子无从知晓。我们的分析的项目是只能使使用SourceForges CVS贡献的项目。我们的示例也包括前20项目参与的百分之五十,但这可能是重要的。本文的研究并没有证明或强调短期之间的和长期的贡献者的区别。我们的目的是给的了解主要开源社区的强度经营,未来的研究将着眼于这些差异。在开源社区上的研究仍然处于初步阶段。尽管我们已经学会很多,但仍然有好处。应该研究一个产生有用的社会结构的自我管理机构。
转载请注明:陈童的博客 » 开源社区中集体智慧的工作机制