ShenYu Proposal

Abstract

ShenYu is a high performance Microservices API gateway in Java ecosystem, compatible with a variety of mainstream framework systems, supports hot plug. Users can write their own plugin meet the current requirement and future needs in a variety of scenarios, especially in large-scale scenes.

Proposal

We are actively operating the community, and we will increase community activity continuously.

We believe that bringing ShenYu into Apache Software Foundation could advance development of a stronger and more diverse open source community.

Dromara submits this proposal to donate ShenYu's source codes and all related documentations to Apache Software Foundation. The codes are already under Apache License Version 2.0.

Voted on submitting the proposal to the Incubator. Check here:

https://github.com/dromara/soul/issues/1247

Background

ShenYu has been used in production environment, its performance and flexibility allow us to use up very cool with the following features:

  • Provides plugins such as current limiting, fusing, forwarding, routing monitoring and so on.
  • Support HTTP, RESTFul, WebSocket, Dubbo, GRPC, Tars and Spring Cloud Proxy.
  • Plug-in hot plug, users can customize the implementations.
  • Selectors and rules are dynamically configured for flexible matching.
  • Support for cluster deployment.
  • Support A/B test and grayscale publishing.

Rationale

The users already benefit from running ShenYu to make Microservices more easier.

The rapid growth of ShenYu community is empowered by open source. We believe the Apache foundation is a great fit as the long-term home for ShenYu, as it provides an established process for community-driven development and decision making by consensus. This is exactly the model we want for future ShenYu development.

Current Status

Meritocracy

