diff --git a/client-feature-matrix/index.mdx b/client-feature-matrix/index.mdx
index 819d7b3aeca2..2a47afdd4ce1 100644
--- a/client-feature-matrix/index.mdx
+++ b/client-feature-matrix/index.mdx
@@ -26,7 +26,15 @@ import {
+### Reader
+
+
+
+### TableView
+
+
+
-See details and full version [here](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit?usp=sharing)
+For how to update this page, see [Pulsar Contribution Guide](/contribute/site-intro/#how-to-update-reference-pages).
diff --git a/contribute/document-contribution.md b/contribute/document-contribution.md
index cbe5d84fe22f..1a236015ffa7 100644
--- a/contribute/document-contribution.md
+++ b/contribute/document-contribution.md
@@ -31,15 +31,15 @@ This is available for 2.8.2 and later versions.
If you want to update [Pulsar reference docs](pathname:///reference/), you should update the corresponding source files.
-* Some reference docs are generated from code **automatically**. If you want to update the docs, you need to update the source code files.
-* Some configuration docs are updated **manually** using markdown files.
+- Some reference docs are generated from code **automatically**. If you want to update the docs, you need to update the source code files.
+- Some configuration docs are updated **manually** using markdown files.
### Update configuration docs
Docs for configs of bundled components are generated from command-line tools **automatically**:
| Components | Update where ... |
-|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Broker | [org.apache.pulsar.broker.ServiceConfiguration](https://github.com/apache/pulsar/blob/master/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java) |
| WebSocket | [org.apache.pulsar.websocket.service.WebSocketProxyConfiguration](https://github.com/apache/pulsar/blob/master/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketProxyConfiguration.java) |
| Proxy | [org.apache.pulsar.proxy.server.ProxyConfiguration](https://github.com/apache/pulsar/blob/master/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java) |
@@ -52,7 +52,7 @@ Docs for configs of bundled components are generated from command-line tools **a
Docs for configs of external components (whose source code is hosted outside the Pulsar repositories) are updated **manually**:
| Components | Update where ... |
-|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| BookKeeper | [reference-configuration-bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-bookkeeper.md) |
| Log4j | [reference-configuration-log4j.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-log4j.md) |
| Log4j shell | [reference-configuration-log4j-shell.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-log4j-shell.md) |
@@ -63,7 +63,7 @@ Docs for configs of external components (whose source code is hosted outside the
Docs for bundled Java-based command-line tools are generated **automatically**:
| Components | Update where… |
-|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| pulsar | Different subcommands of [bin/pulsar](https://github.com/apache/pulsar/blob/master/bin/pulsar) are updated in different code files |
| pulsar-admin | [Classes under the admin command-line folder](https://github.com/apache/pulsar/tree/master/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli) |
| pulsar-client | [Classes under the client command-line folder](https://github.com/apache/pulsar/tree/master/pulsar-client-tools/src/main/java/org/apache/pulsar/client/cli) |
@@ -72,7 +72,7 @@ Docs for bundled Java-based command-line tools are generated **automatically**:
Docs for external command-line tools or bare scripts are updated **manually**:
| Components | Update where… |
-|---------------|--------------------------------------------------------------------------------------------------------------------------|
+| ------------- | ------------------------------------------------------------------------------------------------------------------------ |
| pulsar-shell | [pulsar-shell.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/pulsar-shell/pulsar-shell.md) |
| pulsar-daemon | [pulsar-daemon.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/pulsar-daemon/pulsar-daemon.md) |
| bookkeeper | [bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/bookkeeper/bookkeeper.md) |
@@ -80,8 +80,9 @@ Docs for external command-line tools or bare scripts are updated **manually**:
## Update feature matrix
Pulsar feature matrix introduces the features supported by language-specific clients and functions. It includes:
-* [Client Feature Matrix](pathname:///client-feature-matrix)
-* [Function Feature Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=328808194)
+
+- [Client Feature Matrix](pathname:///client-feature-matrix)
+- [Function Feature Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=328808194)
You need to update the feature matrix as soon as your related commits get merged. The workflow is illustrated as follows.
@@ -93,7 +94,7 @@ You need to update the feature matrix as soon as your related commits get merged
:::note
-* [Client Feature Matrix](pathname:///client-feature-matrix) is in the transition phase from the spreadsheet to the webpage. For how to update it, see [How to update data-driven pages](site-intro.md#how-to-update-data-driven-pages).
-* If you have problems in editing the spreadsheet of [Function Feature Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=328808194), you can reach out to `dev@pulsar.apache.org`.
+- For how to update the [Client Feature Matrix](pathname:///client-feature-matrix), see [How to update data-driven pages](site-intro.md#how-to-update-data-driven-pages).
+- If you have problems in editing the spreadsheet of [Function Feature Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=328808194), you can reach out to `dev@pulsar.apache.org`.
-:::
\ No newline at end of file
+:::
diff --git a/data/matrix.js b/data/matrix.js
index a007b8733132..55054149e586 100644
--- a/data/matrix.js
+++ b/data/matrix.js
@@ -786,27 +786,97 @@ module.exports = {
},
{
Feature: "Seek",
- Java: 2,
- "C++": 2,
- Go: 2,
- Python: 1,
- Nodejs: 1,
- "C#/DotPulsar": 2,
- Websocket: 0,
- REST: 0,
- "NET(C#/F#/VB)": 2,
+ Children: [
+ {
+ Feature: "by timestamp",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 0,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "by messageID",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Inclusive/Non-inclusive",
+ Java: 2,
+ "C++": 0,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ ],
},
{
Feature: "Compression",
- Java: 2,
- "C++": 2,
- Go: 1,
- Python: 2,
- Nodejs: 2,
- "C#/DotPulsar": 2,
- Websocket: 1,
- REST: 0,
- "NET(C#/F#/VB)": 2,
+ Children: [
+ {
+ Feature: "LZ4",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 2,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "ZLIB",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "ZSTD",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "SNAPPY",
+ Java: 2,
+ "C++": 2,
+ Go: 0,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ ],
},
{
Feature: "Compaction",
@@ -822,15 +892,104 @@ module.exports = {
},
{
Feature: "Schema",
- Java: 2,
- "C++": 1,
- Go: 1,
- Python: 1,
- Nodejs: 1,
- "C#/DotPulsar": 1,
- Websocket: 0,
- REST: 0,
- "NET(C#/F#/VB)": 1,
+ Children: [
+ {
+ Feature: "Primitive",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 2,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Avro",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "JSON",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 2,
+ Nodejs: 2,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Protobuf",
+ Java: 2,
+ "C++": 0,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Protobuf-native",
+ Java: 2,
+ "C++": 0,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Native avro",
+ Java: 2,
+ "C++": 0,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 0,
+ },
+ {
+ Feature: "KeyValue",
+ Java: 2,
+ "C++": 2,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Autoschema",
+ Java: 2,
+ "C++": 0,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ ],
},
{
Feature: "End-to-end encryption",
@@ -849,31 +1008,120 @@ module.exports = {
{
Feature: "Compaction",
Java: 2,
- "C++": 0,
+ "C++": 2,
Go: 2,
- Python: 2,
+ Python: 0,
Nodejs: 0,
"C#/DotPulsar": 0,
Websocket: 0,
REST: 0,
- "NET(C#/F#/VB)": 0,
+ "NET(C#/F#/VB)": 2,
},
{
Feature: "Schema",
- Java: 1,
- "C++": 0,
- Go: 1,
- Python: 0,
- Nodejs: 0,
- "C#/DotPulsar": 0,
- Websocket: 0,
- REST: 0,
- "NET(C#/F#/VB)": 1,
+ Children: [
+ {
+ Feature: "Primitive",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Avro",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "JSON",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Protobuf",
+ Java: 2,
+ "C++": 2,
+ Go: 2,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Protobuf-native",
+ Java: 0,
+ "C++": 0,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 0,
+ },
+ {
+ Feature: "Native avro",
+ Java: 0,
+ "C++": 0,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 0,
+ },
+ {
+ Feature: "KeyValue",
+ Java: 2,
+ "C++": 2,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ {
+ Feature: "Autoschema",
+ Java: 2,
+ "C++": 2,
+ Go: 0,
+ Python: 0,
+ Nodejs: 0,
+ "C#/DotPulsar": 0,
+ Websocket: 0,
+ REST: 0,
+ "NET(C#/F#/VB)": 2,
+ },
+ ],
},
{
Feature: "Listener",
Java: 2,
- "C++": 0,
+ "C++": 2,
Go: 2,
Python: 0,
Nodejs: 0,