向各位朋友求援

By , July 23, 2014 7:32 pm

经过再三考虑,我决定向各位认识或者不认识的朋友求援一下了。

就在前几天,41年来华南最强的台风“威马逊”在我的家乡海南文昌登陆。台风中心经过的翁田镇,农村的房子几乎全部倒塌,家禽牲畜全部死亡、农作物全部毁灭,通电和恢复正常生活生产遥遥无期… …我有一位高中同班同学,她的老家就在翁田镇龙头村,是受灾最严重的一个乡村之一。这位同学的父亲是当地的教师。村里有不少考上了中学或大学的贫困生,遭此灾难后,家里已经拿不出钱给他们在新学期当学费和生活费。还有一些生活艰苦的老人,他们在这次天灾中失去了房子和全部农作物,对生活陷入了绝望… …

为了帮助受灾的乡亲们渡过难关,我的同学们一起商量,打算为乡亲们筹集一些善款。善款的一部分用来支付贫困学生下一个学期的学费和生活费,剩下的部分用来照顾受灾的老人。我和同学们会确保这些善款及时、足额地交到孩子和老人的手中。

如果你愿意为我的乡亲们提供一点帮助,请将捐款汇到如下几个账户。无论金额多少,对于孩子和老人们来说都是莫大的帮助。我们会将善款直接交到孩子和老人手里,并及时公布捐款的详细数额和发放情况。为了便于我们统计帐目,请您汇款后用手机短信通知我们一下。

户名:陈庆晓
帐号:6222022002005303585
开户行:工商银行珠海迎宾支行
手机号码:13928003269

户名:陈美文
帐号:6226621105036956
开户行:中国光大银行海口海甸支行
手机号码:15120798161

支付宝账户:7559902@qq.com
户名:黄小花
手机号码:13876360625

谨代的家乡的孩子和老人谢谢各位好人!

 

13.pic_hd

12.pic

10.pic

台风中心经过的翁田镇,农村的房子几乎全部倒塌。说这些孩子和老人上无片瓦下无立锥之地,真的是一点都不过分。

几本书

By , July 19, 2014 3:31 pm

s1556748

刚到悉尼的时候,一口气读完的。

s3628415

大概是一个月前的某天晚上一口气读完的,结果好长时间都睡不着。

AK0082

这两个星期断断续续地读,每天晚上临睡前读那么三五章。昨天晚上读完的。

Multi Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2

By , June 24, 2014 8:24 pm

Recently I need to do some experiments with the Montage astronomical image mosaic engine, using Pegasus as the workflow management system. This involves setting up a condor cluster and Pegasus on the submit host, and several other steps to run Montage in such an environment. After extensive search on the Internet, I find out that there exists no good documentation on how to accomplish this complicate task with my favorite Linux distribution – Ubuntu 12.04. I decide write a tutorial on this topic, in the hope that it might save someone else’s time in the future.

This tutorial includes the following three parts:

Single Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2
Multi Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2
Running Montage with Pegasus on AWS EC2

In the previous tutorial we have setup a single node Condor cluster with Pegasus. Now we will expand the Condor clutter to include multiple worker nodes. Keep the previous EC2 instance running, and we will call this instance the Master Node. The other Condor nodes will receive tasks from the Master Node, so we will call them Worker Nodes.

In this tutorial, we will show how to add one Worker Node to the cluster.

[STEP 1: Updating Security Group Settings]

The Master Node and the Worker Node should be able to communicate with each other. The easiest way to achieve this is to run both the Master Node and the Worker Node in the same VPC, and use the same security group for both the Master Node and the Worker Node . Edit the inbound rules of the security group, add a rule to allow all traffic from within the security group.

[STEP 2: Install Condor]

Similar to the previous tutorial, download the latest version of HTCondor (native package) for Ubuntu 12.04 from the following URL. What I have downloaded is condor-8.1.6-247684-ubuntu_12.04_amd64.deb. The actual filename might change over time.

http://research.cs.wisc.edu/htcondor/downloads/

Install Condor using the following commands:

$ sudo dpkg -i condor-8.1.6-247684-ubuntu_12.04_amd64.deb
$ sudo apt-get update
$ sudo apt-get install -f
$ sudo apt-get install chkconfig
$ sudo chkconfig condor on
$ sudo service condor start

Now we should have Condor up and running, and it should be automatically started when the system boots. Check into the status of Condor using the following commands:

$ condor_status
Name               OpSys      Arch   State     Activity LoadAv Mem   ActvtyTime

slot1@ip-10-0-5-11 LINUX      X86_64 Unclaimed Benchmar  0.060 1862  0+00:00:04
slot2@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:05
slot3@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:06
slot4@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:07
                     Total Owner Claimed Unclaimed Matched Preempting Backfill

        X86_64/LINUX     4     0       0         4       0          0        0

               Total     4     0       0         4       0          0        0

