CY13-Q4 OpenStack, OpenNebulaEucalyptusCloudStack

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




本文是对《CY13-Q3 OpenStack, OpenNebula,Eucalyptus,CloudStack社区活跃度比较》一文的补充和更新。对本文内容感兴趣的读者,可以通过电子邮件或者新浪微博(@qyjohn_)与我联系。

本文同时发布了一个英文版本,可以参见CY13-Q4 Community Analysis — OpenStack vs OpenNebula vs Eucalyptus vs CloudStack这个帖子。

这个社区活跃度比较项目起源于CY11-Q4,此篇报告是到目前为止已经发布的第九个季度性的报告。尽管作者于2012年10月至2013年7 月间曾短暂地就职于Eucalyptus公司,但是本文中所表达之观点完全是作者本人的观点,而非作者目前或以前所在公司的观点。

01

本文的目的是通过论坛和邮件列表的原始数据对OpenStack、OpenNebula、Eucalyptus和CloudStack项目的社区活跃度进 行分析和比较。主要的原始数据是自2009年来这四个项目的官方论坛和邮件列表每个月所产生的讨论主题数、帖子数、以及参与讨论的总人数(邮件地址或者用 户账号)。为了获取这些数据,我写了一个Java程 序自动地从这四个项目的网站下载了所有的论坛和邮件列表信息,并且从这些信息中分析提取出我所需要的数据。程序提取的数据被导入MySQL数据库中以便进 行统计分析,统计分析的结果通过LibreOffice生成分析图表。

在过去几年种,有一些早期的论坛和邮件列表已经被停用,这些数据我们再也不能够访问到了。幸好我们有这个项目刚刚启动时所创建的MySQL数据库,还有过去每个季度所发布的季度性报告,使得我们可以对每个项目进行完整的分析。

对于具有多个会员系统的项目(例如一个论坛和一个邮件列表),我们采取了大量的措施来消除会员重复计数(同一个人被当成不同的会员计算了两次或者两次以上)的情况。

03

04

图1 和图2分别是如上所述四个项目每个月所产生的讨论主题数和帖子数。可以看出:

(1) 在过去12个月中,与OpenStack和CloudStack相关的讨论数量在同一水平上,与Eucalyptus和OpenNebula相关的讨论数量在同一水平上;

(2) 在过去12个月中,与OpenStack和CloudStack相关的讨论数量远大于与Eucalyptus和OpenNebula相关的讨论数量。

05

通常来讲,一个讨论主题得到的回复数越多,表明该主题的讨论越深入。一个论坛或者邮件列表如果只有主帖而没有回复,说明这个社区的参与程度很低。因此,平 均意义上的“讨论帖子数/讨论主题数”则反映了一个社区的参与程度,这里我们暂且称之为参与度(Participation Ratio)。

由图3 可以看出,在过去12个月中CloudStack和Eucalyptus项目的参与度相对较高高,接近于4;OpenStack与OpenNebula项目的参与度相对较低,接近于2。

我们也注意到参与度这个概念引起了一些争议。有些人认为“讨论帖子数/讨论主题数”较低象征着某个社区具有快速解决问题的能力,社区成员所提出的问题能够在很短时间内得到解答,因此不需要多个帖子来解决一个问题。有些人认为“讨论帖子数/讨论主题数”较高可能意味着某个社区可能出现了争论,而这种争论可能已经偏离了某个社区的讨论方向和范围。无论如何,参与度这个名称的确反映了我们的某些主观看法,在一定程度上削弱了本报告的客观性。由于我们暂时没有找到一个更加合适的替代名称,在这个报告里面还是延用原来的名称(欢迎各位读者贡献更好的参数名称)。

06

图4 所示为这四个项目每个月参与论坛或者邮件列表讨论的总人数。可以看出,OpenStack项目的活跃用户数量要远大于其他三个项目。CloudStack项目的活跃用户数量也明显大于OpenNebula和Eucalyptus。在过去12个月中,CloudStack和OpenStack项目的活跃用户数量都在稳步攀升(OpenStack项目有100%的增长,CloudStack项目有50%的增长),而Eucalyptus和OpenNebula项目的活跃用户数量基本上没有增长。

