/!\ FINAL (!)

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 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. The code is already under the Apache License Version 2.0. Dubbo source code and its side projects are hosted on github right now:

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 JingDong, DangDang, Qunar, NetEase Kaola, etc. In 2017, Dubbo has won the TOP 10 most popular open source projects in China for 2 consecutive years since 2016.

We'd like to share this outstanding framework at the 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 systems, 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 ranging 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 github issue and more casual talk happens in gitter channel. We plan to invite more people as committers if they contribute 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), China Life Insurance, DiDi, Qunar, Dangdang, NetEase Kaola, Maoyan Movie, GOME, Haier, CSDC (China Securities Depository and Clearing Corporation Limited), AsiaInfo, and many more. We hope to grow the base of contributors by inviting all those who offer contributions and excel through the use of The Apache Way. Contributions from outside of Alibaba are constantly accepted by Dubbo project and its side projects. Right now, we make use of github as code hosting as well as both Google Groups and gitter for community communication.

Core Developers

Dubbo is currently being developed by engineers from Alibaba, Dangdang, Qunar and WeiDian. Ding Li, Huxing Zhang, Ian Luo, Jun Liu, Liujie Qin, Mercy Ma, Von Gosling, William Liang are working for Alibaba. Most of them are working in Alibaba middleware team, and some of them are also the core members of internal RPC framework, HSF (high speed service framework). Von Gosling is the co-creator of Apache RocketMQ, while Huxing Zhang is one of Apache Tomcat PMC members. Besides, the Dubbo core developers also includes Xin Wang from WeiDian, Liang Zhang from DangDang, Zhaohui Yu from Qunar. All of them 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 Thrift, 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 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 along with other incubator mentors.

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 contribute 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 for the Dubbo project.

Relationships with Other Apache Products

Dubbo integrates Thrift as one of RPC protocols it supports, and Zookeeper as one of service registration/discovery mechanisms. Dubbo is also supported by Skywalking as Dubbo-plugin. We look forward to collaborating with those communities and any others which 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 reasons 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.

Initial Source

Dubbo was initially developed within Alibaba, and then was open-sourced with The Apache License 2.0 under Alibaba Group on github in 2011. Besides the core code base, Dubbo also hosts its side projects on github but in a dedicated group instead of Alibaba. Specifically, the initial source includes:

External Dependencies

As all dependencies are managed using Apache Maven, none of the external libraries need to be packaged in a source distribution. The dependencies all have Apache compatible licenses. These include BSD, CDDL, CPL, MPL and MIT licensed dependencies. There are only 3 transitive dependencies(javassist, netty, and spring-context), and all the other dependencies are optional, which are not included in a Dubbo release.

Dependency

License

 

 

Optional?

javassist

Apache License 2.0, MPL 1.1

 

 

false

netty

Apache License 2.0

 

 

false

spring-context

Apache License 2.0

 

 

false

httpclient

Apache License 2.0

 

 

true

zookeeper

Apache License 2.0

 

 

true

zkclient

Apache License 2.0

 

 

true

curator-framework

Apache License 2.0

 

 

true

cxf

Apache License 2.0

 

 

true

libthrift

Apache License 2.0

 

 

true

commons-logging

Apache License 2.0

 

 

true

commons-lang

Apache License 2.0

 

 

true

mina

Apache License 2.0

 

 

true

fastjson

Apache License 2.0

 

 

true

xmemcached

Apache License 2.0

 

 

true

hessian

Apache License 1.1

 

 

true

tomcat

Apache License 2.0

 

 

true

jetty

Apache License 2.0, EPL 1.0

 

 

true

validation-api

Apache License 2.0

 

 

true

hibernate-validator

Apache License 2.0

 

 

true

cache-api

Apache License 2.0

 

 

true

log4j

Apache License 2.0

 

 

true

easymock

Apache License 2.0

 

 

true

cglib-nodep

Apache License 2.0

 

 

true

resteasy

Apache License 2.0

 

 

true

fst

Apache License 2.0

 

 

true

slf4j-api

MIT

 

 

true

jmockit

MIT

 

 

true

jedis

MIT

 

 

true

grizzly

CDDL 1.1

 

 

true

servlet-api

CDDL 1.1

 

 

true

javax.el

CDDL 1.1

 

 

true

logback-classic

EPL 1.0

 

 

true

junit

EPL 1.0

 

 

true

kryo

BSD 3-clause

 

 

true

Required Resources

Mailing lists

  • dubbo-private (PMC discussion)
  • dubbo-dev (developer 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

(In alphabetical order)

  • Ding Li (oldratlee at gmail dot com)
  • Huxing Zhang (huxing at apache dot org)
  • Ian Luo (ian.luo at gmail dot com)
  • Jean-Frederic Clere (jfclere at apache dot org)
  • Jun Liu (ken.lj.hz at gmail dot com)
  • John D. Ament (johndament at apache dot org)
  • Justin McLean (jmclean at apache dot org)
  • Liang Zhang (terrymanu at 163 dot com)
  • Liujie Qin (qinliujieyangliu at gmail dot com)
  • Mark Thomas (markt at apache dot org)
  • Mercy Ma (mercyblitz at gmail dot com)
  • Von Gosling (vongosling at apache dot org)
  • William Liang (liangfei0201 at gmail dot com)
  • Xin Wang (lovepoem at hotmail dot com)
  • Zhaohui Yu (yuyijq at gmail dot com)

Affiliations

(In alphabetical order)

  • Alibaba: Ding Li, Huxing Zhang, Ian Luo, Jun Liu, Liujie Qin, Mercy Ma, Von Gosling, William Liang
  • Class Software: Justin McLean
  • DangDang: Liang Zhang
  • Pivotal: Mark Thomas
  • Qunar: Zhaohui Yu
  • Redhat: Jean-Frederic Clere
  • Sparta Systems: John D. Ament
  • WeiDian: Xin Wang

Additional Interested Contributors

(In alphabetical order)

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

Sponsors

Champion

  • Justin McLean (jmclean at apache dot org)

Nominated Mentors

  • Justin McLean (jmclean at apache dot org)
  • John D. Ament (johndament at apache dot org)
  • Jean-Frederic Clere (jfclere at apache dot org)
  • Mark Thomas (markt at apache dot org)

Informal Mentors

  • Huxing Zhang (huxing at apache dot org)
  • Von Gosling (vongosling at apache dot org)

Sponsoring Entity

We are requesting the Incubator to sponsor this project.

  • No labels