$ condor_q


-- Submitter: ip-10-0-5-114.ec2.internal :  : ip-10-0-5-114.ec2.internal
 ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD               

0 jobs; 0 completed, 0 removed, 0 idle, 0 running, 0 held, 0 suspended

[STEP 3: Config Condor Master Node]

Use a text editor to open /etc/condor/condor_config, and add the following line to the end of the file:

ALLOW_WRITE = *

Then restart Condor with the following command:

$ sudo service condor restart

Also, find the IP address of the Master Node with the following command, you will need it to config the Worker Node.

[STEP 4: Config Condor Worker Node]

Now we go ahead to config the Worker Node. Use a text editor to open /etc/condor/condor_config.local, find the following line

CONDOR_HOST = $(FULL_HOSTNAME)

and update it with the IP address of the Master Node. Assuming that the IP address of the Master Node is 192.168.1.1, then this line should look like the following

CONDOR_HOST = 192.168.1.1

Then restart Condor using the following command:

$ sudo service condor restart

Now on both the Master Node and the Worker Node, we will be able to see both nodes. In the following example, both the Master Node and the Worker Node are c3.xlarge instances. Each of the c3.xlarge instance have 4 vCPU’s, so we are seeing 8 slots in the cluster.

$ condor_status
Name               OpSys      Arch   State     Activity LoadAv Mem   ActvtyTime

slot1@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:04:36
slot2@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:05
slot3@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:06
slot4@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:07
slot1@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.040 1862  0+00:04:36
slot2@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:05
slot3@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:06
slot4@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:05:07
                     Total Owner Claimed Unclaimed Matched Preempting Backfill

        X86_64/LINUX     8     0       0         8       0          0        0

               Total     8     0       0         8       0          0        0

[STEP 5: Add More Worker Nodes]

To add more Worker Nodes, you can create an AMI out of the first Worker Node, than launch as many Worker Nodes as needed. Since the AMI has the above-mentioned configurations, they should be automatically added to the cluster when they are in running state.

Single Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2

By , June 24, 2014 6:46 pm

Recently I need to do some experiments with the Montage astronomical image mosaic engine, using Pegasus as the workflow management system. This involves setting up a condor cluster and Pegasus on the submit host, and several other steps to run Montage in such an environment. After extensive search on the Internet, I find out that there exists no good documentation on how to accomplish this complicate task with my favorite Linux distribution – Ubuntu 12.04. I decide write a tutorial on this topic, in the hope that it might save someone else’s time in the future.

This tutorial includes the following three parts:

Single Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2
Multi Node Condor and Pegasus on Ubuntu 12.04 on AWS EC2
Running Montage with Pegasus on AWS EC2

[STEP 1: Create an EC2 Instance for the Master Host]

Create an EC2 instance with a Ubuntu 12.04 AMI. For testing purposes you might wish to take advantage of the spot instance to save money. Use one of the compute optimized (C3) instance types so that you will see multiple Condor slots with a single EC2 instance. In this document I use c3.xlarge, which has 4 vCPU’s.

For a single node setup, all you need to do with the security group setting is open up port 22 to your IP address so that you can SSH to the instance when it is up.

When the instance is up and running, SSH to the instance.

ssh -i yourkey.pem ubuntu@ip_of_the_instance

[STEP 2: Install Condor]

Download the latest version of HTCondor (native package) for Ubuntu 12.04 from the following URL. What I have downloaded is condor-8.1.6-247684-ubuntu_12.04_amd64.deb. The actual filename might change over time.

http://research.cs.wisc.edu/htcondor/downloads/

Install Condor using the following commands:

$ sudo dpkg -i condor-8.1.6-247684-ubuntu_12.04_amd64.deb
$ sudo apt-get update
$ sudo apt-get install -f
$ sudo apt-get install chkconfig
$ sudo chkconfig condor on
$ sudo service condor start

Now we should have Condor up and running, and it should be automatically started when the system boots. Check into the status of Condor using the following commands:

$ condor_status
Name               OpSys      Arch   State     Activity LoadAv Mem   ActvtyTime

slot1@ip-10-0-5-11 LINUX      X86_64 Unclaimed Benchmar  0.060 1862  0+00:00:04
slot2@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:05
slot3@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:06
slot4@ip-10-0-5-11 LINUX      X86_64 Unclaimed Idle      0.000 1862  0+00:00:07
                     Total Owner Claimed Unclaimed Matched Preempting Backfill

        X86_64/LINUX     4     0       0         4       0          0        0

               Total     4     0       0         4       0          0        0
$ condor_q


-- Submitter: ip-10-0-5-114.ec2.internal :  : ip-10-0-5-114.ec2.internal
 ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD               

