本文是对《 CY12-Q2 OpenStack, OpenNebula,Eucalyptus,CloudStack社区活跃度比较》一文的补充和更新。对本文内容感兴趣的读者,可以通过电子邮件或者新浪微博(@qyjohn_)与我联系。
本文同时发布了一个英文版本,可以参见 CY12-Q3 Community Analysis — OpenStack vs OpenNebula vs Eucalyptus vs CloudStack这个帖子。
本文的目的是通过论坛和邮件列表的原始数据对OpenStack、OpenNebula、Eucalyptus和CloudStack项目的社区活跃度进 行分析和比较。主要的原始数据是自2009年来这四个项目的官方论坛和邮件列表每个月所产生的讨论主题数、帖子数、以及参与讨论的总人数(邮件地址或者用 户账号)。为了获取这些数据,我写了一个Java程 序自动地从这四个项目的网站下载了所有的论坛和邮件列表信息,并且从这些信息中分析提取出我所需要的数据。程序提取的数据被导入MySQL数据库中以便进 行统计分析,统计分析的结果通过LibreOffice生成分析图表。
在CY12-Q3的分析中,我们增加了长期被忽视的数据源https://answers.launchpad.net/openstack。这个数据源的数据量很大,对分析结果有较大的影响。
此外,我们发布CY12-Q2分析报告之后,有些读者指出来自incubator-cloudstack-dev邮件列表的数据可能有些问题。这个邮件列表里包含了一些由JIRA自动生成的邮件内容。在CY12-Q3的分析中,我们设置了一个过滤器,自动地排除了所有标题中含有”[jira]“标识符的信息。
图1 和图2分别是如上所述四个项目每个月所产生的讨论主题数和帖子数。可以看出:
(1) 与OpenStack和CloudStack相关的讨论数量远大于与Eucalyptus和OpenNebula相关的讨论数量;
(2) 在过去三个月中,与CloudStack相关的讨论数量要稍大于与OpenStack相关的讨论数量;
(3) 在过去三个月中,与Eucalyptus和OpenNebula相关的讨论数量在同等水平上,只有非常细微的差别。
通常来讲,一个讨论主题得到的回复数越多,表明该主题的讨论越深入。一个论坛或者邮件列表如果只有主帖而没有回复,说明这个社区的参与程度很低。因此,平 均意义上的“讨论帖子数/讨论主题数”则反映了一个社区的参与程度,这里我们暂且称之为参与度(Participation Ratio)。
长期以来,OpenStack项目的参与度远高于其他三个项目的参与度。但是在过去六个月中,其参与度正在逐步降低。另一方面,CloudStack项目的参与度正在稳步增长。目前CloudStack项目的参与度最高,接近于4;OpenStack与Eucalyptus项目的参与度次之,接近于3;OpenNebula项目的参与度最低,稍大于2。
换句话说,如果用户或者开发人员遇到问题的时候,从CloudStack社区获得帮助的概率要稍大一点。
图4 所示为这四个项目每个月参与论坛或者邮件列表讨论的总人数。可以看出,CloudStack与OpenStack的活跃用户数量要远大于OpenNebula和Eucalyptus。但是,在过去三个月中,CloudStack与OpenStack的活跃用户数量均有一定程度的下降。
值得一提的是,虽然CloudStack的活跃用户数量稍微小于OpenStack,这两个项目的主题和帖子数量是基本相当的。换句话说,CloudStack的用户在社区中比OpenStack的用户更加活跃。
累计社区人口(简称社区人口)指的是曾经通过论坛或者邮件列表参与过讨论的用户和开发者总数。(不包括在论坛或者邮件列表中注册但是从未公开参与讨论的社 区成员。)这些人或多或少地使用过相关产品,但是并不代表他们目前还是活跃用户。
图5 所示为这四个项目的社区人口增长趋势。Eucalyptus的社区人口依然领先,但是OpenStack正在迎头赶上。在CY12-Q2报告总,我们预测CloudStack的社区人口很快将超过OpenNebula。事实上,CloudStack仅仅花了一个月时间就实现了这个目标。
如果我们比较一下CY12-Q3与CY12-Q2报告,就会发现OpenStack的社区人口增长曲线发生了较大的变化。这是因为我们增加了https://answers.launchpad.net/openstack作为数据源。这个数据源的数据量很大,因此对分析结果有较大的影响。需要注意的是,虽然launchpad answers与OpenStack邮件列表共享一个用户数据库,但是所显示的用户名是不一样的。因此,相当部分的OpenStack用户可能被数了两遍。在我们整理数据的时候,已经采取了一些初步的措施以消除重复,但是还有较大的优化空间。一个粗略的估计是OpenStack社区的实际人口应该是上图所示数字的85%左右。
CloudStack与Eucalyptus的社区人口数据可能也存在一定程度的重复计数。我们对原始数据进行了检查,并且确实发现了一些重复计数的例子。但是,这两个项目重复计数的程度都比较低,对分析结果不产生明显的影响。
图6 所示为这四个项目每个月新增加的社区人口数量。在过去三个月中,CloudStack与OpenStack的社区人口增长速度基本相当。
与CloudStack和OpenStack向比较,Eucalyptus和OpenNebula的社区人口增长较为缓慢。
图7 是图4 与图6的重新组合。其中,实线部分表示的是每个月参与论坛或者邮件列表讨论的人数,虚线部分表示的是每个月新加入论坛或者邮件列表的人数。
OpenStack与OpenNebula项目的新增人口占当月活跃用户的30%左右,CloudStack与Eucalyptus项目大概是50%。如 果不考虑社区人口的规模的话,可以认为OpenStack与OpenNebula项目的粘性大于CloudStack与Eucalyptus项目。
对于任何一个项目,社区人口增长速度与当月活跃用户数量基本上是同步的。也就是说,社区人口增长速度与社区活跃程度之间存在某种程度的正相关。这也意味着社区人口增长以及社区活跃程度可能是事件驱动的。一个新版本的发布,一次技术会议,或者是一场市场活动,都可能是促进社区人口增长和提高社区活跃程度的原因。
图8 所示分别是本文所述四个项目的社区人口,过去一个季度的活跃用户数量,以及过去一个月的活跃用户数量。可以看出:
(1) Eucalyptus的社区人口最多,然后是OpenStack、CloudStack、OpenNebula;
(2) 在过去一个季度中,OpenStack的活跃人口最多,然后是CloudStack、Eucalyptus、OpenNebula;
(3) 在过去一个月份中,OpenStack的活跃人口最多,然后是CloudStack、Eucalyptus、OpenNebula。
我时不时地会听到这样的说法:“亲你的话也忒多了吧。能不能直接告诉我这个领域哪个项目最活跃呢?”我同意这是一个非常重要的问题。我想还有很多人想问同样的问题。我猜他们之所以没有问我是因为他们知道我不知道问题的答案。
我一直在寻找一个参数来表示社区的相对活跃程度。这个参数应该是如下几个参数的某种组合:
(1) 当月帖子总数,代表相关讨论的规模;
(2) 当月参与度,代表每个问题获得的回帖数量;
(3) 当季活跃用户,代表从社区获得帮助的可能性(长期);
(4) 当月活跃用户,代表从社区获得帮助的可能性(短期)。
在这个分析中,我们选择如上各个社区的平均值作为参考数据,并将每个社区的数据与参考数据进行比较。我们将每个社区各个参数与平均值的比值之和称为“社区活跃度指数”。可以认为,社区活跃度指数最高的项目,是最活跃的项目。
从图9 中可以看出,目前CloudStack项目的“社区活跃度指数”最高(仅仅以微弱的优势领先),然后是OpenStack、Eucalyptus、 OpenNebula。
如上所述“社区活跃度指数”的概念还非常原始,还有很大的优化空间。它有点在于用量化分析的方法取代了传统的感性分析,例如“我认为”、“我相信”、“我猜测”等等。在未来的报告中,我们将基于这个概念每个季度发布一次OpenStack、OpenNebula、 Eucalyptus、CloudStack项目的“社区活跃度指数”排名。当然,我们也会在必要的时候对相关算法进行调整,例如增加或者删除某些参数,或者是调整某些参数的权重。
对于很多云计算从业人员来说,CloudStack项目在过去6 个月中的快速崛起令人惊讶。因此,我们通过电子邮件采访了Citrix公司云计算平台的CTO梁胜。梁胜对于CloudStack项目在社区方面所取得的成功解释如下:
“Apache CloudStack项目的繁荣应该归功于Apache软件基金会,因为我们无需浪费精力去创造新的开源项目管理模式。我们的社区正在快速成长,目前已经拥有超过35000位成员。从来自社区的贡献来看,开发人员对Apache模式是认可的。我们很高兴地看到,其他技术提供商以及开源项目正在与Apache CloudStack结合在一起。Apache CloudStack项目的领导权也已经从Citrix转移到一系列更有紧迫感的个人Committer那里。即将发布的4.0版本是以Apache授权协议发布的第一个主要版本,包含了大量社区用户在真实的云计算生产环境中开发出来的功能。值得一提的是我们看到CloudStack正在被各种不同的行业所接受,包括银行机构、游戏公司和大学(我们了解到在上帝粒子相关的研究中使用了一个CloudStack集群来进行数据分析)。在短短的6 个月当中,CloudStack项目取得了令人惊讶的进步,我相信这个势头一定会继续下去。”
对于最终用户来说,厂商之间的竞争意味着更多的选择和更好的功能。云计算市场正在发展当中,远远还没有达到成熟的程度。可以预见,未来这个领域的竞争还会更加激烈。