加载中…
个人资料
plstryagain
plstryagain
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,577
  • 关注人气:9
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

什么是Apache Incubator 以及 Apache CXF的前世今生

(2012-04-08 11:11:42)
分类: 杂谈
     2011年中, Oracle将著名的办公软件OpenOffice贡献到Apache社区, 此时, OpenOffice已经是一款很成熟的软件了, 但是根据Apache的相关规则, OpenOffice不能立即成为一个顶级项目(TLP, top level project), 必须在incubator(孵化器)中按照Apache的规则孵化, 以确保任何进入Apache的项目都严格按照Apache的方式来发展。
    
    本文应@程开源之约, 以Apache CXF为具体实例, 想和大家聊聊Apache Incubator的基本作用, 规则。本文作者@Freeman小屋作为ObjectWeb Celtix的commiter, 亲身经历了Celtix和Codehaus 的Xfire合并, 进入Apache Incubator, 并且在两年之后成功孵化, 成为了现在的Apache CXF。 通过和大家分享这一过程, 从中, 读者可以了解Apache以社区为中心的运行规则。
 
    任何Apache项目都必须先在Incubator中进行孵化, 无论这个项目在Apache社区里面从零开始也好, 还是来自一个大厂商的成熟产品, 都必须始于Incubator. 其实很多Apache的项目都来自于商业公司的产品, 这也保证了Apache的项目通常有较高的起点和成熟度。
     
    回到CXF, CXF源于ObjectWeb社区的CeltixCodehaus社区的Xfire。 简单的讲, Celtix和Xfire都是soap协议桟的的实现, Celtix的长处在于灵活的架构, 你可以很容易的扩展transport(http or jms...), databinding(jaxb, xmlbeans, aegis, jibx...), binding(soap, xml, corba, http...); Xfire的长处在于优良的性能(由于大量使用Stax API读写XML)和广大的用户群体。 在2006年的年中, 这两个社区决定合并成为一个新的项目,吸取对方的长处,  并且将新项目移到Apache社区中, 这就是现在Apache Top Level Project CXF的由来。

     前面说过, 任何项目进入Apache都要在Incubator中孵化, 这确保了进入Apache的项目按照Apache的方式运行, 社区驱动和主导, 更重要的是不会被任何一家商业公司控制。因此, 进入Incubator和项目的成熟度没有关系, 这是Apache项目的必经之路。
     
     说道Incubator, 必须要提Apache下一个特殊的顶级项目Apache Incubator,  和其他具体的Apache顶级项目不同, Apache Incubator是专门用来帮助项目进入孵化器及管理孵化器中未毕业的项目的。与其他TLP(Top level Project)相同的是, Apache Incubator也有自己的PMC(项目管理委员会), 了解了Apache Incubator PMC, 我们要引入Sponsor和mentor的概念。

      任何一个孵化器的项目, 都要在Apache中找到一个实体作为自己的Sponsor, 这个 Sponsor可以是一个具体的Apache TLP, 例如Apache Camel在从孵化器毕业之前的Sponsor就是Apache Activemq。 前面提到的Apache Incubator PMC也可以作为Sponsor, CXF就选择Incubator PMC作为自己的Sponsor。 通常新项目选择Incubator PMC作为自己的Sponsor是正确的, 除非有其它的TLP认为新项目和自己相关并且愿意成为Sponsor。
    
      Sponsor会选择合适的人选(一般三个)作为孵化器中项目的mentor, mentor必须都是Apache Incubator PMC member, mentor负责指导孵化器中项目, 确保孵化器中项目按照Apache的方式运行, 直至顺利毕业。
  
      下面讲Incubator项目中的committer。 任何进入孵化器的项目都可以指定一批committer, 这些committer被称之为该项目的initial committer。Apache CXF的initial committer主要是由原来Xfire和Celtix的committer组成(开源社区就是这样, 你的任何贡献都不会被遗忘)。 我作为ObjectWeb Celtix的committer之一, 顺利成章的成为了Apache CXF的committer, 并且在CXF毕业成为TLP之后也成为了Apache CXF PMC member。这是我第一个Apache项目committer身份, 标志着我Apache社区生涯的开始。
     
      下面有几个有用的链接。
      1.  Apache Incubator各个角色和责任   我并没有把incubator的所有角色都覆盖, 只是讲了主要的, 大家有兴趣可以详读这个链接。
      2. CXF进入Apache Incubator的proposal 这个里面有initial committer和mentor的名单。 细心的读者一定能发现committer中有几个中国人的名字, 没错, 他们都来自曾经的IONA中国研发中心,他们都是我的好同事, 他们现在在IBM, Redhat, Ebay, Progress/FuseSource 。。。, 有的已经远离了CXF的开发, 有的还继续为CXF做贡献, 但是他们都在CXF上印下了自己的名字, again, 开源社区就是这样, 你的任何贡献都不会被遗忘。 中国人在Apache committer中占得比例非常小, 也希望国内更多的开源爱好者投入Apache社区, 成为Apache committer。
      3. CXF Incubator大事记  从这个里面可以看到, 经过将近两年的开发, CXF顺利毕业, 成为TLP的一个顶级项目。
      4. 百度百科对Apache CXF的解释 今天才发现有这个, 谁整的?感谢, 不过不是很准确, 例如“CXF 框架支撑环境”不正确, CXF的运行不一定要部署到Servlet容器中, standalone也是很常见的模式。
      5. 毕业的条件和毕业的过程

      最初的Proposal里面CXF的名字还是CeltiXfire, 简单的Celtix和Xfire的合并, 使得用户一下就能知道这个项目的渊源。 后来社区觉得这个名字有些长,不是很醒目, 经过反复讨论和投票, 最终定了CXF这个名字, 你可以看成是Celtixfire的简写。
 
   
     最后想说, Apache CXF作为但不限于JAXWS协议的一个实现, 得到了很广泛的应用。 多个JEE server例如Apache Geronimo, JOnAS, Pramati, JBoss都选择CXF作为自己的JAXWS实现(要通过JEE5认证需要有JAXWS)。 在其它的多个Apache项目中也实现了对CXF的集成, 例如Apache Servicemix中的Servicemix-cxf-bc/se component, Apache Camel中的camel-cxf component, 由于webservice在集成中的重要作用, 这些组件都得到了广泛的使用。虽然CXF进入Apache有将近六年的时间, 但是开发依然很活跃, 邮件列表依然很活跃, 下一个大的版本2.6即将发布。 在社区的共同努力下, Apache CXF必然拥有更美好的明天。

  

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有