Returning to open source, the inner monologue of Java and Go developers contributing to AI

Dao Feng & Shi Mian

|

May 19, 2025

|

Share on X

Introduction

Writing this article immediately brings my thoughts back to an afternoon in 2018, when I wrote an article titled "How to Contribute to Open Source Projects." Due to adjustments in my work focus and shifts, I have not been continuously involved in open source. However, looking back, I’ve met many technical peers through open source, which has been a significant gain over the years. Recently, due to work adjustments again, I have had a new opportunity in open source: Higress. This article will share my understanding of Higress from a Day 0 perspective and how to participate in open source contributions.

Overview

Higress is a cloud-native API gateway based on Istio and Envoy, equipped with advanced AI capabilities. It provides an extensible architecture through Wasm plugins written in Go/Rust/JS and has console modules based on Node and Java, allowing users to visualize their use of Higress.

Higress was initially developed by Alibaba to address the issues caused by Tengine configuration reload on long connections, as well as the insufficient load balancing capabilities of gRPC/Dubbo services, and was open-sourced in 2022. Nowadays, Alibaba Cloud's cloud-native API gateway, MSE cloud-native gateway, and proprietary cloud Feitian enterprise version API gateway series all adopt the unified architecture of Higress, making it the foundation of Alibaba Cloud's API gateway products.

This article mainly targets developers and open-source enthusiasts, sharing some fundamental principles of Higress around its basic architecture. Everyone is welcome to co-build Higress.

Higress Product Introduction

Gateway products may have many prefixes based on different scenarios and stages of development; essentially, the gateway is primarily a proxy layer that evolves with the application architecture.

Just like the transition from a monolithic application to SOA architecture with the term ESB bus, to microservices gateways in the microservices architecture phase, and to cloud-native gateways under K8s, evolving to the current AI times with AI gateways. It's clear that not only Higress follows this trend; traditional API gateway products and both domestic and international API gateway cloud vendors have seamlessly dressed their user-facing pages in the guise of AI gateways as well. According to user scenarios, Higress can have the following several positions:

AI Gateway

AI gateways have some essential changes compared to traditional API gateways:


Traditional API Gateway

AI Gateway

Request-Response Model

No streaming processing requirements, mostly HTTP

Streaming processing, SSE/Streamable protocol support

Content Awareness Depth

Traffic forwarding based on header/query/path components

Supports OpenAI protocols, multi-model collaboration, prompt rewriting, possibly requiring semantic-level understanding of traffic

Flow Control Differences

Query Per Second

Token Per Second

Content Security

Defends against DDoS, SQL injection, and other attack methods

Defends against prompt injections, data and model poisoning, unlimited resource consumption, and other attack methods

The AI gateway, with the evolution of the AI-native architecture, will provide various AI atomic capabilities and situational competence, helping enterprise applications achieve smart upgrades. Meanwhile, as more and more AI concepts are proposed, such as MCP and A2A, to solve corresponding scenario problems, Higress also provides solutions for these scenarios, where we might call Higress the MCP gateway or Agent gateway.

API Gateway

API First is a development paradigm centered on interface design, advocating for prioritizing the construction of standardized and reusable API interfaces during the early stages of application development to promote efficient integration and ecological collaboration between systems through contractual communication. Higress provides core capabilities for API lifecycle management, traffic governance, security control, multi-end adaptation, and observability, specifically including: contract-first design based on OpenAPI standards, elastic assurance mechanisms for dynamic routing/traffic limiting, OAuth2/JWT identity authentication systems, protocol conversion adaptation (HTTP/gRPC/Dubbo), and monitoring and alerting capabilities.

High-quality API management capabilities not only resolve data silo issues between heterogeneous systems but also provide standardized channels for enterprises to build AI training data pipelines, implement model service orchestration, and resource quota management, becoming a critical hub connecting traditional business data and intelligent applications.

Ingress Traffic Gateway

