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 #1243

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 YukingProposal is :

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.

Background

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

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.

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.

Initial Source

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

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:

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
commons-collections4 Apache-2.0
reactor-spring Apache-2.0
hessian Apache-1.1
kryo-shaded BSD-3-Clause
protostuff-core BSD-3-Clause
protostuff-runtime BSD-3-Clause
protostuff-runtime BSD-3-Clause
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
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
prettier MIT
lint-staged 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

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

Nominated Mentors

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".

kimmking commented 3 years ago

+1

SaberSola commented 3 years ago

+1

fengzhenbing commented 3 years ago

+1

nuo-promise commented 3 years ago

+1

tuohai666 commented 3 years ago

+1

tydhot commented 3 years ago

+1

dmsolr commented 3 years ago

+1

prFor commented 3 years ago

+1

241600489 commented 3 years ago

+1

HessTina-YuI commented 3 years ago

+1

lmhmhl commented 3 years ago

+1

sunl888 commented 3 years ago

+1

magicalxiaochen commented 3 years ago

+1

cutieagain commented 3 years ago

+1

Asxing commented 3 years ago

+1

yangxing9 commented 3 years ago

+1

yu199195 commented 3 years ago

all init committers vote passed, i will close it !

onlyonezhongjinhui commented 3 years ago

+1

justinmclean commented 3 years ago

I notice you changed the name to Yuking. While perhaps not a big consideration the word yuck or yuk in English means unpleasant.

yu199195 commented 3 years ago

@justinmclean Thank you for your advice,Let's talk about the name change in our community

justinmclean commented 3 years ago

I'm not saying you need to change it, you just might want to consider using this name. Many words mean something else in other languages.

yu199195 commented 3 years ago

That's true. We don't have to have a controversial name

tuohai666 commented 3 years ago

@justinmclean Thanks a lot for your comments. Yu is a King in Chinese mythology. We previously decided to name the project YuKing, but use Yuking for convenience. It's really a two words name. I wonder is it ambiguous if we use YuKing, or will people judge YuKing is just Yuking in general?

tuohai666 commented 3 years ago

If there's tendency that people treat YuKing as Yuking, we will discard this name. Otherwise, it is a good name.

justinmclean commented 3 years ago

I think YuKing would be fine and not many people would confuse that with Yuking.

tuohai666 commented 3 years ago

I think YuKing would be fine and not many people would confuse that with Yuking.

Thanks for the explanation. We have decided to change the name to ShenYu another name of Yu. We realized that is better name at the time we made the decision.