值得一提的是,虽然CloudStack的活跃用户数量稍微小于OpenStack,这两个项目的主题和帖子数量是基本相当的(参见图1和图2)。

07

累计社区人口(简称社区人口)指的是曾经通过论坛或者邮件列表参与过讨论的用户和开发者总数。(不包括在论坛或者邮件列表中注册但是从未公开参与讨论的社 区成员。)这些人或多或少地使用过相关产品,但是并不代表他们目前还是活跃用户。图5 所示为这四个项目的社区人口增长趋势。可以看出,OpenStack与Eucalyptus项目的社区人口遥遥领先,CloudStack与OpenNebula项目的社区人口相对较低。

问题在于,开源IaaS软件经过这么多年的发展,长期累计社区人口的意义已经越来越弱。一方面,某些早期用户可能已经多次改变了阵营;另一方面,某些早期论坛和邮件列表已经结束了历史使命。从社区活跃度的角度来看,我们认为最近6 个月或者最近12个月的累计社区人口可能是有意义的,但是将累计社区人口无限制地延伸到侏罗纪时代,可能会使这个参数失去实用价值。

08

图6 所示为这四个项目每个月新增加的社区人口数量。在过去六个月中,CloudStack与OpenStack的社区人口增长速度基本相当。

与CloudStack和OpenStack向比较,Eucalyptus和OpenNebula的社区人口增长较为缓慢。

09

图7 是图4 与图6的重新组合。其中,实线部分表示的是每个月参与论坛或者邮件列表讨论的人数,虚线部分表示的是每个月新加入论坛或者邮件列表的人数。

在过去12个月中,OpenStack与CloudStack项目的新增人口占当月活跃用户的30%左右,OpenNebula与Eucalyptus项目大概是50%。如 果不考虑社区人口的规模的话,可以认为OpenStack与CloudStack社区的粘性大于OpenNebula与Eucalyptus社区。

10

图8 所示分别是本文所述四个项目的社区人口,过去一个季度的活跃用户数量,以及过去一个月的活跃用户数量。可以看出:

(1) OpenStack的社区人口最多,然后是Eucalyptus、CloudStack、OpenNebula;

(2) 在过去一个季度中,OpenStack的活跃人口最多,然后是CloudStack、Eucalyptus、OpenNebula;

(3) 在过去一个月份中,OpenStack的活跃人口最多,然后是CloudStack、Eucalyptus、OpenNebula。

我们还计算了本季度活跃人口与累计社区人口的比值。对OpenStack项目来说,这个比值是32.4%;对于CloudStack项目来说,这个比值是21.3%;对于OpenNebula项目来说,这个比值是10.5%;对于Eucalyptus项目来说,这个比值是4.8%。很显然,相当部分的OpenStack和CloudStack社区成员选择了留下,而大部分的Eucalyptus社区成员选择了离开。这与我们在图7 中所观察到的现象(OpenStack与CloudStack社区的粘性大于OpenNebula与Eucalyptus社区)是一致的。

11

在CY12-Q3分析中,我们首次提出了“社区活跃度指数”这样一个参数。从CY13-Q3开始,这个参数修改为如下几个参数的组合:

(1) 本季度帖子总数,代表相关讨论的规模;

(2) 本季度参与度,代表每个问题获得的回帖数量;

(3) 本季度活跃用户,代表从社区获得帮助的可能性(长期)。

在这个分析中,我们选择如上各个社区的平均值作为参考数据,并将每个社区的数据与参考数据进行比较。我们将每个社区各个参数与平均值的比值之和称为“社区活跃度指数”。可以认为,社区活跃度指数最高的项目,是最活跃的项目。

从图9 中可以看出,目前OpenStack项目的“社区活跃度指数”最高(以明显的优势领先),然后是CloudStack、OpenNebula、Eucalyptus。

12

曾经有多位读者建议我们基于Git活动对各个主流的开源IaaS项目的开发情况进行分析。我们注意到CloudStack、Eucalyptus、OpenNebula以及OpenStack项目都使用git进行版本管理。因此,我们基于来自git的日志数据对这几个项目的开发情况进行了一些简单的分析。需要指出的是,对于OpenStack项目来说,其数据源包括了托管在github.com上的openstack项目(包含57个子项目)和openstack-infra项目(包含33个子项目)。

