You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@incubator.apache.org by Apache Wiki <wi...@apache.org> on 2018/01/15 08:55:30 UTC

[Incubator Wiki] Update of "DubboProposal" by HuxingZhang

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "DubboProposal" page has been changed by HuxingZhang:
https://wiki.apache.org/incubator/DubboProposal

New page:
= Dubbo Proposal =

== Abstract ==

Dubbo is a high-performance, lightweight, java based RPC framework open-sourced by Alibaba. As in many RPC systems, Dubbo is based around the idea of defining a service, specifying the methods that can be called remotely with their parameters and return types. On the server side, the server implements this interface and runs a Dubbo server to handle client calls. On the client side, the client has a stub that provides the same methods as the server.

== Proposal ==

Dubbo has a fairly huge community today, and is widely adopted by many companies and organizations, but unfortunately most of them are in China. We believe running Dubbo in Apache Software Foundation can facilitate development of a stronger and more diverse community.

Alibaba submits this proposal to donate Dubbo's source code and its side projects to the Apache Software Foundation under the Apache License Version 2.0.  Dubbo source code and its side projects are hosted on github right now:

 * Dubbo code base: https://github.com/alibaba/dubbo
 * Web site: https://github.com/dubbo/dubbo.github.io
 * Documentations: [[http://dubbo.io/books/dubbo-user-book-en|User Guide]], [[http://dubbo.io/books/dubbo-dev-book-en|Development Guide]], [[http://dubbo.io/books/dubbo-admin-book-en|Admin Manual]]
 * Other side projects hosted under [[https://github.com/dubbo|dubbo group]]

== Background ==

Dubbo was developed at Alibaba in 2011 and has been widely used in many production lines there since then. Dubbo offers three key features, which include interface based remote call, fault tolerance & load balancing, and automatic service registration & discovery. Since Dubbo is open-sourced on github, it's been received up to 15k stars, and has been forked for more than 10k times. Besides being widely adopted inside Alibaba, Dubbo is also used in approximately 80% of internet companies in China, including [[http://www.jd.com|JingDong]], [[http://www.dangdang.com|DangDang]], [[https://www.qunar.com|Qunar]], [[https://www.kaola.com|NetEase Kaola]], etc. In 2017, Dubbo has won the [[http://www.oschina.net/project/top_cn_2017|TOP 10 most popular open source projects in China]] for 2 consecutive years since 2016.

We'd like to share this outstanding framework via apache software foundation, and start developing a wider community through the apache way. We believe more people and organizations can be benefit from it by doing so. 

== Rationale ==

Remote procedure call (RPC) is one of the cornerstones to build distributed system, especially useful in today's e-commercial industry and cloud computing providers. Dubbo is the java-based RPC implementation. By using Dubbo, developers can call the remote service just like call a local method but without worrying about the details for the remote interaction. We expect more interesting features and use cases to emerge from the community from microservices to cloud computing, and many other areas.

== Current Status ==

=== Meritocracy ===

The intent of this proposal is to start building a diverse developer and user community around Dubbo following the ASF meritocracy model. Since Dubbo was open sourced, many companies in China adopted Dubbo to build up their own contributing system, moreover, we received many enhancements or issue reports from them at the same time. The codebase is now mainly managed by the development team inside Alibaba who's responsible for building internal distributed system too. Any suggestion or issue is discussed on [[https://github.com/alibaba/dubbo/issues|github issue]] and more casual talk happens in [[https://gitter.im/alibaba/dubbo|gitter channel]]. We plan to invite more people as committer if they contribute significantly to this project. 

=== Community ===

Dubbo is currently being developed by the development team inside Alibaba who's responsible for building internal distributed system too. Since it's open-sourced, Dubbo is widely adopted by many other companies including CNUCC (China Nets Union Clearing Corporation), ICBC (Industrial and Commercial Bank of China), [[https://www.chinalife.com.cn|China Life Insurance]], [[http://www.didichuxing.com/en|DiDi]], [[https://www.qunar.com|Qunar]], [[http://www.dangdang.com|Dangdang]], [[https://www.kaola.com|NetEase Kaola]], [[http://maoyan.com|Maoyan Movie]], [[https://www.gome.com.cn|GOME]], [[http://www.haier.com|Haier]], CSDC (China Securities Depository and Clearing Corporation Limited), [[http://www.asiainfo.com.cn|AsiaInfo]], and many more. We hope to grow the base of contributors by inviting all those who offer significant contributions and excel through the use of The Apache Way. Contributions from outside of Alibaba  are constantly accepted by Dubbo project and its [[https://github.com/dubbo|side projects]].  Right now, we make use of github as code hosting as well as both Google Group and gitter for community communication.

=== Core Developers ===

Dubbo is currently being developed by engineers from Alibaba, Dangdang,  Qunar and WeiDian: William Liang, Ding Li, Ian Luo, Jun Liu, Liujie Qin, Mercy Ma, Von Gosling, Huxing Zhang, and Xin Wang from WeiDian, Liang Zhang from DangDang, Zhaohui Yu from Qunar. William Liang and Ding Li, both are co-creators of Dubbo project from Alibaba. Ian Luo, Jun Liu, Liujie Qin, Mercy Ma, are all working in Alibaba middleware team, most of them are also the core members of internal RPC framework, HSF (high speed service framework), Von Gosling is the co-creator of the RocketMQ project, Huxing Zhang is one of Apache Tomcat PMC members, Xin Wang from WeiDian, Liang Zhang from DangDang, Zhaohui Yu from Qunar, they all are in charge of building and maintaining distributed system in their organizations, and have great passion in contributing back into Dubbo project.

=== Aligment ===

The ASF is the natural choice to host the Dubbo project as its goal of encouraging community-driven open source projects fits with our vision for Dubbo. The ASF is also the home to many other projects with which we are familiar with and hope to integrate better with Dubbo including [[http://thrift.apache.org|Thrift]], [[http://zookeeper.apache.org|Zookeeper]], etc. We believe that there will be mutual benefit by close proximity to these and other projects. 

== Known Risks ==

=== Orphaned products ===

The core developers currently work full-time on RPC area for Alibaba. Dubbo is widely adopted by many companies and individuals. There's no realistic chance of it becoming orphaned.

=== Inexperience with Open Source ===

The core developers are all active contributors, users and followers of open source. They are all already committers and contributors to Dubbo project, and have gained good experience in running open-source project in Github way and interacting with the community. Moreover, Von Gosling and Huxing Zhang from the initial committer, both are working on Apache projects (RocketMQ and Tomcat respectively), will guide others to practice the Apache Way together with incubator mentors we invite.

=== Homogenous Developers ===

The current set of developers work across a variety of organizations including Alibaba, DangDang, Qunar, and WeiDian. Furthermore, many other companies forked Dubbo and continued to enhance in their own private repositories. We plan to encourage them to pull back and invite them as contributors to work on one common code base.

=== Reliance on Salaried Developers ===

Currently, most of core developers are paid to work on Dubbo project by Alibaba. We look forward to attracting more people outside Alibaba to join this project, either payed engineers working on RPC area, or individual volunteers, as long as they have enthusiasm on Dubbo project.

=== Relationships with Other Apache Products ===

Dubbo integrates [[http://thrift.apache.org|Thrift]] as one of RPC protocols it supports, and [[http://zookeeper.apache.org|Zookeeper]] as one of service registration/discovery machanisms. We look forward to collaborating with those communities which may relevant to/use RPC. 

=== A Excessive Fascination with the Apache Brand ===

While we respect the reputation of the Apache brand and have no doubt that it will attract new contributors and users, our interest is primarily to give Dubbo a solid home as an open source project following an established development model. More reason are provided in the Rationale and Alignment sections. 

== Documentation ==

A complete set of Dubbo documentations is provided on dubbo.io in both English and Simplified Chinese.

 * Dubbo user guide: [[http://dubbo.io/books/dubbo-user-book-en|English]], [[http://dubbo.io/books/dubbo-user-book|Chinese]]
 * Dubbo development guide: [[http://dubbo.io/books/dubbo-dev-book-en|English]], [[http://dubbo.io/books/dubbo-dev-book|Chinese]]
 * Dubbo admin manual: [[http://dubbo.io/books/dubbo-admin-book-en|English]], [[http://dubbo.io/books/dubbo-admin-book|Chinese]]

== Initial Source ==

Dubbo was initially developed within Alibaba, and then was open-sourced with [[https://github.com/alibaba/dubbo/blob/master/LICENSE|The Apache License]] under Alibaba Group on [[https://github.com/alibaba/dubbo|github]] in 2011. Besides the core code base, Dubbo also hosts its side projects on github but in a [[https://github.com/dubbo|dedicated group]] instead of Alibaba.

== External Dependencies ==

As all dependencies are managed using Apache Maven, none of the external libraries need to be packaged in a source distribution. 

  ||Dependency         ||||   	License      ||
  ||httpclient         ||||     Apache License ||
  ||bsf-api            ||||   	Apache License||
  ||zookeeper          ||||   	Apache License||
  ||zkclient           ||||   	Apache License||
  ||curator-framework  ||||   	Apache License||
  ||cxf-rt-transports-http||||	Apache License||
  ||cxf-rt-frontend-simple||||	Apache License||
  ||libthrift    ||||         	Apache License||
  ||commons-logging   ||||    	Apache License||
  ||spring       ||||         	Apache License||
  ||netty          ||||       	Apache License||
  ||mina          ||||        	Apache License||
  ||fastjson       ||||       	Apache License||
  ||xmemcached      ||||      	Apache License||
  ||hessian        ||||       	Apache License||
  ||jetty          ||||       	Apache License||
  ||validation-api  ||||      	Apache License||
  ||hibernate-validator  |||| 	Apache License||
  ||cache-api      ||||       	Apache License||
  ||log4j           ||||      	Apache License||
  ||easymock       ||||       	Apache License||
  ||cglib-nodep     ||||      	Apache License||
  ||javassit       ||||       	Apache License||
  ||slf4j-api      ||||       	MIT           ||
  ||jmockit        ||||       	MIT           ||
  ||slf4j-log4j12   ||||      	MIT           ||
  ||sorcerer-javac  ||||      	MIT           ||
  ||jedis           ||||      	MIT           ||
  ||grizzly         ||||      	CDDL          ||
  ||servlet-api     ||||      	CDDL          ||
  ||javax.el         ||||     	CDDL          ||
  ||logback-classic ||||      	EPL           ||
  ||junit           ||||      	EPL           ||
  ||xstream          ||||     	BSD           ||

== Required Resources ==

=== Mailing lists ===

 * dubbo-private (PMC discussion) 
 * dubbo-dev (developer discussion) 
 * dubbo-user (user discussion) 
 * dubbo-commits (SCM commits) 
 * dubbo-issues (JIRA issue feed)

=== Subversion Directory ===

Instead of subversion, Dubbo prefers to git as source control management system: git://git.apache.org/dubbo

=== Issue Tracking ===

JIRA Dubbo (Dubbo)

=== Other Resources ===

The existing source code already has unit tests so we will make use of existing Apache continuous testing infrastructure. The resulting load should not be very large. 

== Initial Committers ==

 * William Liang (liangfei0201 at gmail.com)
 * Ian Luo (ian.luo at gmail.com)
 * Ding Li (oldratlee at gmail.com)
 * Jun Liu (ken.lj.hz at gmail.com)
 * Liujie Qin (765152203 at qq.com)
 * Mercy Ma (mercyblitz at gmail.com)
 * Xin Wang (ovepoem at hotmail.com)
 * Liang Zhang (terrymanu at 163 dot com)
 * Zhaohui Yu (yuyijq at gmail.com)
 * Von Gosling (vongosling at apache.org)
 * Huxing Zhang (huxing at apache.org)
 * Justin McLean  (jmclean at apache.org)
 * John D. Ament (johndament at apache.org)

== Affiliations ==

 * William Liang: Alibaba 
 * Xin Wang: WeiDian
 * Ian Luo: Alibaba 
 * Ding Li: Alibaba 
 * Liang Zhang: DangDang
 * Jun Liu: Alibaba
 * Liujie Qin: Alibaba
 * Zhaohui Yu: Qunar
 * Mercy Ma: Alibaba
 * Von Gosling: Alibaba
 * Huxing Zhang: Alibaba

== Additional Interested Contributors ==

 * Jerrick Zhu (diecui1202 at gmail.com)
 * Peng Wei (weipeng2k at 126.com)
 * Yuneng Xie (xieyuneng at gmail.com)
 * Hanson Huang (hanson19921129 at gmail.com)
 * Zhixuan Cheng (hengyunabc at gmail.com)

== Sponsors ==

=== Champion ===

 * Justin McLean  (jmclean at apache.org)

=== Nominated Mentors ===

 * John D. Ament (johndament at apache.org)

==== Unofficial Mentors ====
 
 * Von Gosling (vongosling at apache.org)
 * Huxing Zhang (huxing at apache.org)

=== Sponsoring Entity ===

We are requesting the Incubator to sponsor this project.

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org