The K8s Ingress Controller provides a good extension mechanism; the name Higress itself indicates that it must support Ingress as well as Gateway API. If you are an existing nginx-ingress user, you can migrate to Higress at a low cost, as Higress is fully compatible with nginx-ingress annotations.

Microservices Gateway

Built on the Alibaba open-source ecosystem, Higress has good adaptation with microservices middleware ecosystems and can connect to registration centers like Nacos, Zookeeper, Consul, and Eureka, supporting Dubbo and gRPC protocol conversion, enabling it to directly interface with microservices applications built on frameworks like Dubbo and Spring Cloud.

Higress Deployment Architecture

Using K8s to deploy Higress as an example, introducing Higress's basic components.

  • higress-console control panel

  • higress-controller control plane

  • higress-gateway data plane

Configuration information is mainly stored in K8s etcd in the form of CRDs, without relying on additional storage components.

higress-controller is a core component used to listen to K8s APIServer, completing the necessary rules transformations: K8s Ingress -> Istio API -> xDS, and then realizing configuration delivery. higress-controller consists of two containers with the following functions:

  • higress-core: Listens to Kubernetes API, converting ingress & higress crd contents into Istio API.

  • pilot: Implements the capabilities of the istiod pilot module. Converts Istio API into xDS and sends it to Envoy.

higress-gateway is another core component that integrates Envoy, used for the actual traffic forwarding in the data plane.

Higress Open Source Contribution Guide

Learn About Higress

Higress Main Site: https://higress.cn/

Higress AI Gateway Main Site: https://higress.ai/

Quick Start: https://higress.cn/docs/latest/user/quickstart/

It is recommended to deploy Higress in a standard K8s cluster, which is also the recommended scheme for Higress production deployment:

helm repo add higress.io https://higress.cn/helm-charts
helm install higress -n higress-system higress.io/higress --create-namespace --render-subchart-notes

You can complete a one-click installation of Higress with just two commands. If you do not have a ready K8s cluster to use, using Kind to set up a local K8s cluster is highly recommended. You can refer to the steps in Quick Start for installing Kind (or any other local K8s deployment options are also acceptable). Compared to a standard K8s cluster, the local solution only requires the addition of the –set global.local=true switch.

helm repo add higress.io https://higress.cn/helm-charts
helm install higress -n higress-system higress.io/higress --create-namespace --render-subchart-notes --set global.local=true --set global.o11y.enabled=false

Having a Higress environment is the first step in contributing to open source, allowing you to quickly experience Higress functionality and validate the capabilities you are interested in. For example:

  • Configure the httpbin.org service to validate simple routing scenarios.

  • Configure models such as DeepSeek/Qianwen as service proxies to experience Higress's support for various AI providers' proxy capabilities.

  • Combine AI clients like cherrystudio/deepchat/LobeChat with your own Higress.

  • Configure AI plugins such as ai-proxy/ai-token-ratelimit provided by Higress to experience Higress's governance capabilities for AI traffic.

You can try to find functionality documentation that interests you in the user guide at https://higress.cn.

Component Contribution Guide

Various components and modules of Higress support multiple programming languages, so regardless of which mainstream programming language you are familiar with or if you're interested in CICD or documentation, it's all a contribution to the Higress open source.

higress-console

The backend is built on Java SpringBoot, and the frontend is built on NodeJS Ice.

Refer to: "How to Develop and Debug the Higress Console Locally" https://higress.cn/blog/console-dev/

Repository address: https://github.com/higress-group/higress-console

higress-controller

The control plane program of Higress connects to Istio to generate Istio API objects, which are sent to Istio via xDS protocol.

To compile a binary that can run in the local environment, execute <font style="color:rgb(53, 56, 65);background-color:rgb(237, 238, 243);">make build</font> in the higress repository directory.

Refer to https://higress.cn/docs/latest/dev/architecture/

higress-gateway

The upstream of the higress data plane is Envoy; there are rarely demands to modify the Envoy core.

Plugin Development

Higress provides a rich plugin extension mechanism; plugins are located at https://github.com/alibaba/higress/tree/main/plugins.