0 jobs; 0 completed, 0 removed, 0 idle, 0 running, 0 held, 0 suspended

[STEP 3: Install Pegasus]

Pegasus needs Java (1.6 or higher) and Python (2.4 or higher). Ubuntu 12.04 comes with Python 2.7 but not Java, so we will need to install Java first. Optionally Pegasus also needs Globus for grid support, we will take care of Globus later.

$ sudo apt-get install openjdk-7-jdk

Then we config the Pegasus repository and install Pegasus.

$ gpg --keyserver pgp.mit.edu --recv-keys 81C2A4AC
$ gpg -a --export 81C2A4AC | sudo apt-key add -  

All the following line into /etc/apt/source.list:

deb http://download.pegasus.isi.edu/wms/download/debian wheezy main

Update the repository and install Pegasus:

$ sudo apt-get update
$ sudo apt-get install pegasus

Now we should have Pegasus installed on the system. Check the installation with the following command. If you see similar output, congratulations!

$ pegasus-status
(no matching jobs found in Condor Q)

Pegasus comes with some examples, we will use these example to test the installation further.

$ cd ~
$ cp -r /usr/share/pegasus/examples .
$ cd examples/hello-world
$ ls
dax-generator.py  hello.sh  pegasusrc  submit  world.sh

Run the hello-world example:

$ ./submit 
2014.06.24 10:34:00.455 UTC:   Submitting job(s). 
2014.06.24 10:34:00.460 UTC:   1 job(s) submitted to cluster 1. 
2014.06.24 10:34:00.465 UTC:    
2014.06.24 10:34:00.471 UTC:   ----------------------------------------------------------------------- 
2014.06.24 10:34:00.476 UTC:   File for submitting this DAG to Condor           : hello_world-0.dag.condor.sub 
2014.06.24 10:34:00.481 UTC:   Log of DAGMan debugging messages                 : hello_world-0.dag.dagman.out 
2014.06.24 10:34:00.487 UTC:   Log of Condor library output                     : hello_world-0.dag.lib.out 
2014.06.24 10:34:00.492 UTC:   Log of Condor library error messages             : hello_world-0.dag.lib.err 
2014.06.24 10:34:00.497 UTC:   Log of the life of condor_dagman itself          : hello_world-0.dag.dagman.log 
2014.06.24 10:34:00.503 UTC:    
2014.06.24 10:34:00.508 UTC:   ----------------------------------------------------------------------- 
2014.06.24 10:34:00.513 UTC:    
2014.06.24 10:34:00.519 UTC:   Your workflow has been started and is running in the base directory: 
2014.06.24 10:34:00.524 UTC:    
2014.06.24 10:34:00.530 UTC:     /home/ubuntu/examples/hello-world/work/ubuntu/pegasus/hello_world/20140624T103359+0000 
2014.06.24 10:34:00.535 UTC:    
2014.06.24 10:34:00.540 UTC:   *** To monitor the workflow you can run *** 
2014.06.24 10:34:00.546 UTC:    
2014.06.24 10:34:00.551 UTC:     pegasus-status -l /home/ubuntu/examples/hello-world/work/ubuntu/pegasus/hello_world/20140624T103359+0000 
2014.06.24 10:34:00.556 UTC:    
2014.06.24 10:34:00.562 UTC:   *** To remove your workflow run *** 
2014.06.24 10:34:00.567 UTC:    
2014.06.24 10:34:00.572 UTC:     pegasus-remove /home/ubuntu/examples/hello-world/work/ubuntu/pegasus/hello_world/20140624T103359+0000 
2014.06.24 10:34:00.578 UTC:    
2014.06.24 10:34:01.024 UTC:   Time taken to execute is 1.109 seconds
Check the status of the Pegasus jobs and Condor queue using the pegasus-statua and condor_q commands:
$ pegasus-status
STAT  IN_STATE  JOB                                               
Run      01:05  hello_world-0                                     
Summary: 1 Condor job total (R:1)

$ condor_q


-- Submitter: ip-10-0-5-114.ec2.internal :  : ip-10-0-5-114.ec2.internal
 ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD               
   1.0   ubuntu          6/24 10:34   0+00:01:28 R  0   0.0  pegasus-dagman -f 

1 jobs; 0 completed, 0 removed, 0 idle, 1 running, 0 held, 0 suspended

After the hello-world workflow have been executed, a trace file (jobstat.log) can be found in the working directory. Workflow related information is hidden several sub-directories deep. In my case the directory is ~/examples/hello-world/work/ubuntu/pegasus/hello_world/20140624T103359+0000. Please note that the last sub-directory is a timestamp, depending on the time you submit the workflow.

