Published on

My Story with the Apache Software Foundation

Authors

Chinese Version

I was in college in 2015 and used Apache Web Server when deploying a Web project, and the feather logo of the Apache Software Foundation stuck with me just by looking at it.

image

The Apache Software Foundation was founded in 1999 (I was born in 1997) as the world's largest open-source software foundation, and I never thought I'd be more deeply involved with it now.

APISIX

Shortly after graduating from college in 2019, Ming Wen contacted me and hoped I could contribute a Dashboard project to APISIX.

First of all, what is APISIX? My understanding of the APISIX project at the time, which was only an open-source API gateway. I had never used such products, let alone how to make a Dashboard to go with APISIX.

During my university years, I took on many projects (from school, friends, and government departments). Although I have no idea about how to build an API Gateway Dashboard, I know that a web project includes "Requirements confirmation -> Product Design -> Code Development -> Testing -> Service Launch."

image

After communicating the product requirements with Ming Wen and Yusheng Wang several times, I created APISIX Dashboard V1 for the APISIX project: it does not have a sophisticated UI (as shown in the figure below), but it can satisfy the operation of the core APISIX concepts. At this time, I have a clearer understanding of the API Gateway and APISIX-related concepts.

image

It is worth mentioning that APISIX has dozens of built-in plugins to handle API requests and responses, and these plugins check the legality of plugin configuration parameters through JSONSchema. Take the limit-req plugin as an example, its JSONSchema rules are as follows.

local schema = {
    type = "object",
    properties = {
        rate = {type = "number", exclusiveMinimum = 0},
        burst = {type = "number",  minimum = 0},
        key = {type = "string"},
        key_type = {type = "string",
            enum = {"var", "var_combination"},
            default = "var",
        },
        rejected_code = {
            type = "integer", minimum = 200, maximum = 599, default = 503
        },
        rejected_msg = {
            type = "string", minLength = 1
        },
        nodelay = {
            type = "boolean", default = false
        },
        allow_degradation = {type = "boolean", default = false}
    },
    required = {"rate", "burst", "key"}
}

When a user configures a plugin for a Route, to reduce the difficulty of understanding JSONSchema rules, we try to render form fields directly in the UI according to the schema description. However, the biggest challenge I encountered was dynamically generating the plugin configuration form in UI. Through research and testing, I customized a UI component that renders a given condition by receiving JSONSchema rules, and this component has received many positive user reviews.

In mid-2020, we plan to develop Dashboard V2 for the following principal reasons.

  1. With more and more plugins, the form component we maintain is not enough to cover all plugin scenarios. Also, we found the react-jsonschema-form library, a popular JSONSchema form generator component, and hope to use it to solve the problem of form generation.
  2. Dashboard V1 was developed independently by ourselves using Vue.js and ElementUI. Unfortunately, we modified a lot of source code files when adapting to the requirements of the Foundation release, and the code became not so easy to maintain for various reasons.
  3. Dashboard V1 is directly connected to Admin API (DP). However, we want to adopt a different architecture of DP and CP, so we need to develop a separate API Server for Dashboard.

Until today, Apache APISIX Dashboard is still slowly maintaining the V2 version.

I won't go into the details of the development process. Still, it is worth sharing that from 2019 to the end of 2020, there were very few web contributors to the Apache APISIX Dashboard and Website projects because the Apache APISIX API gateway is classified as middleware and most of the users are server-side developers.

Therefore, to solve the problem of many things with few contributors, I chose to use Ant Design as the UI component library and Ant Design Pro as the project scaffolding, directly because most Chinese developers dominated the community at that time, and using Ant Design as the base component of the project with clear documentation and high quality would lower the threshold for Chinese developers to contribute, the only disadvantage was that Ant Design is so popular in China that the Dashboard of many projects looks very similar.

image

As you can see from the screenshot below, the number of Dashboard contributors has increased significantly from mid-2020 to the end of the year. In addition, more contributors from China and India are adding to the Dashboard project, from a few international content modifications to large blocks of development. A few of these contributors have remarkable stories that I'll write about in separate posts.

image

Community

In 2016, I got involved in the freeCodeCamp Chinese community and worked with Miya and others to build several local city communities in China, including Chengdu, Shanghai, and Hangzhou, and made a lot of like-minded friends.

image

WechatIMG783

Since I joined the open-source project APISIX in 2019, I've contributed code to the project. Still, I've also followed and responded to user questions on GitHub and mailing lists and discussed with open source users. As users grew and discussions became more frequent, I suddenly felt a sense of "community."

The APISIX project was donated to the Apache Software Foundation, graduated from the foundation in 2020, and has many production use cases from significant company users in China. In addition, each of these events attracted the attention of many industry users, brought more users and contributors to the community, and brought more internal feedback and practice from production users to the project.

image

People build communities, and the Apache APISIX community is maintained by contributors, users, and communities from all over the world, with different languages and cultures. For the past three years, we have been doing things like:

  1. Recognize, promote, and popularize Apache culture.
  2. Host online or offline community meetups with a constant focus on user feedback.
  3. Helping contributors with different experiences to participate in the community.
  4. Continue optimizing the project and enriching the documentation to help users use the product better.

The Apache APISIX community has over 400 contributors with unremitting efforts and persistence! 🎉

image

When you become an Apache APISIX contributor, we will try to contact you and send you a perimeter as a token of our appreciation. In addition, whenever we receive news from contributors from different countries, we are excited and proud to be a part of the community they have contributed to!

image

image

Users

Apache APISIX belongs to the middleware category of infrastructure software facilities, and its users refer to enterprises using APIs worldwide.

In late 2019, Ke was the first known user of mega-traffic production, and has been handling over 100 million production traffic per day since then, with Apache APISIX performing very consistently.

Imagine how great it feels to have Apache APISIX behind every subway ride, airplane trip, coffee/tea purchase, watch video, and office software use, all of these digital services!

We have more users that we don't know yet,but please visit https://apisix.apache.org/showcase to learn more current users.

image

认可

In 2019, I was involved in the APISIX project because it was an open-source project. In October 2019, Ming Wen told me that the APISIX project had successfully donated the project to the Apache Software Foundation, called apache/incubator-apisix, before graduation. I was invited to the initial committer list. I remember very clearly: that day in the office, I printed the Apache CLA file with joy in my heart, signed it, took pictures, uploaded it, and got my Apache ID juzhiyuan!!! 🎉

After graduating from the Apache Software Foundation in 2020, I became an official Apache APISIX PMC member. In addition to contributing code, I have been active in community building, helping, observing new contributors, and electing good contributors to the Committer. So far, I have successfully elected eight good Committers, 2 of which are now members of Apache APISIX PMC.

image

It was a surprise to receive an invitation to become an Apache Member one morning in March 2022! It means that I not only care about the Apache APISIX community but also have more responsibilities and obligations to work with you to maintain and develop the Apache Software Foundation. For this reason, I was interviewed by the community, and please read Zhiyuan Ju: The story of Apache Member.

image

Timeline

image

image

image

image

image

image

Summer 2020

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image