ShenYu was incubated in 2017 and open sourced on GitHub in 2018. Once open sourced, ShenYu has been quickly adopted by multiple organization. We have set up the PMC and Committer. New contributors are guided and reviewed by existed PMC members. When they are ready, PMC will start a vote to promote him/her to become a member of PMC or Committer. See the details See the details here(https://dromara.org/projects/soul/committer/). Contributions are always welcomed and highly valued.

Community

Now we have set development teams for ShenYu respectively in Dromara.org, didiglobal, PerfMa, YY, and IBM. We hope to grow the base of contributors by inviting all those who offer contributions through The Apache Way. Right now, we make use of GitHub as code hosting as well as for community communication.

Core Developers

The core developers, including experienced open source developers and team leaders.

  • Yu Xiao. He is the founder of this project, Apache ShardingSphere Committer.
  • Liming Deng. He is the member of OpenTelemetry and Lettuce, the collaborator of jedis, the member of Dromara.
  • Yudong Tang. He is the member of OpenTelemetry, Caffeine maintainer, the member of Dromara.

Alignment

In the Microservices ecosystem, ShenYu is a very popular high performance Microservices API gateway supports many RPC framework including Apache Dubbo. We believe that it will help the further growth of Microservices community by having ShenYu and Dubbo aligned within Apache foundation. The alignment is also beneficial to other Apache communities (such as Zookeeper).

Known Risks

Project Name

Current project name is Soul, will change it to ShenYu after it is accepted by the Incubator.

Orphaned Products

The risk of the ShenYu project being abandoned is minimal. We are actively operating the community, and we will increase community activity continuously. The community attracts many contributors.

Inexperience with Open Source

As mentioned in Core Developers section, the core developers all work for companies that have developed or contributed to many open source projects. Therefore, we believe we have enough experience to deal with open source.

Homogenous Developers

The current core developers work across Dromara.org, didiglobal, PerfMa, YY; some individual developers are accepted as core developers of ShenYu as well. The ShenYu community is not diverse enough, we need to take note of the need for a more diverse community. And we are committed to nominating additional committers based on their contributions to the project.

Reliance on Salaried Developers

It is expected that ShenYu development will occur on both salaried time and on volunteer time, after hours. The majority of initial committers are paid by their employer to contribute to this project. However, they are all passionate about the project, and we are confident that the project will continue even if no salaried developers contribute to the project. We are committed to recruiting additional committers including non-salaried developers.

Relationships with Other Apache Products

ShenYu is closely integrated with Dubbo, Zookeeper, Curator, Shiro and commons in numerous ways.

ShenYu integrates Apache Zookeeper as one of the service registration/discovery mechanisms. ShenYu is deeply integrated with Apache Dubbo and supports its protocol.

To some extent, ShenYu has overlapping goals with the ASF existing API gateway APISIX, but they are in different ecological niche. APISIX is written by Lua and Perl with technical architecture Nginx + etcd, while ShenYu is written by Java. ShenYu can be conveniently integrated with the RPC framework in the Java ecosystem.

An Excessive Fascination with the Apache Brand

We acknowledge the value and reputation that the Apache brand would bring to ShenYu. However, our primary interest is in the excellent community provided by Apache Software Foundation, in which all the projects could gain stability for long-term development.

Documentation

A complete set of ShenYu documentations is provided in both English and Simplified Chinese. The project will be renamed to ShenYu when migrating.

Initial Source

The project consists of three distinct code bases: core, dashboard and document. The address of three existed Git repositories are as follows:

Initial Source and Intellectual Property Submission Plan

As soon as ShenYu is approved to join Apache Incubator, the Initial committers will submit ICLA(s). The code is already licensed under the Apache Software License, version 2.0.

External Dependencies

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

Most of dependencies have Apache compatible licenses,and the detail as follows:

Backend Dependencies

DependencyLicenseComments
mapstructApache-2.0
gsonApache-2.0
okhttpApache-2.0


lombokMIT
simpleclientApache-2.0
simpleclient_httpserverApache-2.0
simpleclient_hotspotApache-2.0
dubboApache-2.0
sofa-rpc-allApache-2.0
disruptorApache-2.0
mybatis-spring-boot-starterApache-2.0
mysql-connector-javaGPL-2.0Will be removed, and users who need this library can download it manually.
druidApache-2.0
commons-lang3Apache-2.0
guavaApache-2.0
commons-collections4Apache-2.0
reactor-springApache-2.0
hessianApache-1.1
kryo-shadedBSD-3-Clause
protostuff-coreApache-2.0
protostuff-runtimeApache-2.0
zookeeperApache-2.0
zkclientApache-2.0
pagehelperMIT
springfox-swagger2Apache-2.0
springfox-swagger-uiApache-2.0
tars-spring-boot-starterBSD 3-Clause
slf4j-apiMIT
jcl-over-slf4jMIT
hamcrest-libraryBSD 3-Clause
junitEPL-1.0
mockito-coreMIT
mockito-inlineMIT
springApache-2.0
spring-bootApache-2.0
jetcd-core
Apache-2.0
nacosApache-2.0

The dashboard UI  dependencies are as follows:

Dashboard UI Dependencies

DependencyLicenseComments
stylelint-config-standardMIT
stylelint-config-prettierMIT
stylelintMIT
roadhog-api-docMIT
roadhogMIT
regenerator-runtimeMIT
redbox-reactMIT
react-loadableMIT
pro-downloadISC
SetprototypeofISC
prettierMIT
mockjsMIT
lint-stagedMIT
huskyMIT
gh-pagesMIT
eslint-plugin-reactMIT
eslint-plugin-markdownMIT
eslint-plugin-jsx-a11yMIT
eslint-plugin-importMIT
eslint-plugin-compatMIT
eslint-plugin-babelMIT
eslint-config-prettierMIT
babel-eslintMIT
babel-plugin-dva-hmrMIT
babel-plugin-importMIT
babel-plugin-module-resolverMIT
babel-plugin-transform-decorators-legacyMIT
cross-envMIT
cross-port-killerMIT
enzymeMIT
eslintMIT
eslint-config-airbnbMIT
Url-polyfillMIT
Redux-loggerMIT
react-resizableMIT
react-intl-universalBSD 3-Clause
react-fittextMIT
react-domMIT
react-container-queryMIT
react-document-titleMIT
reactMIT
qsBSD 3-Clause
prop-typesMIT
path-to-regexpMIT
omitMIT
babelMIT
antdMIT
classnamesMIT
dayjsMIT
dvaMIT
dva-loadingMIT
enquire-jsMIT
lodashMIT

Required Resources

Mailing lists

  • shenyu-dev: for development discussions
  • shenyu-private: for PPMC discussions
  • shenyu-notifications: for user notifications, and notifications from GitHub

Git Repositories:

  • https://github.com/apache/incubator-shenyu
  • https://github.com/apache/incubator-shenyu-dashboard
  • https://github.com/apache/incubator-shenyu-website

Issue Tracking

The community would like to continue using GitHub Issues.

Initial Committers

Affiliations

  • JD TECH: Yu Xiao, Yonglun Zhang
  • PerfMa: Yudong Tang
  • HelloBike: Lei Zhang
  • Shein: Xiaofeng Huang
  • didiglobal: Ziqiang Liang
  • IBM: Ze Yang
  • Sunline: Jinwei Qin
  • Start-ups: Liming Deng, Jianming Ding, Zhenbing Feng

Sponsors

Champion

  • Willem Ning Jiang (ningjiang at apache dot org)

Nominated Mentors

  • Willem Ning Jiang (ningjiang at apache dot org)
  • Jincheng Sun (jincheng at apache dot org)
  • Duo Zhang (zhangduo at apache dot org)
  • Kevin Ratnasekera (djkevincr at apache dot org)

  • Atri Sharma (atri at apache dot org)

  • Justin Mclean (jmclean at apache dot org)

Sponsoring Entity

We are expecting the Apache Incubator could sponsor this project.



  • No labels