As a bonus of this tutorial, I have prepared an AMI with the above-mentioned setup, and make the AMI publicly available to the community. If all you need is a single node Pegasus + Condor configuration, you don’t need to repeat any of the above-mentioned steps. All you need to do is to launch an EC2 instance with AMI ami-5ee01b36 in the US-EAST-1 (N. Virginia) region. If you need to run this in other regions, copy the AMI to the desired region and launch an instance with the copied AMI in that region.

CY14-Q1 OpenStack, OpenNebula,Eucalyptus,CloudStack社区活跃度比较

By , April 14, 2014 4:19 pm

01

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

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

Eucalyptus在本季度终止了面向用户的在线论坛(Engage),并将所有与用户相关的讨论引导到google group。这个举措对其用户讨论有较大的影响。

这个社区活跃度比较项目起源于CY11-Q4,此篇报告是到目前为止已经发布的第十个季度性的报告。本文中所表达之观点完全是作者本人的观点,而非作者目前或以前所在公司的观点。

02

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

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

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

03

01

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

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

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

01

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

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

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

01

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

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

01

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

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

01

曾经有多位读者建议我们基于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%。

01

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

01

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

01

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

01

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

01

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

01

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

下面这个表格以电子邮件所属域名的形式列出了在CY14-Q1期间向CloudStack、Eucalyptus、OpenNebula和OpenStack项目贡献代码次数最多的机构(以及贡献代码次数的百分比)。可以看出,Eucalyptus和OpenNebula属于以单一机构为主导的开源项目,而CloudStack和OpenStack属于由多家机构共同合作的开源项目。对于CloudStack项目来说,来自Citrix的影响依然非常明显,直接来自citrix.com和cloud.com的邮件地址占了44%(与CY13-Q4相比较上升了3%)。对于OpenStack项目来说,来自RedHat的贡献占了15%,来自IBM的贡献占了11%,随后分别十Mirantis (5%)、Rackspace (4%)、HP (4%)、Suse (3%)、Enovance (2%)和Huawei (1%)。

 CloudStack  Eucalyptus  OpenNebula  OpenStack
 Domain  %  Domain  %  Domain  %  Domain  %
 citrix.com  40  eucalyptus.com  80  opennebula.org  92  redhat.com  15
 gmail.com  19  gmail.com  19  c12g.com  5  gmail.com  15
 apache.org  13  fedoraproject.org  1  cuesoft.eu  1  ibm.com  11
 clogeny.com  5  openstack.org  7
 shubergphilis.com  5  mirantis.com  5
 cloud.com  4  rackspace.com  4
 leaseweb.com  3  hp.com  4
 netapp.com  1  suse.de  3
 betterservers.com  1  enovance.com  2
 cloudops.com  0.6  huawei.com  1

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

 Cinder  Glance  Horizon  Keystone
 Domain  %  Domain  %  Domain  %  Domain  %
 redhat.com  16  ibm.com  20  gmail.com  23  ibm.com  27
 huawei.com  12  gmail.com  13  redhat.com  11  dstanek.com  12
 gmail.com  12  enovance.com  9  hp.com  11  redhat.com  10
 ibm.com  9  mirantis.com  7  sheep.art.pl  10  metacloud.com  8
 openstack.org  8  rackspace.com  7  intel.com  7  gmail.com  7
 solidfire.com  7  huawei.com  6  da.jp.nec.com  5  dreamhost.com  5
 netapp.com  4  dmllr.de  5  mirantis.org  4  openstack.org  3
 hp.com  4  yahoo.com  5  openstack.org  3  huawei.com  3
 ebaysf.com  2  hp.com  3  enovance.com  3  hp.com  2
 dmllr.de  2  openstack.org  2  cloudwatt.com  2  mirantis.com  2

 

 Nova  Neutron  Swift
 Domain  %  Domain  %  Domain  %
 ibm.com  21  gmail.com  17  swiftstack.com  25
 redhat.com  20  openstack.org  14  redhat.com  18
 gmail.com  11  mirantis.com  10  gmail.com  17
 vmware.com  6  nicira.com  6  enovance.com  8
 rackspace.com  5  redhat.com  5  not.mn  6
 hp.com  4  ibm.com  4  brim.net  4
 intel.com  3  da.jp.nec.com  4  kotori.zaitcev.us  3
 huawei.com  2  cisco.com  3  rackspace.com  2
 stillhq.com  2  unitedstack.com  3  hgst.com  2
 openstack.org  2  hp.com  2  intel.com  1  -

01

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

01

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

与本文相关的PDF版本幻灯片可以从<http://www.qyjohn.net/wp-content/uploads/2014/04/CY14-Q1-IaaS-Community-Analysis.pdf”>这里下载。如果您需要重新分发本文内容,敬请您保留相关作者信息。

Panorama Theme by Themocracy