Abstract

APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices.

APISIX is based on OpenResty and etcd, and has dynamic routing and plug-in hot loading, which is especially suitable for API management under micro-service system.

Proposal

The goal of this proposal is to bring the existing APISIX codebase and existing developers and community into the Apache Software Foundation (ASF) in order to build a global, diverse and self-governed open source community in API gateway field.

Zhiliu is submitting this proposal to donate the APISIX sources code and associated artifacts (documentation, web site content, wiki, etc.) to the Apache Software Foundation Incubator under the Apache License, Version 2.0.

These artifacts are currently available on GitHub at https://github.com/iresty/apisix and include:

  • APISIX: The Cloud-Native Microservices API gateway.
  • APISIX-dashboard: The dashboard for APISIX API gateway.

Background

Mircro-service and Cloud Native architecture are becoming more and more popular, traditional monolithic applications are being replaced by microservices. This also brings more challenges for API gateways, not only handling north-south traffic, but also handling east-west traffic between microservices, and need to ensure high concurrency and very low latency at the same time.

APISIX was open sourced on Github in in June 2019. At first, APISIX needs to interact directly with etcd to modify the configuration of routes and plugins. After we opened on the GitHub, the community gives the feedbacks about high level API and built-in dashboard. So in 0.6 version, APISIX provided REST admin API and dashboard to control the API gateway. Since then more and more contributors have joined in, and more plugins and features provided.

Rationale

APISIX acts as an entry point for business traffic and plays an important role in the current system. Making traffic more secure and faster to process is the ultimate goal of APISIX.

APISIX includes these primary parts:

  • Provide the core of the API gateway, including various processing of requests and responses, dynamic upstream and dynamic SSL certificates, upstream active and passive health checks, etc. The core does not bind APISIX, other projects can be used directly.
  • Provide the plug-in hot plugging mechanism based on the core, to support gRPC transcoding, identity authentication, rate limiting, OpenTracing etc. And provide a plugin development library, users can easily write their own plugins.
  • Provide the admin API and dashboard to operate the API gateway, and also support updating with the yaml configuration file, which is friendly for Kubernetes.

There is a strong need for an open, easy-to-use microservice API gateway to help developers reduce duplication of code development and better manage APIs. We believe that by moving to Apache it will help us work in a more global and open way. Under Apache's strong governance and existing processes, hope is also to make APISIX more reliable and encourage more developers to participate, as is crucial for API gateway.

Current Status

Meritocracy

APISIX was created in April 2019 and opened on github on June 6, 2019. The project now has contributors and users from a dozen companies; we have set up the PMC Team and Committer Team. 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 Team, see the votes for Committer here. Contributions are always welcomed and highly valued. A lot of energy is allocated to ensure help to all wishing to contribute.

Community

APISIX has been building an active community since its open source, and hosted meetup in 5 different cities in China. Currently, the community includes over 22 contributors, and we already have a user group of more than 500 people.

APISIX's contributors, who can provide employer information, are from iresty.com, meizu.com, weibo.com, ke.com, fansup.mobi, which also provide many important feedbacks from their actual scenarios.

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 gitter for community communication.

APISIX will seek more developers and user communities during incubation.

Core Developers

The core developers, including experienced open source developers and team leaders, have formed a group full of diversity.

Known Risks

Orphaned products

The contributors and community cooperation brings the project from a small concept into a real microservices API gateway, and APISIX is widely adopted in China by some companies and organizations. The core developers of APISIX team already work full time on this project. There is very little risk of APISIX getting orphaned as at least one large company (ke.com) is widely using it in their production, handling more than 100 million user requests per day.

APISIX has four major releases, 22 contributors, been forked nearly 150 times, and received 380 pull requests from contributors, which further demonstrates APISIX as a very active project. We also plan to extend and diversify this community further through Apache.

Thus, it is very unlikely that APISIX becomes orphaned.

Inexperience with Open Source

