Hi Community, Apache APISIX Dashboard[1] project was created in July 2019 to manage Apache APISIX[2] through the UI and has iterated through 2 major versions since its creation.
In the first version (V1 for short) Dashboard was a purely web-based project, providing only the web UI that would call the Admin API exposed by Apache APISIX to get data and manipulate data when accessed by users. Since the Apache APISIX project is used on the server-side, there are very few contributors to the Dashboard project. In terms of product features, I was not familiar with the API gateway, but through continuous communication with Yensheng and Ming Wen, I knew roughly what kind of product it was, so I released the first version. v1 functionally realized the display and basic management of APISIX internal resources and collected a batch of user feedbacks on the product, but due to various reasons (unfamiliar with LICENSE rules, redundant code, UI not meeting the rapid development of APISIX, increasing number of contributors at the front and back ends of the project, etc.), the second version (referred to as V2) was started in June 2020. The goal of the V2 version is to separate DP from CP, i.e. remove AdminAPI from DP and let Dashboard control DP completely, so CP includes two sub-projects, Web and ManagerAPI. The following two projects are introduced separately. The Web project is initialized based on the Ant Design Pro[3] scaffold for the following reasons. 1. Ant Design Pro is a scaffolding framework built on the Ant Design[4] component library, and they are the most functional, comprehensive, and actively maintained among open-source-related projects. 2. Ant Design Pro was based on TypeScript and UmiJS, which supported many middle and backend projects of Ant Group services. 3. Most of the developers of Dashboard were from China at that time, and the domestic developer group of Ant Design Pro was very active. In fact, in the process of developing V2 in a big way, we quickly built the functional modules of V1 with Ant Design's rich component library and attracted a group of developers who were familiar with the framework to participate in the project. In addition, Ant Design Pro has been polished in a large number of middle and backend scenarios, so it has precipitated a series of common capabilities, and Dashboard has also taken advantage of many of them to reduce repeated development. The API project was developed using Golang, and a set of APIs consistent with AdminAPI was redeveloped, and control surface-related APIs such as login and plugin orchestration was added, I'm not going into the details. At this point, the V2 version of Dashboard includes Web language and server-side language such as Golang. At the beginning of the release, there were indeed many Web developers and Golang engineers involved, but the API was not sufficiently architected and the API service was not well maintained over time. Over time, it became a practical situation of stacking features, and coupled with multiple instability issues, the following issues emerged as a result of not having a post-experience, described separately. User Experience: 1. The API exposed by ManagerAPI is not as stable as AdminAPI due to problems such as insufficient early testing and design flaws. This leads to the existing architecture, APISIX exposed AdminAPI and ManagerAPI will make users confused: which one to use? 2. AdminAPI relies on JSONSchema to check the input, when the plugins and configurations in APISIX change, you have to copy JSONSchema data to Dashboard manually, which leads users to frequently ask why they can't see the changed plugins in Dashboard. The community needs to spend a lot of money to guide users to manually refresh the Schema file.[5] 3. APISIX releases versions quickly (usually once a month), but Dashboard tends to lag behind APISIX for a while, so how can Dashboard be made compatible with multiple versions well? Even one Dashboard can manage multiple versions of APISIX. 4. More: [6][7][8]. Developer Experience: 1. The lack of development documentation, developers usually need to fumble with the source code for development, poor experience. 2. The lack of up-to-date API documentation makes it difficult for users to find the exact parameters when they want to use Headless mode (without using the UI). 3. Ant Design Pro in the Web relies on numerous components, and although the UI is convenient, it is very time-consuming to build in a development environment (especially for Intel chips), which will deter many Web developers. I personally think that after one year of development and iteration, the V2 version has explored the full API lifecycle and low code capability compared to V1, and also realized a beautiful and user-friendly Dashboard with Ant Design's high-quality UI component library, in addition to collecting many features and scenarios that may be used by production users in enterprises from the community. After a long time of thinking and the voice of most community users, I personally proposed to start planning a new version of Dashboard (V3 for short). The following is my *general idea* after combining community feedback and practical problems. 1. Lightweight: for users, it can be quickly installed and deployed with detailed and clear documentation; for developers, the development environment can be built in a short time and the architecture is designed for easy secondary development. 2. Flexible: highly scalable, with priority given to docking popular open source components, followed by custom development; internal capabilities are pluggable. 3. Reliable: stable and reliable enough through rich and detailed E2E testing, with a fixed and predictable frequency of product updates and releases. 4. Feature Rich: feature-rich and prioritized scenarios that allow users to truly use it out of the box and put it in the production environment within the enterprise. Welcome to share your ideas and thoughts about what could make Dashboard better, and I will share my complete proposal with our community :) May I know what's your opinion on this topic? [1] https://github.com/apache/apisix-dashboard [2] https://github.com/apache/apisix [3] https://pro.ant.design/ [4] https://ant.design/ [5] https://apisix.apache.org/docs/dashboard/FAQ/#4-after-modifying-the-plugin-schema-or-creating-a-custom-plugin-in-apache-apisix-why-cant-i-find-it-on-the-dashboard [6] https://lists.apache.org/thread/yq276fbbbflvhd6gmc5mzljcoytmzlh1 [7] https://lists.apache.org/thread/d17fgc7w9lzvx1pkmg6nqrz7hx9k3oy2 [8] https://lists.apache.org/thread/yg5zjy5b8g0o1dpqzv9gwdwff2h83kfl Best Regards! @ Zhiyuan Ju <https://github.com/juzhiyuan>