在CY13-Q1报告中,我们使用了git log这个命令获取日志数据。从CY13-Q2起,我们将使用git log –no-merges这个命令获取日志数据。

值得一提的是,git是一个分布式的版本管理系统。使用git进行版本管理,开发人员通常都是在本地代码库上工作。当开发人员执行一次commit操作时,对应的代码改动只被记录在本地代码库中。除非时开发人员执行了push操作,这些代码改动不会被反映到主代码库中。很多开发人员倾向于在积累了一定数量的commit之后才进行push操作。因此,一些最近发生的commit操作不会被反映到我们的统计中来。根据我们的经验,上一个月的commit操作数量大概被低估了50%,而前一个月的commit操作数量大概被低估了20%。

13

图10所示分别是本文所述四个项目每个月进行提交(commit)操作的次数。总体来看,OpenStack项目提交代码的频率远远超过其他三个项目。这是由于OpenStack项目的数据源一共包含了90个子项目。CloudStack项目提交代码的频率也明显高于Eucalyptus和OpenNebula。与OpenNebula项目相比较,Eucalyptus项目提交代码的频率也不低,但是存在较大的波动情况,具有比较明显的批量更新的特征。OpenNebula项目提交代码的频率较低,平均每个月提交代码200次左右。

14

图11所示分别是OpenStack项目中各个子项目目每个月提交代码的次数。总体来看,Nova子项目提交代码的频率较高,是其他几个子项目的三倍左右。值得注意的是,尽管各个子项目提交代码的频率各不相同,但是其时程曲线基本上是一致的,波峰和波谷基本上出现在相同的时间。这个现象表明尽管OpenStack项目中各个子项目相对独立,但是具有相同或者相似的开发计划和开发进度。可以认为,OpenStack项目在子项目的管理和协调方面是做得比较好的。

15

图12所示分别是本文所述四个项目每个月提交代码的人数。总体来看,OpenStack项目提交代码的人数远远超过其他三个项目,并且一直保持迅猛增长的势头。CloudStack项目提交代码的人数也有所增长,但是其增长速度较为缓慢。Eucalyptus项目和OpenNebula项目提交代码的人数相对较少,并且在过去12个月当中基本上没有增长。

16

图13所示分别是OpenStack项目中各个子项目每个月提交代码的人数。总体来看,Nova子项目提交代码的人数较多,是其他几个子项目的三倍左右。

17

人们通常通过代码贡献者所使用的电子邮件地址来识别其所在的机构。尽管这种方式存在较大的缺陷(例如有一些机构鼓励雇员以个人的名义向开源项目贡献代码),但是还是可以从某种程度上揭示不同机构对某个开源项目的贡献力度。图14所示分别是每个月向本文所述四个项目提交代码(commit操作)的邮件地址所属域名数量。总体来看,OpenStack项目提交代码的域名数量远远超过其他三个项目,并且一直保持迅猛增长的势头。CloudStack项目提交代码的域名数量也有所增长,但是其增长速度较为缓慢。Eucalyptus项目和OpenNebula项目提交代码的域名数量相对较少,并且在过去12个月当中基本上没有增长。

18

图15所示分别是OpenStack项目中各个子项目每个月提交代码(commit操作)的域名数量。总体来看,Nova子项目提交代码的域名数量较多,是其他几个子项目的三倍左右。

下面这个表格以电子邮件所属域名的形式列出了在CY13-Q4期间向CloudStack、Eucalyptus、OpenNebula和OpenStack项目贡献代码次数最多的机构(以及贡献代码次数的百分比)。可以看出,Eucalyptus和OpenNebula属于以单一机构为主导的开源项目,而CloudStack和OpenStack属于由多家机构共同合作的开源项目。对于CloudStack项目来说,来自Citrix的影响依然非常明显,直接来自citrix.com和cloud.com的邮件地址占了41%(与CY13-Q3相比较降低了7%)。对于OpenStack项目来说,来自RedHat的贡献占了16%,来自IBM的贡献占了10%,来自Rackspace、Mirantis、HP、Suse的贡献各占了4%,来自eNovance的贡献各占了2%。值得一提的是,来自华为的贡献占了1%。

 CloudStack  Eucalyptus  OpenNebula  OpenStack
 Domain  %  Domain  %  Domain  %  Domain  %
 citrix.com  39  eucalyptus.com  77  opennebula.org  98  redhat.com  16
 gmail.com  20  gmail.com  21  cuesoft.eu  0.6  gmail.com  16
 apache.org  15  fedoraproject.org  1  ibm.com  10
 clogeny.com  6  openstack.org  8
 shubergphilis.com  5  rackspace.com  4
 leaseweb.com  3  mirantis.com  4
 cloud.com  2  hp.com  4
 netapp.com  1  suse.de  4
 betterservers.com  1  enovance.com  2
 cloudops.com  0.6  huawei.com  1