The members of PMC are the founders of the OpenResty community, and already have experience working with open source communities, they are also active in OpenResty, Kong, ingress-nginx and other projects. At the same time, we will learn more open source experiences by following the Apache way in our incubator journey.

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 Meizu, ke.com, dasouche.com, Weibo and fansup.mobi; some individual developers are accepted as core developers of APISIX as well. Considering that qianxin.com and aispeech.com have shown great interest in APISIX, we plan to encourage them to contribute and invite them as contributors to work together.

Reliance on Salaried Developers

Most members of the PMC and Committer Team, are paid by their employers to contribute to this project. APISIX itself and the API gateway are very attractive and important for every company the contributors work in, and they have no reason to stop them. Contributions and new committers are expected. And we will make efforts to increase the diversity of the contributors.

Relationships with Other Apache Products

APISIX already support Apache Skywalking as one of the APM services, and will proxy for Apache dubbo and Apache brpc. Also we are considering integrates Apache Zookeeper as one of the service registration/discovery mechanisms.

A Excessive Fascination with the Apache Brand

We acknowledge the value and reputation that the Apache brand will bring to APISIX. However, we prefer that the community provided by the Apache Software Foundation will enable the project to achieve long-term stable development. So APISIX is proposing to enter incubation at Apache in order to help efforts to diversify the community, not so much to capitalize on the Apache brand.

Documentation

A complete set of APISIX documentations is provided on github in both English and Simplified Chinese.

Initial Source

The project consists of two distinct codebases: the server and the dashboard. These have existed as separate git repositories.

Source and Intellectual Property Submission Plan

As soon as APISIX is approved to join Apache Incubator, zhiliu will provide the Software Grant Agreement(SGA) and initial committers will submit ICLA(s). The code is already licensed under the Apache Software License, version 2.0.

External Dependencies

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

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

DependencyLicenseComments
lua-resty-sessionBSD 2-clause
lua-resty-httpBSD 2-clause
lua-resty-balancerBSD 2-clause
lua-resty-templateBSD 3-clause
lua-resty-cookieBSD 3-clause
lua-resty-etcdApache-2.0
lua-resty-ngxvarApache-2.0
lua-resty-openidcApache-2.0
lua-resty-healthcheck-irestyApache-2.0
lua-resty-jwtApache-2.0
opentracing-openrestyApache-2.0
lua-resty-radixtreeApache-2.0
lua-resty-iputilsMIT
lua-protobufMIT
lua-resty-jit-uuidMIT
lua-tinyyamlMIT
lua-rapidjsonMIT
luafilesystemMIT
iresty-nginx-lua-prometheusMIT

As all front-end dashboard dependencies are managed using NPM, none of the external libraries need to be packaged in a source distribution.

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

DependencyLicenseComments
fuse.jsApache-2.0
echartsApache-2.0
axiosMIT
element-uiMIT
js-cookieMIT
normalize.cssMIT
nprogressMIT
path-to-regexpMIT
register-service-workerMIT
screenfullMIT
uuidMIT
vueMIT
vue-class-componentMIT
vue-count-toMIT
vue-element-adminMIT
vue-i18nMIT
vue-property-decoratorMIT
vue-routerMIT
vue-svgiconMIT
vue-typescript-admin-templateMIT
vuexMIT
vuex-classMIT
vuex-module-decoratorsMIT

Required Resources

Git Repositories

Issue Tracking

The community would like to continue using GitHub Issues.

Continuous Integration tool

Travis CI

Mailing Lists

  • APISIX-dev: for development discussions
  • APISIX-private: for PPMC discussions
  • APISIX-notifications: for users notifications

Initial Committers

Affiliations

  • zhiliu: Ming Wen, Yuansheng Wang
  • Meizu: Junxu Chen
  • Dasouche: Yong Li
  • Individuals: Zhiyuan Ju
  • Yanhuang Online: Suo Zhang
  • GangRong Tech: Ke Tang
  • Axinfu: Chunlin Wu
  • Learnta: Lang Wang
  • Tencent: Hui Li
  • Zero tone Tech: Zhiyong Li
  • TAL Education: Jinchao Shuai

Sponsors

Champion

Mentors

Sponsoring Entity

We are expecting the Apache Incubator could sponsor this project.

  • No labels