/!\ 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.

Required Resources

Mailing lists

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)

Affiliations

(In alphabetical order)

Additional Interested Contributors

(In alphabetical order)

Sponsors

Champion

Nominated Mentors

Informal Mentors

Sponsoring Entity

We are requesting the Incubator to sponsor this project.

DubboProposal (last edited 2018-03-12 13:54:50 by johndament)