下面这个表格以电子邮件所属域名的形式列出了在CY13-Q4期间向OpenStack项目各个子项目贡献代码最多的机构(以及贡献代码次数的百分比)。

 Cinder  Glance  Horizon  Keystone
 Domain  %  Domain  %  Domain  %  Domain  %
 redhat.com  16  ibm.com  20  gmail.com  23  ibm.com Cialis Online  25
 huawei.com  13  gmail.com  15  redhat.com  12  dstanek.com  15
 gmail.com  11  enovance.com  10  hp.com  12  redhat.com  11
 openstack.org  9  mirantis.com  8  sheep.art.pl  10  gmail.com  7
 ibm.com  8  yahoo.com  7  da.jp.nec.com  6  metacloud.com  7
 solidfire.com  7  rackspace.com  7  intel.com  6  dreamhost.com  7
 netapp.com  4  dmllr.de  6  openstack.org  4  openstack.org  4
 hp.com  3  openstack.org  4  mirantis.com  3  huawei.com  3
 dmllr.de  2  mxa.nes.nec.co.jp  4  enovance.com  3  hp.com  2
 ebaysf.com  2  hp.com  3  ibm.com  1  ifca.unican.es  1

 

 Nova  Neutron  Swift
 Domain  %  Domain  %  Domain  %
 ibm.com  23  openstack.org  18  swiftstack.com  24
 redhat.com  23  gmail.com  17  gmail.com  19
 gmail.com  11  mirantis.com  8  redhat.com  19
 rackspace.com  4  nicira.com  7  not.mn  7
 vmware.com  4  redhat.com  7  enovance.com  5
 hp.com  3  ibm.com  4  brim.net  4
 intel.com  3  unitedstack.com  4  kotori.zaitcev.us  3
 openstack.org  2  da.jp.nec.com  3  hgst.com  2
 stillhq.com  2  cisco.com  3  rackspace.com  2
 codestud.com  1  enovance.com  2  weirdlooking.com  1  ————————-

19

累计开发者人口指的是曾经向某个项目提交过代码的开发者总数。图16所示为这四个项目的开发者人口增长趋势。可以看出,OpenStack项目的累计开发者人口最大,是第二名CloudStack的10倍左右。

我们还计算了上个季度活跃的开发者与累计开发者人口之比。分别是OpenStack 37.1%,CloudStack 35.4%,OpenNebula 25.6%,Eucalyptus 22.7%。

20

累计贡献机构数量指的是曾经向某个项目提交过代码的机构数量。图16所示为这四个项目的累计贡献机构数量增长趋势。可以看出,OpenStack项目的累计贡献机构数量最多,是CloudStack和Eucalyptus的5倍左右。OpenNebula的累计贡献机构数量相对较少。

我们还计算了上个季度活跃的贡献机构与累计贡献机构数量之比。分别是OpenStack 32.6%,CloudStack 26.2%,OpenNebula 24.0%,Eucalyptus 3.6%。

与本文相关的PDF版本幻灯片可以从这里下载。如果您需要重新分发本文内容,敬请您保留相关作者信息。

(3个打分, 平均:4.33 / 5)

雁过留声

“CY13-Q4 OpenStack, OpenNebulaEucalyptusCloudStack”有1个回复

  1. cdtits 于 2014-01-03 5:13 上午

    这些能说明啥问题呢?不明觉厉

    参与者众多,表明该软件的功能还不能满足用户需求,或者是功能存在很多bug么?