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>

Reply via email to