apache / shenyu

Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance.
https://shenyu.apache.org/
Apache License 2.0
8.46k stars 2.94k forks source link

[Vote] Donate Soul to Apache Foundation #1237

Closed yu199195 closed 3 years ago

yu199195 commented 3 years ago

After several days discussion with some Apache members, the draft is almost ready , please vote for donating the soul and soul-dashboard to Apache Foundation. Soul will renamed Yuking!

The Yuking Proposal:

Yuking Proposal
Abstract
Yuking 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
The Yuking project already has a large community with many contributors (https://dromara.org/awesome/#contributors). It is also widely adopted by many companies and organizations (https://dromara.org/awesome/#knownusers).

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

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

Code base core: https://github.com/dromara/soul/
Code base dashboard: https://github.com/dromara/soul-dashboard/
Documentations: https://dromara.org/projects/soul/
Community: https://dromara.org/awesome/
Voted on submitting the proposal to the Incubator. Check here:

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

Background
Yuking 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
More than 40 organizations (refer to Who is using Yuking: https://github.com/dromara/soul/issues/68 ) already benefit from running Yuking to make Microservices more easier. More than 40 feature ideas (https://github.com/dromara/soul/issues?q=is%3Aissue+label%3A%22type%3A+new+feature%22+is%3Aclosed) come from Yuking community. 

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

Current Status
Meritocracy
Yuking was incubated in 2017 and open sourced on GitHub in 2018. Once open sourced, Yuking 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 Yuking 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, have formed a group full of diversity.

Yu Xiao. He is the founder of this project, Apache ShardingSphere Committer.
Jinwei Qin. He is the PMC member of Apache Dubbo and Apache ShardingSphere, the member of Dromara.
Yonglun Zhang. He is the PMC member of Apache ShardingSphere, the member of Dromara.
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.
Haochao Zhuang. He is the PMC member of Apache SkyWalking, the member of Dromara.
Alignment
In the Microservices ecosystem, Yuking 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 Yuking 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 Yuking after it is accepted by the Incubator.

Orphaned Products
The risk of the Yuking project being abandoned is minimal. There are at least 40 organizations (JD, didiglobal, PerfMa, YY, CHINA TELECOM, IBM, STATE GRID etc.) are highly incentivized to continue development. Many of these organizations have built critical business applications upon Yuking, and have devoted significant internal infrastructure investment in Yuking.

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. There are at least four PMC members from other Apache projects together with members of other famous community.

Therefore, we believe we have enough experience to deal with open source.

Homogenous Developers
The current core developers work across a variety of organizations including Dromara.org, didiglobal, PerfMa, YY; some individual developers are accepted as core developers of Yuking as well. Yuking has an active community of developers, and we are committed to recruiting additional committers based on their contributions to the project.

Reliance on Salaried Developers
It is expected that Yuking 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
Yuking is closely integrated with Dubbo, Zookeeper, Curator, Shiro and commons in numerous ways.

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

To some extent, Yuking 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 Yuking is written by Java. Yuking 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 Yuking. 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 Yuking documentations is provided in both English and Simplified Chinese. The project will be renamed to Yuking when migrating.

English: https://dromara.org/projects/soul/overview/
Chinese: https://dromara.org/zh/projects/soul/overview/
Initial Source
The project consists of three distinct codebases: core, dashboard and document. The address of three existed Git repositories are as follows:

https://github.com/dromara/soul
https://github.com/dromara/soul-dashboard
https://github.com/dromara/dromara.github.io/tree/master/content/en/projects/soul
Initial Source and Intellectual Property Submission Plan
As soon as Yuking 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
Dependency  License Comments
mapstruct   Apache-2.0  
gson    Apache-2.0  
okhttp  Apache-2.0  

lombok  MIT 
simpleclient    Apache-2.0  
simpleclient_httpserver Apache-2.0  
simpleclient_hotspot    Apache-2.0  
dubbo   Apache-2.0  
sofa-rpc-all    Apache-2.0  
disruptor   Apache-2.0  
mybatis-spring-boot-starter Apache-2.0  
mysql-connector-java    GPL-2.0 Will be removed, and users who need this library can download it manually.
druid   Apache-2.0  
commons-lang3   Apache-2.0  
guava   Apache-2.0  
commons-collections4    Apache-2.0  
reactor-spring  Apache-2.0  
hessian Apache-1.1  
kryo-shaded BSD-3-Clause    
protostuff-core Apache-2.0  
protostuff-runtime  Apache-2.0  
zookeeper   Apache-2.0  
zkclient    Apache-2.0  
pagehelper  MIT 
springfox-swagger2  Apache-2.0  
springfox-swagger-ui    Apache-2.0  
tars-spring-boot-starter    BSD 3-Clause    
slf4j-api   MIT 
jcl-over-slf4j  MIT 
hamcrest-library    BSD 3-Clause    
junit   EPL-1.0 
mockito-core    MIT 
mockito-inline  MIT 
spring  Apache-2.0  
spring-boot Apache-2.0  
jetcd-core
Apache-2.0  
nacos   Apache-2.0  
The dashboard UI  dependencies are as follows:

Dashboard UI Dependencies
Dependency  License Comments
stylelint-config-standard   MIT 
stylelint-config-prettier   MIT 
stylelint   MIT 
roadhog-api-doc MIT 
roadhog MIT 
regenerator-runtime MIT 
redbox-react    MIT 
react-loadable  MIT 
pro-download    ISC 
Setprototypeof  ISC 
prettier    MIT 
mockjs  MIT 
lint-staged MIT 
husky   MIT 
gh-pages    MIT 
eslint-plugin-react MIT 
eslint-plugin-markdown  MIT 
eslint-plugin-jsx-a11y  MIT 
eslint-plugin-import    MIT 
eslint-plugin-compat    MIT 
eslint-plugin-babel MIT 
eslint-config-prettier  MIT 
babel-eslint    MIT 
babel-plugin-dva-hmr    MIT 
babel-plugin-import MIT 
babel-plugin-module-resolver    MIT 
babel-plugin-transform-decorators-legacy    MIT 
cross-env   MIT 
cross-port-killer   MIT 
enzyme  MIT 
eslint  MIT 
eslint-config-airbnb    MIT 
Url-polyfill    MIT 
Redux-logger    MIT 
react-resizable MIT 
react-intl-universal    BSD 3-Clause    
react-fittext   MIT 
react-dom   MIT 
react-container-query   MIT 
react-document-title    MIT 
react   MIT 
qs  BSD 3-Clause    
prop-types  MIT 
path-to-regexp  MIT 
omit    MIT 
babel   MIT 
antd    MIT 
classnames  MIT 
dayjs   MIT 
dva MIT 
dva-loading MIT 
enquire-js  MIT 
lodash  MIT 
Required Resources
Mailing lists
yuking-dev: for development discussions
yuking-private: for PPMC discussions
yuking-notifications: for user notifications, and notifications from GitHub
Git Repositories:
https://github.com/apache/incubator-yuking
https://github.com/apache/incubator-yuking-dashboard
https://github.com/apache/incubator-yuking-website
Issue Tracking
The community would like to continue using GitHub Issues.

Initial Committers
Yu Xiao <xiaoyu@dromara.org>
Jinwei Qin <kimmking@dromara.org>
Yonglun Zhang <zhangyonglun@dromara.org>
Liming Deng <dengliming@dromara.org>
Yudong Tang <tydhot@dromara.org>
Lei Zhang <zhangleispring@dromara.org>
Bin Chen <chenbin@dromara.org>
Haochao Zhuang <m@dromara.org>
Jianming Ding <nuo-promise@dromara.org>
Zhenbing Feng <fengzhenbing@dromara.org>
Affiliations
JD TECH: Yu Xiao, Yonglun Zhang
PerfMa: Yudong Tang
HelloBike: Lei Zhang
Shein: Xiaofeng Huang
didiglobal: Ziqiang Liang
YY: Haochao Zhuang
IBM: Ze Yang
Start-ups: Liming Deng, Bin Chen, 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)
Sponsoring Entity
We are expecting the Apache Incubator could sponsor this project.

The vote is for All Initial Committers:

@yu199195 @tuohai666 @kimmking @dengliming @tydhot @SaberSola @nuo-promise @fengzhenbing @prFor @dmsolr Voters can either respond "agree, yes, +1", "disagree, no, -1", or "abstain".

dengliming commented 3 years ago

+1

tuohai666 commented 3 years ago

+1

tydhot commented 3 years ago

+1

fengzhenbing commented 3 years ago

+1

241600489 commented 3 years ago

+1

Asxing commented 3 years ago

+1

SaberSola commented 3 years ago

+1

dmsolr commented 3 years ago

+1

kimmking commented 3 years ago

+1

itdoudoutech commented 3 years ago

+1

1923982924 commented 3 years ago

+1

funpad commented 3 years ago

Congratulations

zendwang commented 3 years ago

+1

shallwetalkge commented 3 years ago

+1

HessTina-YuI commented 3 years ago

+1

en-o commented 3 years ago

+1

strawberry-crisis commented 3 years ago

congrats!!!

Rookie45 commented 3 years ago

Congratulations

sakiila commented 3 years ago

agree

Zhoutzzz commented 3 years ago

Congratulations

mumuchuan commented 3 years ago

+1

synchronizedlock commented 3 years ago

Congratulations~ Neko sama NB!

qurenneng commented 3 years ago

+1

prFor commented 3 years ago

+1

yu199195 commented 3 years ago

bing + 10 , Vote passed! i will close it.

0x12FD16B commented 3 years ago

+1

funpad commented 3 years ago

agree

zendwang commented 3 years ago

fighting!!!!

nuo-promise commented 3 years ago

+1