The core plugins are mainly developed using Go; you can refer to "Developing WASM Plugins Using GO Language" https://higress.cn/docs/latest/user/wasm-go for development.

Documentation Contribution

The official Higress repository is higress-group.github.io, where the official documentation and blog are maintained through markdown files in this project. If you need to add or modify documentation content, you can complete this by submitting a PR to the project.

Repository address: https://github.com/higress-group/higress-group.github.io

Operations

Higress supports helm deployment, with helm templates located at:

https://github.com/alibaba/higress/tree/main/helm

https://github.com/higress-group/higress-console/tree/main/helm

Higress also supports operations via AI; we can construct the higress-ops-mcp-server to provide service through mcp server for large model calls. Additionally, Higress supports operations via the Higress command-line tool, allowing for quick deployment and operations of the Higress cluster via hgctl.

Repository address: https://github.com/higress-group/higress-ops-mcp-server

Repository address: https://github.com/higress-group/hgctl

Start Contributing

No matter the reasons for contributors:

  • Solidifying skills

  • Making friends

  • Building personal influence

  • Carrying on the spirit of open source

  • Job requirements

Higress warmly welcomes your participation. It is important to note that not only submitting code counts as an open source contribution. Submitting issues encountered during the use of Higress, adding user documentation for new features, supplementing any missing documents during usage, reporting security issues, adding test cases, participating in various SIG DingTalk interest groups organized by the Higress community, and proposing suggestions for the future development of Higress are all contributions as well.

If you have a preliminary understanding of Higress or wish to learn it with certain goals, you can try to claim issues of interest from the issue list on GitHub at https://github.com/alibaba/higress/issues. Claiming issues is the main way to contribute.

Open Source Best Practices

Effective Communication

No matter the purpose for which you participate: whether it is a one-time contribution or a permanent addition to the community, communicating and interacting with others is a skill you must cultivate to succeed in the open source circle.

Before you open an issue or PR, or ask questions in a group chat, please keep the following suggestions in mind; they will make your work more efficient.

Provide context to help others quickly understand. For example, if you encounter an error while running a program, explain what you did and describe how to reproduce the error. If you are submitting a new idea, explain why you think so and whether it's beneficial for the project (not just for you!).

😇 "When I do Y, X doesn't work"

😢 "X is broken! Please fix it."

Be prepared before taking further action. It's okay to not know, but try to show that you have made an effort. Before seeking help, please ensure you have read the project’s README, documentation, issues (both open and closed), mailing lists, and searched online. People appreciate strong curiosity and are willing to help when they see it.

😇 "I’m unsure how X is implemented; I’ve checked the relevant help documentation, but found nothing."

😢 "What should I do about X?"

**Keep your requests short and to the point.** Just like sending an email, each contribution—no matter how simple—requires others to review it. Many projects receive numerous requests, while there are fewer people offering help. Trust me, by keeping it concise, you greatly increase your chances of receiving help from others.

😇 "I would love to write an API tutorial."

😢 "One day while driving on the highway and refueling at a gas station, I thought we should do this, but before I explain further, let me show you..."

**Ensure all communication is public.** Even for small matters, don’t DM maintainers unless you have to share sensitive info (like security issues or severe faults). By keeping discussions public, many people can learn from the feedback exchanged.

😇 (Comment) "@Maintainer, hello! How should we deal with this PR?"

😢 (Email) "Hello, I apologize for sending this email, but I really hope you can take a look at my submitted PR."

**Ask questions boldly (but cautiously!).** Everyone starts as a newbie in the community, and even very experienced contributors are new when entering a new project. For the same reasons, even long-term maintainers may not know every part of a project. Show them the same patience, and you will receive the same in return.

😇 "Thank you for reviewing this bug; I followed your advice, and here are the results."

😢 "Why don’t you fix my issue? Isn’t this your project?"

**Respect the community's decisions.** Your ideas may differ from the community's priorities and vision. They may provide feedback and reasons for the final decisions on your ideas. In this case, you should engage in active discussions and seek compromise. Maintainers must carefully consider your ideas. But if you really cannot agree with the community's approach, your voice matters! Keep your own branch or start over.

😇 "You can't support my use case; I'm disappointed, but your explanation only applies to a small portion of users, and I understand why. Thank you for your patience listening."

😢 "Why don’t you support my use case? This is unacceptable!"

Open source is a collaborative effort of a diverse group of people from around the world. The challenges faced are cross-linguistic, cross-cultural, across different geographical locations, and time zones. Moreover, written communication can be particularly challenging, as it fails to convey tone and emotion. Please keep conversations kind! Remain polite while urging an idea, requesting more context, or clarifying your position. Since you found what you needed on the internet, try to make it better!

Create Issues

You should create an issue in the following situations:

  • Reporting an error you cannot solve

  • Discussing a high-level topic or idea

  • Anticipating the implementation of a new feature or another project's idea

Here are some practical tips for issue communication:

  • If you see an open issue that you plan to resolve, add a comment letting others know you will work on it and respond promptly. This avoids duplicate efforts.

  • If an issue has been open for a long time, it's possible someone is already working on it or it has already been resolved, so please add a comment. Before starting work, it's best to check.

  • If you create an issue but resolve it shortly after, be sure to add a comment letting others know, then close the issue. Documentation itself is a contribution to the community.

Create Pull Requests

Be sure to use a PR in the following situations:

  • Fixing defects (for example, correcting typos, broken links, or other obvious errors)

  • Starting a task someone requested or something previously discussed in an issue

It is highly recommended to pick tasks in issues that interest you and that you can handle, add a comment, and the maintainer or other authorized roles will assign you. Also, ensure that certain issues haven't already been claimed by others.

A PR does not mean work is completed. It’s usually advisable to open a PR early to allow others to provide feedback. Before sending a pull request, sync the GitHub repository with the remote repository to make the pull request clear and straightforward; specific steps are shown below:

git remote add upstream git@github.com:alibaba/higress.git
git fetch upstream
git rebase upstream/main
git checkout -b your_awesome_patch
... add some work
git push origin your_awesome_patch

Higress AI Landscape

  • MCP service management. The Higress open-source console will directly provide out-of-the-box MCP service management access, supporting three types of scenarios: OpenAPI to MCP, DB to MCP, SSE/Streamable MCP direct routing capability. With this feature, users can quickly build their own MCP Marketplace based on Higress. 【End of May to Early June】

  • Nacos MCP Registry integration. Nacos 3.0 has begun supporting Higress integration and will further optimize the integration plan to support importing MCP services from Nacos 3.0, making the Higress x Nacos 3.0 integration smoother. 【June to July】

  • Agent management. Higress will provide AI Agent application management capabilities for multiple scenarios, enabling discovery of Agent applications, managing Agent Cards, A2A protocol conversions, and context memory management, among other core capabilities aimed at the A2A protocol, helping developers rapidly build AI applications with low-code methods. In terms of capability planning, Higress is advancing dynamic Prompt engineering, a pluggable toolkit, Agent application grayscale strategies, and multi-Agent collaborative orchestration based on A2A protocols. 【June to September】

  • AI API management. Higress serves as an AI-native gateway, offering comprehensive AI API management solutions through API monetization management, unified authentication and traffic governance, and full-link observability. Additionally, Higress is planning to build an MCP open market and an Agent open market, accelerating the AI application ecosystem and helping developers quickly build and deploy intelligent Agent applications. 【June to September】

Higress Community

If you have intentions of contributing to open source or have questions about using Higress, you can join the group for discussions. Higress Community Communication Group 3, DingTalk Group Number: 107690002780.

Contact

Follow and engage with us through the following channels to stay updated on the latest developments from higress.ai.

Contact

Follow and engage with us through the following channels to stay updated on the latest developments from higress.ai.

Contact

Follow and engage with us through the following channels to stay updated on the latest developments from higress.ai.

Contact

Follow and engage with us through the following channels to stay updated on the latest developments from higress.ai.