This is an automated email from the ASF dual-hosted git repository.

wangweipeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory-site.git


The following commit(s) were added to refs/heads/main by this push:
     new aab931c2 release doc version 0.10 (#232)
aab931c2 is described below

commit aab931c209d86b29e3d58ea0a3803029bba73aa3
Author: weipeng <[email protected]>
AuthorDate: Tue Jun 3 22:18:12 2025 +0800

    release doc version 0.10 (#232)
    
    Now we rename the repo to fory, but the docs for the old version should
    be keep. This PR release the current doc to version 0.10 by command `
    npm run docusaurus docs:version 0.10` and the codes were generated by
    the command.
---
 ...tastring-space-efficient_encoding_for_string.md |   2 +-
 blog/2024-07-23-fury_0_6_0_release.md              |   2 +-
 blog/2024-08-04-fury_0_7_0_release.md              |   2 +-
 blog/2024-09-12-fury_0_7_1_release.md              |   2 +-
 blog/2024-10-04-fury_0_8_0_release.md              |   2 +-
 blog/2024-11-10-fury_0_9_0_release.md              |   2 +-
 blog/2025-02-16-fury_0_10_0_release.md             |   2 +-
 blog/2025-04-15-fury_0_10_1_release.md             |   2 +-
 blog/2025-05-06-fury_0_10_2_release.md             |   2 +-
 blog/2025-05-27-fury_0_10_3_release.md             |   2 +-
 docs/community/how_to_join_community.md            |   2 +-
 .../01-Introduction}/benchmark.md                  |   0
 .../01-Introduction}/features.md                   |   0
 .../01-Introduction}/introduction.md               |   0
 docs/{start => docs/02-Start}/install.md           |   0
 docs/{start => docs/02-Start}/usage.md             |   0
 docs/{guide => docs/03-Guide}/DEVELOPMENT.md       |   0
 docs/{guide => docs/03-Guide}/graalvm_guide.md     |   0
 .../03-Guide}/java_serialization_guide.md          |   0
 docs/{guide => docs/03-Guide}/row_format_guide.md  |   0
 docs/{guide => docs/03-Guide}/scala_guide.md       |   0
 .../03-Guide}/xlang_serialization_guide.md         |   0
 .../{guide => docs/03-Guide}/xlang_type_mapping.md |   2 +-
 docs/specification/xlang_serialization_spec.md     |   2 +-
 docusaurus.config.ts                               |  28 +-
 i18n/en-US/code.json                               |  44 ++
 .../docusaurus-plugin-content-docs/current.json    |  12 +
 i18n/en-us/docusaurus-theme-classic/footer.json    |   6 +-
 i18n/en-us/docusaurus-theme-classic/navbar.json    |  10 +-
 .../current/community/how_to_join_community.md     |   2 +-
 .../01-Introduction}/benchmark.md                  |   0
 .../01-Introduction}/features.md                   |   0
 .../01-Introduction}/introduction.md               |   0
 .../current/{start => docs/02-Start}/install.md    |   0
 .../current/{start => docs/02-Start}/usage.md      |   0
 .../{guide => docs/03-Guide}/DEVELOPMENT.md        |   0
 .../{guide => docs/03-Guide}/graalvm_guide.md      |   0
 .../03-Guide}/java_serialization_guide.md          |   0
 .../{guide => docs/03-Guide}/row_format_guide.md   |   0
 .../{guide => docs/03-Guide}/scala_guide.md        |   0
 .../03-Guide}/xlang_serialization_guide.md         |   0
 .../{guide => docs/03-Guide}/xlang_type_mapping.md |   0
 .../version-0.10/community/community.md            |  85 +++
 .../community/how_to_join_community.md             |   2 +-
 .../version-0.10/community/how_to_release.md       | 531 ++++++++++++++++
 .../version-0.10/community/how_to_verify.md        | 121 ++++
 .../docs/01-Introduction}/benchmark.md             |   0
 .../docs/01-Introduction}/features.md              |   0
 .../docs/01-Introduction}/introduction.md          |   0
 .../docs/02-Start}/install.md                      |   0
 .../start => version-0.10/docs/02-Start}/usage.md  |   0
 .../docs/03-Guide}/DEVELOPMENT.md                  |   0
 .../docs/03-Guide}/graalvm_guide.md                |   0
 .../docs/03-Guide}/java_serialization_guide.md     |   0
 .../docs/03-Guide}/row_format_guide.md             |   0
 .../docs/03-Guide}/scala_guide.md                  |   0
 .../docs/03-Guide}/xlang_serialization_guide.md    |   0
 .../docs/03-Guide}/xlang_type_mapping.md           |   0
 i18n/zh-CN/docusaurus-theme-classic/footer.json    |   6 +-
 sidebars.ts                                        |   4 +-
 src/pages/download/index.md                        |   2 +-
 src/pages/home/components/HomePageLanguageCard.tsx |   4 +-
 src/pages/home/components/HomepageHeader.tsx       |   2 +-
 versioned_docs/version-0.10/community/community.md |  91 +++
 .../community/how_to_join_community.md             |   2 +-
 .../version-0.10/community/how_to_release.md       | 705 +++++++++++++++++++++
 .../version-0.10/community/how_to_verify.md        | 122 ++++
 .../docs/01-Introduction}/benchmark.md             |   0
 .../version-0.10/docs/01-Introduction}/features.md |   0
 .../docs/01-Introduction}/introduction.md          |   0
 .../version-0.10/docs/02-Start}/install.md         |   0
 .../version-0.10/docs/02-Start}/usage.md           |   0
 .../version-0.10/docs/03-Guide}/DEVELOPMENT.md     |   0
 .../version-0.10/docs/03-Guide}/graalvm_guide.md   |   0
 .../docs/03-Guide}/java_serialization_guide.md     |   0
 .../docs/03-Guide}/row_format_guide.md             |   0
 .../version-0.10/docs/03-Guide}/scala_guide.md     |   0
 .../docs/03-Guide}/xlang_serialization_guide.md    |   0
 .../docs/03-Guide}/xlang_type_mapping.md           |   2 +-
 .../specification/java_serialization_spec.md       | 560 ++++++++++++++++
 .../version-0.10/specification/row_format_spec.md  |  24 +
 .../specification/xlang_serialization_spec.md      |   2 +-
 versioned_sidebars/version-0.10-sidebars.json      |  20 +
 versions.json                                      |   3 +
 84 files changed, 2367 insertions(+), 49 deletions(-)

diff --git a/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md 
b/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md
index c983e1d4..b45d71f1 100644
--- a/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md
+++ b/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md
@@ -26,7 +26,7 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 Meta string encoding uses `5/6` bits instead of `8` bits in utf-8 encoding for 
every chars. Since it uses less bits than utf8, it can bring
 **37.5% space cost savings** compared to utf-8 and has a smaller encoded 
binary size, which uses less storage and makes the network transfer faster.
 
-More details about meta string spec can be found in [Fury xlang serialization 
specification](https://fury.apache.org/docs/specification/fury_xlang_serialization_spec/#meta-string).
+More details about meta string spec can be found in [Fury xlang serialization 
specification](https://fury.apache.org/docs/docs/specification/fury_xlang_serialization_spec/#meta-string).
 
 ## Encoding Algorithms
 
diff --git a/blog/2024-07-23-fury_0_6_0_release.md 
b/blog/2024-07-23-fury_0_6_0_release.md
index b33496d8..2a4baa3c 100644
--- a/blog/2024-07-23-fury_0_6_0_release.md
+++ b/blog/2024-07-23-fury_0_6_0_release.md
@@ -5,7 +5,7 @@ authors: [chaokunyang]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.6.0 release. This is a major 
release that includes [35 
PR](https://github.com/apache/fury/compare/v0.5.1...v0.6.0) from 12 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.6.0 release. This is a major 
release that includes [35 
PR](https://github.com/apache/fury/compare/v0.5.1...v0.6.0) from 12 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## High light
 
diff --git a/blog/2024-08-04-fury_0_7_0_release.md 
b/blog/2024-08-04-fury_0_7_0_release.md
index ad1c00de..d0dab882 100644
--- a/blog/2024-08-04-fury_0_7_0_release.md
+++ b/blog/2024-08-04-fury_0_7_0_release.md
@@ -5,7 +5,7 @@ authors: [chaokunyang]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.7.0 release. This is a major 
release that includes [24 
PR](https://github.com/apache/fury/compare/v0.6.0...v0.7.0) from 7 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.7.0 release. This is a major 
release that includes [24 
PR](https://github.com/apache/fury/compare/v0.6.0...v0.7.0) from 7 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## High Light
 
diff --git a/blog/2024-09-12-fury_0_7_1_release.md 
b/blog/2024-09-12-fury_0_7_1_release.md
index b2f3df4a..7488909f 100644
--- a/blog/2024-09-12-fury_0_7_1_release.md
+++ b/blog/2024-09-12-fury_0_7_1_release.md
@@ -5,7 +5,7 @@ authors: [chaokunyang]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.7.1 release. This is a major 
release that includes [20 
PR](https://github.com/apache/fury/compare/v0.7.0...v0.7.1) from 8 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.7.1 release. This is a major 
release that includes [20 
PR](https://github.com/apache/fury/compare/v0.7.0...v0.7.1) from 8 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Features
 
diff --git a/blog/2024-10-04-fury_0_8_0_release.md 
b/blog/2024-10-04-fury_0_8_0_release.md
index a8f382eb..0d3f5da9 100644
--- a/blog/2024-10-04-fury_0_8_0_release.md
+++ b/blog/2024-10-04-fury_0_8_0_release.md
@@ -5,7 +5,7 @@ authors: [chaokunyang]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.8.0 release. This is a major 
release that includes [23 
PR](https://github.com/apache/fury/compare/v0.7.1...v0.8.0) from 7 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.8.0 release. This is a major 
release that includes [23 
PR](https://github.com/apache/fury/compare/v0.7.1...v0.8.0) from 7 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Highlights
 
diff --git a/blog/2024-11-10-fury_0_9_0_release.md 
b/blog/2024-11-10-fury_0_9_0_release.md
index 927760eb..5bb0786d 100644
--- a/blog/2024-11-10-fury_0_9_0_release.md
+++ b/blog/2024-11-10-fury_0_9_0_release.md
@@ -5,7 +5,7 @@ authors: [chaokunyang]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.9.0 release. This is a major 
release that includes [34 
PR](https://github.com/apache/fury/compare/v0.8.0...v0.9.0) from 14 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.9.0 release. This is a major 
release that includes [34 
PR](https://github.com/apache/fury/compare/v0.8.0...v0.9.0) from 14 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Highlight
 
diff --git a/blog/2025-02-16-fury_0_10_0_release.md 
b/blog/2025-02-16-fury_0_10_0_release.md
index c1c52345..d6762ac7 100644
--- a/blog/2025-02-16-fury_0_10_0_release.md
+++ b/blog/2025-02-16-fury_0_10_0_release.md
@@ -5,7 +5,7 @@ authors: [wangweipeng]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.10.0 release. This is a 
major release that includes [27 
PR](https://github.com/apache/fury/compare/v0.9.0...v0.10.0) from 16 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.10.0 release. This is a 
major release that includes [27 
PR](https://github.com/apache/fury/compare/v0.9.0...v0.10.0) from 16 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Highlight
 
diff --git a/blog/2025-04-15-fury_0_10_1_release.md 
b/blog/2025-04-15-fury_0_10_1_release.md
index cccbe1e0..cba37718 100644
--- a/blog/2025-04-15-fury_0_10_1_release.md
+++ b/blog/2025-04-15-fury_0_10_1_release.md
@@ -5,7 +5,7 @@ authors: [wangweipeng]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.10.1 release. This is a 
minor release that includes [14 
PR](https://github.com/apache/fury/compare/v0.10.0...v0.10.1) from 10 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.10.1 release. This is a 
minor release that includes [14 
PR](https://github.com/apache/fury/compare/v0.10.0...v0.10.1) from 10 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Features
 
diff --git a/blog/2025-05-06-fury_0_10_2_release.md 
b/blog/2025-05-06-fury_0_10_2_release.md
index 9d5781cb..f173bb83 100644
--- a/blog/2025-05-06-fury_0_10_2_release.md
+++ b/blog/2025-05-06-fury_0_10_2_release.md
@@ -5,7 +5,7 @@ authors: [liangliangsui]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.10.2 release. This is a 
minor release that includes [6 
PR](https://github.com/apache/fury/compare/v0.10.1...v0.10.2) from 2 distinct 
contributors. See the [Install](https://fury.apache.org/docs/start/install) 
Page to learn how to get the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.10.2 release. This is a 
minor release that includes [6 
PR](https://github.com/apache/fury/compare/v0.10.1...v0.10.2) from 2 distinct 
contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Features
 
diff --git a/blog/2025-05-27-fury_0_10_3_release.md 
b/blog/2025-05-27-fury_0_10_3_release.md
index 38f6e758..163abfd7 100644
--- a/blog/2025-05-27-fury_0_10_3_release.md
+++ b/blog/2025-05-27-fury_0_10_3_release.md
@@ -5,7 +5,7 @@ authors: [pandalee99]
 tags: [fury]
 ---
 
-The Apache Fury team is pleased to announce the 0.10.3 release. This is a 
minor release that includes [15 
PR](https://github.com/apache/fury/compare/v0.10.3...v0.10.3-rc2) from 4 
distinct contributors. See the 
[Install](https://fury.apache.org/docs/start/install) Page to learn how to get 
the libraries for your platform.
+The Apache Fury team is pleased to announce the 0.10.3 release. This is a 
minor release that includes [15 
PR](https://github.com/apache/fury/compare/v0.10.3...v0.10.3-rc2) from 4 
distinct contributors. See the 
[Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to 
get the libraries for your platform.
 
 ## Features
 
diff --git a/docs/community/how_to_join_community.md 
b/docs/community/how_to_join_community.md
index d41c2e71..6fbe7a7e 100644
--- a/docs/community/how_to_join_community.md
+++ b/docs/community/how_to_join_community.md
@@ -10,7 +10,7 @@ First of all, kudos to you for choosing to join the open 
source contribution ran
 
 The Fury team usually conducts development and issue maintenance on GitHub. 
Please open the [GitHub website](https://github.com/), click the `Sign up` 
button in the upper right corner, register your own account, and take the first 
step of your open source journey.
 
-In the [Fury repository](https://github.com/apache/fury), we have a 
[guide](https://fury.apache.org/zh-CN/docs/community/) for all open source 
contributors, introducing contents such as version management and branch 
management. **Please take a few minutes to read and understand it**.
+In the [Fury repository](https://github.com/apache/fury), we have a 
[guide](https://fury.apache.org/zh-CN/docs/docs/community/) for all open source 
contributors, introducing contents such as version management and branch 
management. **Please take a few minutes to read and understand it**.
 
 ## Your First Pull Request
 
diff --git a/docs/introduction/benchmark.md 
b/docs/docs/01-Introduction/benchmark.md
similarity index 100%
copy from docs/introduction/benchmark.md
copy to docs/docs/01-Introduction/benchmark.md
diff --git a/docs/introduction/features.md 
b/docs/docs/01-Introduction/features.md
similarity index 100%
copy from docs/introduction/features.md
copy to docs/docs/01-Introduction/features.md
diff --git a/docs/introduction/introduction.md 
b/docs/docs/01-Introduction/introduction.md
similarity index 100%
copy from docs/introduction/introduction.md
copy to docs/docs/01-Introduction/introduction.md
diff --git a/docs/start/install.md b/docs/docs/02-Start/install.md
similarity index 100%
copy from docs/start/install.md
copy to docs/docs/02-Start/install.md
diff --git a/docs/start/usage.md b/docs/docs/02-Start/usage.md
similarity index 100%
copy from docs/start/usage.md
copy to docs/docs/02-Start/usage.md
diff --git a/docs/guide/DEVELOPMENT.md b/docs/docs/03-Guide/DEVELOPMENT.md
similarity index 100%
copy from docs/guide/DEVELOPMENT.md
copy to docs/docs/03-Guide/DEVELOPMENT.md
diff --git a/docs/guide/graalvm_guide.md b/docs/docs/03-Guide/graalvm_guide.md
similarity index 100%
copy from docs/guide/graalvm_guide.md
copy to docs/docs/03-Guide/graalvm_guide.md
diff --git a/docs/guide/java_serialization_guide.md 
b/docs/docs/03-Guide/java_serialization_guide.md
similarity index 100%
copy from docs/guide/java_serialization_guide.md
copy to docs/docs/03-Guide/java_serialization_guide.md
diff --git a/docs/guide/row_format_guide.md 
b/docs/docs/03-Guide/row_format_guide.md
similarity index 100%
copy from docs/guide/row_format_guide.md
copy to docs/docs/03-Guide/row_format_guide.md
diff --git a/docs/guide/scala_guide.md b/docs/docs/03-Guide/scala_guide.md
similarity index 100%
copy from docs/guide/scala_guide.md
copy to docs/docs/03-Guide/scala_guide.md
diff --git a/docs/guide/xlang_serialization_guide.md 
b/docs/docs/03-Guide/xlang_serialization_guide.md
similarity index 100%
copy from docs/guide/xlang_serialization_guide.md
copy to docs/docs/03-Guide/xlang_serialization_guide.md
diff --git a/docs/guide/xlang_type_mapping.md 
b/docs/docs/03-Guide/xlang_type_mapping.md
similarity index 98%
copy from docs/guide/xlang_type_mapping.md
copy to docs/docs/03-Guide/xlang_type_mapping.md
index b6acb9a9..1638e2ab 100644
--- a/docs/guide/xlang_type_mapping.md
+++ b/docs/docs/03-Guide/xlang_type_mapping.md
@@ -21,7 +21,7 @@ license: |
 
 Note:
 
-- For type definition, see [Type Systems in 
Spec](../specification/xlang_serialization_spec.md#type-systems)
+- For type definition, see [Type Systems in 
Spec](../docs/specification/xlang_serialization_spec.md#type-systems)
 - `int16_t[n]/vector<T>` indicates `int16_t[n]/vector<int16_t>`
 - The cross-language serialization is not stable, do not use it in your 
production environment.
 
diff --git a/docs/specification/xlang_serialization_spec.md 
b/docs/specification/xlang_serialization_spec.md
index 60925476..8f15e542 100644
--- a/docs/specification/xlang_serialization_spec.md
+++ b/docs/specification/xlang_serialization_spec.md
@@ -151,7 +151,7 @@ types.
 
 ### Type mapping
 
-See [Type mapping](../guide/xlang_type_mapping.md)
+See [Type mapping](../docs/guide/xlang_type_mapping.md)
 
 ## Spec overview
 
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 8df13af2..5d54aa23 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -97,21 +97,9 @@ const config: Config = {
         // },
         {
           type: 'docSidebar',
-          sidebarId: 'startSidebar',
+          sidebarId: 'docsSidebar',
           position: 'right',
-          label: 'Start',
-        },
-        {
-          type: 'docSidebar',
-          sidebarId: 'introductionSidebar',
-          position: 'right',
-          label: 'Introduction',
-        },
-        {
-          type: 'docSidebar',
-          sidebarId: 'guideSidebar',
-          position: 'right',
-          label: 'Guide',
+          label: 'Docs',
         },
         {
           type: 'docSidebar',
@@ -175,6 +163,12 @@ const config: Config = {
             }
           ]
         },
+        {
+          type: 'docsVersionDropdown',
+          position: 'right',
+          dropdownItemsAfter: [],
+          dropdownActiveClassDisabled: true,
+        },
         {
           href: 'https://github.com/apache/fury',
           position: 'right',
@@ -212,15 +206,15 @@ const config: Config = {
           items: [
             {
               label: 'Install',
-              to: '/docs/start/install',
+              to: '/docs/docs/start/install',
             },
             {
               label: 'Usage',
-              to: '/docs/start/usage',
+              to: '/docs/docs/start/usage',
             },
             {
               label: 'Benchmark',
-              to: '/docs/introduction/benchmark',
+              to: '/docs/docs/introduction/benchmark',
             },
           ],
         },
diff --git a/i18n/en-US/code.json b/i18n/en-US/code.json
index 87753931..88d8019f 100644
--- a/i18n/en-US/code.json
+++ b/i18n/en-US/code.json
@@ -273,5 +273,49 @@
   "theme.unlistedContent.message": {
     "message": "This page is unlisted. Search engines will not index it, and 
only users having a direct link can access it.",
     "description": "The unlisted content banner message"
+  },
+  "feature.highPerformance.title": {
+    "message": "High performance",
+    "description": "The title for the high performance feature"
+  },
+  "feature.highPerformance.description": {
+    "message": "Compared to other serialization frameworks, there is a 20~170x 
speed up.",
+    "description": "Description for the high performance feature"
+  },
+  "feature.easyToUse.title": {
+    "message": "Easy to use",
+    "description": "The title for the easy to use feature"
+  },
+  "feature.easyToUse.description": {
+    "message": "No need for DSL, you can use Fury effectively with your 
intuition.",
+    "description": "Description for the easy to use feature"
+  },
+  "feature.multiLanguages.title": {
+    "message": "Multi-languages",
+    "description": "The title for the multi-languages feature"
+  },
+  "feature.multiLanguages.description": {
+    "message": "Supports popular programming languages such as Java, Python, 
C++, Golang, Javascript, Rust, and more will be added in the future.",
+    "description": "Description for the multi-languages feature"
+  },
+  "homepage.githubButton": {
+    "message": "GitHub",
+    "description": "The GitHub button label on the homepage"
+  },
+  "homepage.getStartedButton": {
+    "message": "Get Started",
+    "description": "The Get Started button label on the homepage"
+  },
+  "theme.ErrorPageContent.title": {
+    "message": "This page crashed.",
+    "description": "The title of the fallback page when the page crashed"
+  },
+  "theme.blog.archive.title": {
+    "message": "Archive",
+    "description": "The page & hero title of the blog archive page"
+  },
+  "theme.blog.archive.description": {
+    "message": "Archive",
+    "description": "The page & hero description of the blog archive page"
   }
 }
diff --git a/i18n/en-us/docusaurus-plugin-content-docs/current.json 
b/i18n/en-us/docusaurus-plugin-content-docs/current.json
index dd30528d..a504aa40 100644
--- a/i18n/en-us/docusaurus-plugin-content-docs/current.json
+++ b/i18n/en-us/docusaurus-plugin-content-docs/current.json
@@ -2,5 +2,17 @@
   "version.label": {
     "message": "Next",
     "description": "The label for version current"
+  },
+  "sidebar.docsSidebar.category.Introduction": {
+    "message": "Introduction",
+    "description": "The label for category Introduction in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Start": {
+    "message": "Start",
+    "description": "The label for category Start in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Guide": {
+    "message": "Guide",
+    "description": "The label for category Guide in sidebar docsSidebar"
   }
 }
diff --git a/i18n/en-us/docusaurus-theme-classic/footer.json 
b/i18n/en-us/docusaurus-theme-classic/footer.json
index 14bccdcc..37b9e370 100644
--- a/i18n/en-us/docusaurus-theme-classic/footer.json
+++ b/i18n/en-us/docusaurus-theme-classic/footer.json
@@ -25,15 +25,15 @@
   },
   "link.item.label.Install": {
     "message": "Install",
-    "description": "The label of footer link with label=Install linking to 
/docs/start/install"
+    "description": "The label of footer link with label=Install linking to 
/docs/docs/start/install"
   },
   "link.item.label.Usage": {
     "message": "Usage",
-    "description": "The label of footer link with label=Usage linking to 
/docs/start/usage"
+    "description": "The label of footer link with label=Usage linking to 
/docs/docs/start/usage"
   },
   "link.item.label.Benchmark": {
     "message": "Benchmark",
-    "description": "The label of footer link with label=Benchmark linking to 
/docs/introduction/benchmark"
+    "description": "The label of footer link with label=Benchmark linking to 
/docs/docs/introduction/benchmark"
   },
   "link.item.label.Fury": {
     "message": "Fury",
diff --git a/i18n/en-us/docusaurus-theme-classic/navbar.json 
b/i18n/en-us/docusaurus-theme-classic/navbar.json
index 5b5a967d..29b485bf 100644
--- a/i18n/en-us/docusaurus-theme-classic/navbar.json
+++ b/i18n/en-us/docusaurus-theme-classic/navbar.json
@@ -66,5 +66,13 @@
   "item.label.Code of Conduct": {
     "message": "Code of Conduct",
     "description": "Navbar item with label Code of Conduct"
+  },
+  "item.label.Docs": {
+    "message": "Docs",
+    "description": "Navbar item with label Docs"
+  },
+  "item.label.Users": {
+    "message": "Users",
+    "description": "Navbar item with label Users"
   }
-}
\ No newline at end of file
+}
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
index 8203570f..78cf2ec7 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
@@ -10,7 +10,7 @@ id: how_to_join_community
 
 Fury 团队通常在 github 上进行开发和 issue 维护,请打开 [Github 网站](https://github.com/),点击右上角 
`Sign up` 按钮,注册一个自己的账号,开启你开源之旅的第一步。
 
-在 
[Fury仓库](https://github.com/apache/fury)中,我们有一份面向所有开源贡献者的[指南](https://fury.apache.org/zh-CN/docs/community/),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。
+在 
[Fury仓库](https://github.com/apache/fury)中,我们有一份面向所有开源贡献者的[指南](https://fury.apache.org/zh-CN/docs/docs/community/),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。
 
 ## 你的第一个 Pull Request
 
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/benchmark.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/benchmark.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/benchmark.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/benchmark.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/features.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/features.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/features.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/features.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/introduction.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/introduction.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/introduction.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/01-Introduction/introduction.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/install.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/02-Start/install.md
similarity index 100%
copy from i18n/zh-CN/docusaurus-plugin-content-docs/current/start/install.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/02-Start/install.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/usage.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/02-Start/usage.md
similarity index 100%
copy from i18n/zh-CN/docusaurus-plugin-content-docs/current/start/usage.md
copy to i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/02-Start/usage.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/DEVELOPMENT.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/DEVELOPMENT.md
similarity index 100%
copy from i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/DEVELOPMENT.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/DEVELOPMENT.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/graalvm_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/graalvm_guide.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/graalvm_guide.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/graalvm_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java_serialization_guide.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/java_serialization_guide.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java_serialization_guide.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/java_serialization_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/row_format_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/row_format_guide.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/row_format_guide.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/row_format_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/scala_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/scala_guide.md
similarity index 100%
copy from i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/scala_guide.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/scala_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_serialization_guide.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/xlang_serialization_guide.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_serialization_guide.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/xlang_serialization_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_type_mapping.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/xlang_type_mapping.md
similarity index 100%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_type_mapping.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/03-Guide/xlang_type_mapping.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/community.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/community.md
new file mode 100644
index 00000000..eb3d4ed1
--- /dev/null
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/community.md
@@ -0,0 +1,85 @@
+---
+title: 社区
+sidebar_position: 0
+id: community
+---
+
+Apache Fury 是一个由社区驱动的开源项目,项目的蓬勃发展得益于社区贡献。
+我们邀请您根据自己的意愿尽可能地参与项目。以下是几种贡献方式:
+
+- 使用 Apache Fury 并分享使用体验和反馈问题;
+- 为项目提供最佳实践示例;
+- 报告错误并修复;
+- 贡献代码和参与文档建设。
+
+## 邮件列表
+
+| 邮件列表                    | 描述                                        | 订阅     
                                        | 取消订阅                                  
             | 发送邮件                               | 活动                          
                                     |
+|-------------------------|---------------------------------------------|-------------------------------------------------------|-----------------------------------------------------------|------------------------------------|-----------------------------------------------------------------------|
+| [email protected]     | 开发相关讨论             | 
[订阅](mailto:[email protected])     | 
[取消订阅](mailto:[email protected])     | 
[发送邮件](mailto:[email protected]) | 
[邮件列表活动](https://lists.apache.org/[email protected])     |
+| [email protected] | 仓库的所有 commits            | 
[订阅](mailto:[email protected]) | 
[取消订阅](mailto:[email protected]) | 只读的邮件列表                    
 | [邮件列表活动](https://lists.apache.org/[email protected]) |
+
+在尝试发送邮件之前,请确保订阅上述的邮件列表。
+
+**如果您没有订阅邮件列表,您的邮件将被拒绝或不会收到回复。**
+
+### 如何订阅邮件列表
+
+要发送邮件至邮件列表,请先通过以下方式订阅:
+
+1. 发送电子邮件至 [email protected],并相应替换 `listname`;
+2. 回复您将收到的确认电子邮件,保持邮件主题行完整;
+3. 然后您将收到一封欢迎的电子邮件,订阅成功。
+
+在讨论电子邮件中的代码片段时,请确保:
+
+- 您不要链接到外部服务中的文件,因为此类文件可能会更改、被删除或链接可能会中断,从而使存档的电子邮件线程变得无用;
+- 您粘贴文本而不是文本屏幕截图;
+- 粘贴代码时保持格式,以保持代码可读;
+- 有足够的导入语句以避免产生代码歧义。
+
+## Slack
+
+您可以加入[Slack 上的 Apache Fury™ 
社区](https://join.slack.com/t/fury-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A)。
+
+这里有一些社区规则:
+
+- 保持尊重和友善;
+- 所有重要的决定和结论都必须反映到邮件列表中。 “如果这没有在邮件列表中有相关的讨论记录,则代表它不生效” ;
+- [The Apache Way](https://theapacheway.com/on-list/);
+- 使用 Slack 线程来防止并行对话淹没当前的对话频道;
+- 请不要直接向邮件列表发送 Bug fix、Issue 分配和 Code Review 消息。这些内容应该被社区贡献者自愿处理并分配。
+
+## Issue 跟踪
+
+我们使用 GitHub Issues 来跟踪所有 Issues:
+
+- 代码相关问题:https://github.com/apache/fury/issues
+- 网站相关问题:https://github.com/apache/fury-site/issues
+
+您需要有一个 [GitHub 帐户](https://github.com/signup) 才能创建问题。
+如果您没有 [GitHub 帐户](https://github.com/signup),您可以发送电子邮件至 [email protected]。
+
+### 报告 Bug
+
+您在报告 Bug 之前,应该:
+
+- 验证该 Bug 确实存在;
+- 搜索 [Issue List](https://github.com/apache/fury/issues) 以确保不存在相关 Bug。
+- 在 Issue List 中创建 [bug 
报告](https://github.com/apache/fury/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml)。
+- 如果可能的话,深入研究 Apache Fury 的源代码,并针对您报告的 Bug 提交补丁,这有助于快速修复 Bug。
+
+### 报告安全漏洞
+
+Apache Fury 是 [Apache 软件基金会](https://apache.org/) 的一个项目,遵循 [ASF 
漏洞处理流程](https://apache.org/security/#vulnerability-handling)。
+
+要报告您发现的新的安全漏洞,请遵循 [ASF 
漏洞报告流程](https://apache.org/security/#reporting-a-vulnerability),该流程解释了如何私下向社区维护者发送详细的漏洞信息。
+
+### New Feature
+
+欢迎您增强功能或新功能建议。提案越具体、越合理,您在 Fury 社区的影响力就越大。它有可能在之后版本发布。
+
+### 项目源代码
+
+- Fury Core 存储库:https://github.com/apache/fury
+- Fury 网站存储库:https://github.com/apache/fury-site
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_join_community.md
similarity index 96%
copy from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
copy to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_join_community.md
index 8203570f..78cf2ec7 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/community/how_to_join_community.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_join_community.md
@@ -10,7 +10,7 @@ id: how_to_join_community
 
 Fury 团队通常在 github 上进行开发和 issue 维护,请打开 [Github 网站](https://github.com/),点击右上角 
`Sign up` 按钮,注册一个自己的账号,开启你开源之旅的第一步。
 
-在 
[Fury仓库](https://github.com/apache/fury)中,我们有一份面向所有开源贡献者的[指南](https://fury.apache.org/zh-CN/docs/community/),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。
+在 
[Fury仓库](https://github.com/apache/fury)中,我们有一份面向所有开源贡献者的[指南](https://fury.apache.org/zh-CN/docs/docs/community/),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。
 
 ## 你的第一个 Pull Request
 
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_release.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_release.md
new file mode 100644
index 00000000..4d1d040a
--- /dev/null
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_release.md
@@ -0,0 +1,531 @@
+---
+title: 如何发布
+sidebar_position: 0
+id: how_to_release
+---
+
+本文主要介绍如何发布新版本的 Apache Fury。
+
+## 介绍
+
+源代码发布是 Apache 最重视以及最重要的部分。
+
+请注意许可证和发布的软件签名问题。发布软件是一件严肃的事情,并会产生相应的法律后果。
+
+## release manager 第一次发布
+
+### 环境要求
+
+此发布过程在 Ubuntu 系统中运行,需要以下几个环境依赖:
+
+- JDK 1.8+
+- Apache Maven 3.x+
+- Python 3.8
+- GnuPG 2.x
+- Git
+- SVN(Apache 基金会使用 svn 来托管项目发布)
+- **设置环境变量**:如果您在不同的目录下配置了 gpg 密钥,请执行 `export GNUPGHOME=$(xxx)` 导出环境变量。
+
+### 准备 GPG 密钥
+
+如果您是第一次作为软件发布者,您需要准备一个 GPG 密钥。
+
+您可以参考这里的[快速开始](https://infra.apache.org/openpgp.html)获取一个 GPG 密钥或者获取更多相关信息。
+
+#### 安装 GPG
+
+```bash
+sudo apt install gnupg2
+```
+
+#### 生成 GPG 密钥
+
+请使用您的 Apache 名字和电子邮件地址生成 GPG 密钥:
+
+```bash
+$ gpg --full-gen-key
+gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+   (1) RSA and RSA (default)
+   (2) DSA and Elgamal
+   (3) DSA (sign only)
+   (4) RSA (sign only)
+  (14) Existing key from card
+Your selection? 1 # input 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096 # input 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+         0 = key does not expire
+      <n>  = key expires in n days
+      <n>w = key expires in n weeks
+      <n>m = key expires in n months
+      <n>y = key expires in n years
+Key is valid for? (0) 0 # input 0
+Key does not expire at all
+Is this correct? (y/N) y # input y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: Chaokun Yang                   # input your name
+Email address: [email protected]     # input your email
+Comment: CODE SIGNING KEY                 # input some annotations, optional
+You selected this USER-ID:
+    "Chaokun <[email protected]>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # input O
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+
+# Input the security key
+┌──────────────────────────────────────────────────────┐
+│ Please enter this passphrase                         │
+│                                                      │
+│ Passphrase: _______________________________          │
+│                                                      │
+│       <OK>                              <Cancel>     │
+└──────────────────────────────────────────────────────┘
+# key generation will be done after your inputting the key with the following 
output
+gpg: key E49B00F626B marked as ultimately trusted
+gpg: revocation certificate stored as 
'/Users/chaokunyang/.gnupg/openpgp-revocs.d/1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4.rev'
+public and secret key created and signed.
+
+pub   rsa4096 2022-07-12 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] Chaokun <[email protected]>
+sub   rsa4096 2022-07-12 [E]
+```
+
+#### 上传公钥至 GPG 密钥服务器
+
+首先,列出您所创建的 GPG 密钥:
+
+```bash
+gpg --list-keys
+```
+
+执行相关命令之后,您将看到如下输出:
+
+```bash
+--------------------------------------------------
+pub   rsa4096 2024-03-27 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] chaokunyang (CODE SIGNING KEY) 
<[email protected]>
+sub   rsa4096 2024-03-27 [E]
+```
+
+然后,将您的密钥 ID 发送到密钥服务器:
+
+```bash
+gpg --keyserver keys.openpgp.org --send-key <key-id> # e.g., 
1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+```
+
+其中,`keys.openpgp.org` 是一个随机选择的密钥服务器,可以使用 keyserver.ubuntu.com 或任何其他功能完备的密钥服务器。
+
+#### 检查密钥是否创建成功
+
+上传大约需要一分钟;之后,您可以通过电子邮件在相应的密钥服务器上检查。
+
+将密钥上传到密钥服务器的主要目的是为了加入一个可信的[信任网络](https://infra.apache.org/release-signing.html#web-of-trust)。
+
+#### 将 GPG 公钥添加到项目 KEYS 文件中
+
+发布分支的 svn 仓库是:https://dist.apache.org/repos/dist/release/incubator/fury
+
+请在发布分支的 KEYS 中添加公钥:
+
+```bash
+svn co https://dist.apache.org/repos/dist/release/incubator/fury fury-dist
+# As this step will copy all the versions, it will take some time. If the 
network is broken, please use svn cleanup to delete the lock before re-execute 
it.
+cd fury-dist
+(gpg --list-sigs [email protected] && gpg --export --armor 
[email protected]) >> KEYS # Append your key to the KEYS file
+svn add .   # It is not needed if the KEYS document exists before.
+svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a 
username and password, just use your apache username and password.
+```
+
+#### 将 GPG 公钥上传到您的 GitHub 帐户
+
+- 输入 `https://github.com/settings/keys` 以添加您的 GPG 密钥。
+- 如果添加后发现“未验证”字样,请将 GPG 密钥中使用的电子邮件地址绑定到您的 GitHub 
帐户(https://github.com/settings/emails)。
+
+### 延伸阅读
+
+建议您在发布之前阅读以下文档,了解有关 Apache 基金会发布软件的更多详细信息,但这不是必须的:
+
+- 发布政策:https://www.apache.org/legal/release-policy.html
+- 孵化器发布:http://incubator.apache.org/guides/releasemanagement.html
+- TLP 版本:https://infra.apache.org/release-distribution
+- 发布标志:https://infra.apache.org/release-signing.html
+- 发布发布:https://infra.apache.org/release-publishing.html
+- 发布下载页面:https://infra.apache.org/release-download-pages.html
+- 发布 maven artifacts:https://infra.apache.org/publishing-maven-artifacts.html
+
+## 开始有关发布的讨论
+
+通过发送电子邮件至以下地址发起有关下一个版本的讨论:[email protected]:
+
+标题:
+
+```
+[DISCUSS] Release Apache Fury(incubating) ${release_version}
+```
+
+内容:
+
+```
+Hello, Apache Fury(incubating) Community,
+
+This is a call for a discussion to release Apache Fury(incubating) version 
${release_version}.
+
+The change lists about this release:
+
+https://github.com/apache/fury/compare/v0.4.1...v0.5.0
+
+Please leave your comments here about this release plan. We will bump the 
version in repo and start the release process after the discussion.
+
+Thanks,
+
+${name}
+```
+
+## 准备发布
+
+如果讨论结果中没有出现反对声音,您需要做一些发布版本的准备工作。
+
+### Github 分支和标签
+
+- 创建一个名为 `releases-0.5.0`
+- 通过执行命令将版本 `$version` 升级到 `python ci/release.py bump_version -l all -version 
$version`
+- 执行 git commit 并将分支推送到 `[email protected]:apache/fury.git`
+- 通过 `git tag v0.5.0-rc1` 创建一个新标签,然后将其推送到 `[email protected]:apache/fury.git`
+
+### 构建 artifacts 并上传到 SVN dist/dev 仓库
+
+首先,您需要通过 `python ci/release.py build -v $version` 构建预发布 artifacts。
+
+然后您需要把它上传到 svn dist repo。dev 分支的 dist 
仓库地址是:https://dist.apache.org/repos/dist/dev/incubator/fury
+
+```bash
+# As this step will copy all the versions, it will take some time. If the 
network is broken, please use svn cleanup to delete the lock before re-execute 
it.
+svn co https://dist.apache.org/repos/dist/dev/incubator/fury fury-dist-dev
+```
+
+然后,上传项目:
+
+```bash
+cd fury-dist-dev
+# create a directory named by version
+mkdir ${release_version}-${rc_version}
+# copy source code and signature package to the versioned directory
+cp ${repo_dir}/dist/* ${release_version}-${rc_version}
+# check svn status
+svn status
+# add to svn
+svn add ${release_version}-${rc_version}
+# check svn status
+svn status
+# commit to SVN remote server
+svn commit -m "Prepare for fury ${release_version}-${rc_version}"
+```
+
+访问 https://dist.apache.org/repos/dist/dev/incubator/fury/ 以检查 artifacts 是否正确上传。
+
+### 如果出现问题该怎么办
+
+如果某些文件是意外出现或者发生某些错误,则需要删除相关内容并执行 `svn delete`,然后重复上述上传过程。
+
+## 投票
+
+作为一个孵化项目,新版本发布需要 Apache Fury 社区和孵化器社区的投票。
+
+- release_version:Fury 的版本,如 0.5.0。
+- release_candidate_version:投票的版本,如 0.5.0-rc1。
+- maven_artifact_number:Maven 暂存 artifacts 的数量。如 1001. 具体来说,可以通过搜索 “fury” 来找到 
maven_artifact_number https://repository.apache.org/#stagingRepositories.
+
+### Fury 社区投票
+
+发送电子邮件至 Fury Community:[email protected]:
+
+标题:
+
+```
+[VOTE] Release Apache Fury(incubating) v${release_version}-${rc_version}
+```
+
+内容:
+
+```
+Hello, Apache Fury(incubating) Community:
+
+This is a call for vote to release Apache Fury(Incubating)
+version release-0.5.0-rc3.
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+The change lists about this release:
+
+https://github.com/apache/fury/compare/v0.4.1...v0.5.0-rc3
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/incubator/fury/0.5.0-rc3/
+
+The maven staging for this release:
+https://repository.apache.org/content/repositories/orgapachefury-1003
+
+Git tag for the release:
+https://github.com/apache/fury/releases/tag/v0.5.0-rc3
+
+Git commit for the release:
+https://github.com/apache/fury/commit/fae06330edd049bb960536e978a45b97bca66faf
+
+The artifacts signed with PGP key [5E580BA4], corresponding to
+[[email protected]], that can be found in keys file:
+https://downloads.apache.org/incubator/fury/KEYS
+
+The vote will be open for at least 72 hours until the necessary number of 
votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+To learn more about Fury, please see https://fury.apache.org/
+
+*Valid check is a requirement for a vote. *Checklist for reference:
+
+[ ] Download Fury is valid.
+[ ] Checksums and PGP signatures are valid.
+[ ] Source code distributions have correct names matching the current release.
+[ ] LICENSE and NOTICE files are correct.
+[ ] All files have license headers if necessary.
+[ ] No compiled archives bundled in source archive.
+[ ] Can compile from source.
+
+More detail checklist please refer:
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+
+How to Build and Test, please refer to: 
https://github.com/apache/fury/blob/main/docs/guide/DEVELOPMENT.md
+
+Thanks,
+Chaokun Yang
+```
+
+在至少获得 3 + 1 且具有约束力的投票(来自 Fury Podling PMC 成员和提交者)并没有收到否决票之后,发布投票结果:
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache Fury(incubating) 
v${release_version}-${rc_version}
+```
+
+内容:
+
+```
+Hello, Apache Fury(incubating) Community,
+
+The vote to release Apache Fury(Incubating) v${release_version}-${rc_version} 
has passed.
+
+The vote PASSED with 3 binding +1 and 0 -1 vote:
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Vote thread: ${vote_thread_url}
+
+Thanks,
+
+${name}
+```
+
+### 孵化器社区投票
+
+发送电子邮件至:[email protected]:
+
+标题:
+
+```
+[VOTE] Release Apache Fury(incubating) v${release_version}-${rc_version}
+```
+
+内容:
+
+```
+Hello everyone,
+
+This is a call for the vote to release Apache Fury(Incubating) 
v${release_version}-${rc_version}.
+
+The Apache Fury community has voted and approved the release of Apache
+Fury(incubating) v${release_version}-${rc_version}. We now kindly request the 
IPMC members
+review and vote for this release.
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+Fury community vote thread:
+${community_vote_thread_url}
+
+Vote result thread:
+${community_vote_result_thread_url}
+
+The release candidate:
+https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/
+
+This release has been signed with a PGP available here:
+https://downloads.apache.org/incubator/fury/KEYS
+
+Git tag for the release:
+https://github.com/apache/fury/releases/tag/v${release_version}-${rc_version}/
+
+Git commit for the release:
+https://github.com/apache/fury/commit/$xxx
+
+Maven staging repo:
+https://repository.apache.org/content/repositories/orgapachefury-${maven_artifact_number}/
+
+How to Build and Test, please refer to:
+https://github.com/apache/fury/blob/main/docs/guide/DEVELOPMENT.md
+
+Please download, verify, and test.
+
+The VOTE will pass after 3 binding approve.
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+To learn more about apache fury, please see https://fury.apache.org/
+
+Checklist for reference:
+
+[ ] Download links are valid.
+[ ] Checksums and signatures.
+[ ] LICENSE/NOTICE files exist
+[ ] No unexpected binary files
+[ ] All source files have ASF headers
+[ ] Can compile from source
+
+Thanks,
+
+${name}
+```
+
+至少 72 小时后,至少有 3 + 1 具有约束力的投票(来自孵化器 PMC 成员)且没有否决票,发布投票结果:
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache Fury(incubating) 
v${release_version}-${rc_version}
+```
+
+内容:
+
+```
+Hi Incubator PMC,
+
+The vote to release Apache Fury(incubating) v${release_version}-${rc_version} 
has passed with
+4 +1 binding and 3 +1 non-binding votes, no +0 or -1 votes.
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Non-Binding votes:
+
+- aaa
+
+Vote thread: ${incubator_vote_thread_url}
+
+Thanks for reviewing and voting for our release candidate.
+
+We will proceed with publishing the approved artifacts and sending out the 
announcement soon.
+```
+
+### 如果投票失败怎么办
+
+如果投票失败,请单击“删除”以删除暂存的 Maven artifacts。
+
+解决提出的问题,然后再次提出 `rc_version` 的新投票。
+
+## 官方发布
+
+### 将 artifacts 发布到 SVN 发布目录
+
+- release_version:Fury 的发布版本,如 0.5.0
+- release_candidate_version:投票版本,如 0.5.0-rc1
+
+```bash
+svn mv 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}
 https://dist.apache.org/repos/dist/release/incubator/fury/${release_version} 
-m "Release fury ${release_version}"
+```
+
+### 更改 Fury 网站下载链接
+
+提交 PR 到 https://github.com/apache/fury-site 仓库更新 Fury 
版本,[下载页面](https://fury.apache.org/download)
+
+### 发布 Maven artifacts
+
+- maven_artifact_number:Maven 暂存 artifacts 的数量。如 1001。
+- 打开https://repository.apache.org/#stagingRepositories.
+- 找到 artifacts `orgapachefury-${maven_artifact_number}`,点击“发布”。
+
+### 发送公告
+
+将发布公告发送给 [email protected] 并且抄送给 [email protected]。
+
+标题:
+
+```
+[ANNOUNCE] Release Apache Fury(incubating) ${release_version}
+```
+
+内容:
+
+```
+Hi all,
+
+The Apache Fury(incubating) community is pleased to announce
+that Apache Fury(incubating) {release_version} has been released!
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+The release notes are available here:
+https://github.com/apache/fury/releases/tag/v${release_version}
+
+For the complete list of changes:
+https://github.com/apache/fury/compare/v0.5.0...v${release_version}
+
+Apache Fury website: https://fury.apache.org/
+
+Download Links: https://fury.apache.org/download
+
+Fury Resources:
+- Fury github repo: https://github.com/apache/fury
+- Issue: https://github.com/apache/fury/issues
+- Mailing list: [email protected]
+
+We are looking to grow our community and welcome new contributors. If
+you are interested in contributing to Fury, please contact us on the
+mailing list or on GitHub. We will be happy to help you get started.
+
+------------------
+Best Regards,
+${your_name}
+```
+
+至此,整个发布流程结束。
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_verify.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_verify.md
new file mode 100644
index 00000000..668063ca
--- /dev/null
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/community/how_to_verify.md
@@ -0,0 +1,121 @@
+---
+title: 如何验证 Apache Fury
+sidebar_position: 0
+id: how_to_verify
+---
+
+详细的 Check list,请参阅[Apache 
检查清单](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
+
+## 下载 Apache Fury
+
+```bash
+# If there is svn locally, you can clone to the local
+svn co 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/
+# You can download the material file directly
+wget 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/xxx.xxx
+```
+
+## 验证 checksums 和 signatures
+
+首先,您需要安装 gpg:
+
+```bash
+apt-get install gnupg
+# or
+yum install gnupg
+# or
+brew install gnupg
+```
+
+之后,导入 Apache Fury release manager 的公钥:
+
+```bash
+curl https://downloads.apache.org/incubator/fury/KEYS > KEYS # Download KEYS
+gpg --import KEYS # Import KEYS to local
+# Then, trust the public key:
+gpg --edit-key <KEY-used-in-this-version> # Edit the key(mentioned in vote 
email)
+# It will enter the interactive mode, use the following command to trust the 
key:
+gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+
+gpg> trust
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+
+Please decide how far you trust this user to correctly verify other users' keys
+(by looking at passports, checking fingerprints from different sources, etc.)
+
+  1 = I don't know or won't say
+  2 = I do NOT trust
+  3 = I trust marginally
+  4 = I trust fully
+  5 = I trust ultimately
+  m = back to the main menu
+
+Your decision? 5
+Do you really want to set this key to ultimate trust? (y/N) y
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: ultimate      validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+Please note that the shown key validity is not necessarily correct
+unless you restart the program.
+```
+
+接下来验证签名:
+
+```bash
+for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i; done
+```
+
+如果出现如下内容,则表示签名正确:
+
+```bash
+apache-fury-incubating-0.5.0-src.tar.gz
+gpg: Signature made Wed 17 Apr 2024 11:49:45 PM CST using RSA key ID 5E580BA4
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
+gpg: Good signature from "chaokunyang (CODE SIGNING KEY) 
<[email protected]>"
+```
+
+然后验证 checksum:
+
+```bash
+for i in *.tar.gz; do echo $i; sha512sum --check  $i.sha512; done
+```
+
+它应该输出如下内容:
+
+```bash
+apache-fury-incubating-0.5.0-src.tar.gz
+apache-fury-incubating-0.5.0-src.tar.gz: OK
+```
+
+## 检查源码包中的文件
+
+解压缩 `apache-fury-${release_version}-${rc_version}-src.tar.gz` 并检查以下内容:
+
+- 此存储库 LICENSE 和 NOTICE 文件是正确的;
+- 如有必要,所有文件都有 ASF 许可证标头;
+- 项目构建通过。
+
+## 检查 fury-java 的 Maven artifacts
+
+下载 Apache 
Fury:https://repository.apache.org/content/repositories/orgapachefury-${maven_artifact_number}/.
+
+您可以检查以下内容:
+
+- JAR 的 Checksum 与项目绑定的 checksum 文件一致。
+- JAR 的 signature 与项目绑定的 signature 文件一致。
+- JAR 在本地是可重复的。这意味着您可以在计算机上构建 JAR,并验证 checksum 和与项目绑定的相同。
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/benchmark.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/benchmark.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/benchmark.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/benchmark.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/features.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/features.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/features.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/features.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/introduction.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/introduction.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/introduction.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/01-Introduction/introduction.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/install.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/02-Start/install.md
similarity index 100%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/start/install.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/02-Start/install.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/usage.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/02-Start/usage.md
similarity index 100%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/start/usage.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/02-Start/usage.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/DEVELOPMENT.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/DEVELOPMENT.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/DEVELOPMENT.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/DEVELOPMENT.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/graalvm_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/graalvm_guide.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/graalvm_guide.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/graalvm_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java_serialization_guide.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/java_serialization_guide.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java_serialization_guide.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/java_serialization_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/row_format_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/row_format_guide.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/row_format_guide.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/row_format_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/scala_guide.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/scala_guide.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/scala_guide.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/scala_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_serialization_guide.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/xlang_serialization_guide.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_serialization_guide.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/xlang_serialization_guide.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_type_mapping.md 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/xlang_type_mapping.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/xlang_type_mapping.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/version-0.10/docs/03-Guide/xlang_type_mapping.md
diff --git a/i18n/zh-CN/docusaurus-theme-classic/footer.json 
b/i18n/zh-CN/docusaurus-theme-classic/footer.json
index 20130299..5708449e 100644
--- a/i18n/zh-CN/docusaurus-theme-classic/footer.json
+++ b/i18n/zh-CN/docusaurus-theme-classic/footer.json
@@ -25,15 +25,15 @@
   },
   "link.item.label.Install": {
     "message": "安装",
-    "description": "The label of footer link with label=Install linking to 
/docs/start/install"
+    "description": "The label of footer link with label=Install linking to 
/docs/docs/start/install"
   },
   "link.item.label.Usage": {
     "message": "使用",
-    "description": "The label of footer link with label=Usage linking to 
/docs/start/usage"
+    "description": "The label of footer link with label=Usage linking to 
/docs/docs/start/usage"
   },
   "link.item.label.Benchmark": {
     "message": "基准测试",
-    "description": "The label of footer link with label=Benchmark linking to 
/docs/introduction/benchmark"
+    "description": "The label of footer link with label=Benchmark linking to 
/docs/docs/introduction/benchmark"
   },
   "link.item.label.Fury": {
     "message": "Fury",
diff --git a/sidebars.ts b/sidebars.ts
index 92fc69d1..805f2b15 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -13,10 +13,8 @@ import type {SidebarsConfig} from 
'@docusaurus/plugin-content-docs';
 const sidebars: SidebarsConfig = {
   // By default, Docusaurus generates a sidebar from the docs folder structure
   // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
-  startSidebar: [{type: 'autogenerated', dirName: 'start'}],
-  introductionSidebar: [{type: 'autogenerated', dirName: 'introduction'}],
+  docsSidebar: [{type: 'autogenerated', dirName: 'docs'}],
   specificationSidebar: [{type: 'autogenerated', dirName: 'specification'}],
-  guideSidebar: [{type: 'autogenerated', dirName: 'guide'}],
   communitySidebar: [{type: 'autogenerated', dirName: 'community'}],
   // But you can create a sidebar manually
   /*
diff --git a/src/pages/download/index.md b/src/pages/download/index.md
index 70cc91dd..e778a4b7 100644
--- a/src/pages/download/index.md
+++ b/src/pages/download/index.md
@@ -5,7 +5,7 @@ title: Apache Fury(incubating) Download
 
 The official Apache Fury releases are provided as source artifacts.
 
-For binary install, please see Fury [install](/docs/start/install/) document.
+For binary install, please see Fury [install](/docs/docs/start/install/) 
document.
 
 ## The latest release
 
diff --git a/src/pages/home/components/HomePageLanguageCard.tsx 
b/src/pages/home/components/HomePageLanguageCard.tsx
index 19db3464..4e19b296 100644
--- a/src/pages/home/components/HomePageLanguageCard.tsx
+++ b/src/pages/home/components/HomePageLanguageCard.tsx
@@ -22,8 +22,8 @@ export default function HomePageLanguageCard() {
 
   const getLanguageUrl = (language) => {
     const baseUrl = locale.startsWith("zh-CN")
-      ? "https://fury.apache.org/zh-CN/docs/start/usage/#";
-      : "https://fury.apache.org/docs/start/usage/#";;
+      ? "https://fury.apache.org/zh-CN/docs/docs/start/usage/#";
+      : "https://fury.apache.org/docs/docs/start/usage/#";;
     return `${baseUrl}${language}`;
   };
 
diff --git a/src/pages/home/components/HomepageHeader.tsx 
b/src/pages/home/components/HomepageHeader.tsx
index d5f5dc03..cb8fced7 100644
--- a/src/pages/home/components/HomepageHeader.tsx
+++ b/src/pages/home/components/HomepageHeader.tsx
@@ -46,7 +46,7 @@ export default function HomepageHeader() {
           {/* 开始使用按钮 */}
           <Link
             className="button button--secondary button--lg"
-            to="/docs/start/install"
+            to="/docs/docs/start/install"
             data-aos="fade-up"
             data-aos-delay="400"
           >
diff --git a/versioned_docs/version-0.10/community/community.md 
b/versioned_docs/version-0.10/community/community.md
new file mode 100644
index 00000000..ef3f56eb
--- /dev/null
+++ b/versioned_docs/version-0.10/community/community.md
@@ -0,0 +1,91 @@
+---
+title: Community
+sidebar_position: 0
+id: community
+---
+
+
+Apache Fury is a volunteer project and it thrives on the contributions of its 
community.
+We invite you to participate as much or as little as you wish. Here are 
several ways to contribute:
+
+- Use our project and share feedback.
+- Provide use-cases for the project.
+- Report bugs and contribute fixes.
+- Contribute code and documentation improvements.
+
+## Mailing list
+
+| Name                    | Desc                                        | 
Subscribe                                             | Unsubscribe             
                                  | Post                               | 
Archive                                                               |
+|-------------------------|---------------------------------------------|-------------------------------------------------------|-----------------------------------------------------------|------------------------------------|-----------------------------------------------------------------------|
+| [email protected]     | Development related discussions             | 
[Subscribe](mailto:[email protected])     | 
[Unsubscribe](mailto:[email protected])     | 
[Post](mailto:[email protected]) | 
[Archive](https://lists.apache.org/[email protected])     |
+| [email protected] | All commits to our repositories             | 
[Subscribe](mailto:[email protected]) | 
[Unsubscribe](mailto:[email protected]) | Read only list      
               | 
[Archive](https://lists.apache.org/[email protected]) |
+
+Please make sure subscribe to any list before attempting to post.
+
+If you are not subscribed to the mailing list, your message will either be 
rejected or you won't receive the response.
+
+### How to subscribe to a mailing list
+
+To post messages, subscribe first by:
+
+1. Sending an email to [email protected] with `listname` 
replaced accordingly.
+2. Replying to the confirmation email you'll receive, keeping the subject line 
intact.
+3. You'll then get a welcome email, and the subscription succeeds.
+
+When discussing code snippets in emails, ensure:
+
+- You do not link to files in external services, as such files can change, get 
deleted or the link might break and thus
+  make an archived email thread useless.
+- You paste text instead of screenshots of text.
+- You keep formatting when pasting code in order to keep the code readable.
+- There are enough import statements to avoid ambiguities.
+
+## Slack
+
+You can join
+the [Apache Fury™ community on 
Slack](https://join.slack.com/t/fury-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A).
+
+There are a couple of community rules:
+
+- Be respectful and nice.
+- All important decisions and conclusions must be reflected back to the 
mailing lists. "If it didn't happen on a mailing
+  list, it didn't happen." - The [Apache 
Mottos](https://theapacheway.com/on-list/).
+- Use Slack threads to keep parallel conversations from overwhelming a channel.
+- Please do not direct message people for troubleshooting, issue assigning and 
PR review. These should be picked-up
+  voluntarily.
+
+## Issue tracker
+
+We use GitHub Issues to track all issues:
+
+- code related issues: https://github.com/apache/fury/issues
+- website related issues: https://github.com/apache/fury-site/issues
+
+You need to have a [GitHub account](https://github.com/signup) in order to 
create issues.
+If you don't have a [GitHub account](https://github.com/signup), you can post 
an email to [email protected].
+
+### Bug reports
+
+To report a bug:
+
+- Verify that the bug does in fact exist.
+- Search the [issue tracker](https://github.com/apache/fury/issues) to verify 
there is no existing issue reporting the bug you've found.
+- Create a [bug 
report](https://github.com/apache/fury/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml)
 on issue tracker.
+- If possible, dive into the source code of fury, and submit a patch for the 
bug you reported, this helps ensure the bug
+  will be fixed quickly.
+
+### Reporting a Vulnerability
+
+Apache Fury is a project of the [Apache Software 
Foundation](https://apache.org/) and follows the [ASF vulnerability handling 
process](https://apache.org/security/#vulnerability-handling).
+
+To report a new vulnerability you have discovered please follow the [ASF 
vulnerability reporting 
process](https://apache.org/security/#reporting-a-vulnerability), which 
explains how to send us details privately.
+
+### Enhancement
+
+Enhancements or new feature proposals are also welcome. The more concrete and 
rationale the proposal is, the greater the
+chance it will be incorporated into future releases.
+
+## Source code
+
+- fury core repository: https://github.com/apache/fury
+- fury website repository: https://github.com/apache/fury-site
diff --git a/docs/community/how_to_join_community.md 
b/versioned_docs/version-0.10/community/how_to_join_community.md
similarity index 95%
copy from docs/community/how_to_join_community.md
copy to versioned_docs/version-0.10/community/how_to_join_community.md
index d41c2e71..6fbe7a7e 100644
--- a/docs/community/how_to_join_community.md
+++ b/versioned_docs/version-0.10/community/how_to_join_community.md
@@ -10,7 +10,7 @@ First of all, kudos to you for choosing to join the open 
source contribution ran
 
 The Fury team usually conducts development and issue maintenance on GitHub. 
Please open the [GitHub website](https://github.com/), click the `Sign up` 
button in the upper right corner, register your own account, and take the first 
step of your open source journey.
 
-In the [Fury repository](https://github.com/apache/fury), we have a 
[guide](https://fury.apache.org/zh-CN/docs/community/) for all open source 
contributors, introducing contents such as version management and branch 
management. **Please take a few minutes to read and understand it**.
+In the [Fury repository](https://github.com/apache/fury), we have a 
[guide](https://fury.apache.org/zh-CN/docs/docs/community/) for all open source 
contributors, introducing contents such as version management and branch 
management. **Please take a few minutes to read and understand it**.
 
 ## Your First Pull Request
 
diff --git a/versioned_docs/version-0.10/community/how_to_release.md 
b/versioned_docs/version-0.10/community/how_to_release.md
new file mode 100644
index 00000000..cbd5cd38
--- /dev/null
+++ b/versioned_docs/version-0.10/community/how_to_release.md
@@ -0,0 +1,705 @@
+---
+title: How to release
+sidebar_position: 0
+id: how_to_release
+---
+
+This document mainly introduces how the release manager releases a new version 
of Apache Fury.
+
+## Introduction
+
+Source Release is the most important part which Apache values.
+
+Please pay more attention to license and signing issues.
+Publishing software is a serious thing and has legal consequences.
+
+## First-time as a release manager
+
+### Environmental requirements
+
+This release process is operated in the Ubuntu OS, and the following tools are 
required:
+
+- JDK 1.8
+- Apache Maven 3.x
+- Python 3.8
+- GnuPG 2.x
+- Git
+- SVN (apache uses svn to host project releases)
+- Pay attention to setting environment variables: if you configure gpg keys 
under a different directory,
+  please `export GNUPGHOME=$(xxx)`
+
+### Prepare GPG Key
+
+If you are the first to become a release manager, you need to prepare a gpg 
key.
+
+Following is a quick setup, you can refer to [Apache openpgp 
doc](https://infra.apache.org/openpgp.html) for further
+details.
+
+#### Install GPG
+
+```bash
+sudo apt install gnupg2
+```
+
+#### Generate GPG Key
+
+Please use your apache name and email for generate key
+
+```bash
+$ gpg --full-gen-key
+gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+   (1) RSA and RSA (default)
+   (2) DSA and Elgamal
+   (3) DSA (sign only)
+   (4) RSA (sign only)
+  (14) Existing key from card
+Your selection? 1 # input 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096 # input 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+         0 = key does not expire
+      <n>  = key expires in n days
+      <n>w = key expires in n weeks
+      <n>m = key expires in n months
+      <n>y = key expires in n years
+Key is valid for? (0) 0 # input 0
+Key does not expire at all
+Is this correct? (y/N) y # input y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: Chaokun Yang                   # input your name
+Email address: [email protected]     # input your email
+Comment: CODE SIGNING KEY                 # input some annotations, optional
+You selected this USER-ID:
+    "Chaokun <[email protected]>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # input O
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+
+# Input the security key
+┌──────────────────────────────────────────────────────┐
+│ Please enter this passphrase                         │
+│                                                      │
+│ Passphrase: _______________________________          │
+│                                                      │
+│       <OK>                              <Cancel>     │
+└──────────────────────────────────────────────────────┘
+# key generation will be done after your inputting the key with the following 
output
+gpg: key E49B00F626B marked as ultimately trusted
+gpg: revocation certificate stored as 
'/Users/chaokunyang/.gnupg/openpgp-revocs.d/1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4.rev'
+public and secret key created and signed.
+
+pub   rsa4096 2022-07-12 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] Chaokun <[email protected]>
+sub   rsa4096 2022-07-12 [E]
+```
+
+#### Upload your public key to public GPG keyserver
+
+Firstly, list your key:
+
+```bash
+gpg --list-keys
+```
+
+The output is like:
+
+```bash
+--------------------------------------------------
+pub   rsa4096 2024-03-27 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] chaokunyang (CODE SIGNING KEY) 
<[email protected]>
+sub   rsa4096 2024-03-27 [E]
+```
+
+Then, send your key id to key server:
+
+```bash
+gpg --keyserver keys.openpgp.org --send-key <key-id> # e.g., 
1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+```
+
+Among them, `keys.openpgp.org` is a randomly selected keyserver, you can use 
keyserver.ubuntu.com or any other
+full-featured keyserver.
+
+#### Check whether the key is created successfully
+
+Uploading takes about one minute; after that, you can check by email at the 
corresponding keyserver.
+
+Uploading keys to the keyserver is mainly for joining
+a [Web of Trust](https://infra.apache.org/release-signing.html#web-of-trust).
+
+#### Add your GPG public key to the project KEYS file
+
+The svn repository of the release branch is: 
https://dist.apache.org/repos/dist/release/incubator/fury
+
+Please add the public key to KEYS in the release branch:
+
+```bash
+svn co https://dist.apache.org/repos/dist/release/incubator/fury fury-dist
+# As this step will copy all the versions, it will take some time. If the 
network is broken, please use svn cleanup to delete the lock before re-execute 
it.
+cd fury-dist
+(gpg --list-sigs [email protected] && gpg --export --armor 
[email protected]) >> KEYS # Append your key to the KEYS file
+svn add .   # It is not needed if the KEYS document exists before.
+svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a 
username and password, just use your apache username and password.
+```
+
+#### Upload the GPG public key to your GitHub account
+
+- Enter https://github.com/settings/keys to add your GPG key.
+- Please remember to bind the email address used in the GPG key to your GitHub
+  account (https://github.com/settings/emails) if you find "unverified" after 
adding it.
+
+### Further reading
+
+It's recommended but not mandatory to read following documents before making a 
release to know more details about apache
+release:
+
+- Release policy: https://www.apache.org/legal/release-policy.html
+- Incubator release: http://incubator.apache.org/guides/releasemanagement.html
+- TLP release: https://infra.apache.org/release-distribution
+- Release sign: https://infra.apache.org/release-signing.html
+- Release publish: https://infra.apache.org/release-publishing.html
+- Release download pages: https://infra.apache.org/release-download-pages.html
+- Publishing maven artifacts: 
https://infra.apache.org/publishing-maven-artifacts.html
+
+## Start discussion about the release
+
+Start a discussion about the next release via sending email to: 
[email protected]:
+
+Title:
+
+```
+[DISCUSS] Release Apache Fury(incubating) ${release_version}
+```
+
+Content:
+
+```
+Hello, Apache Fury(incubating) Community,
+
+This is a call for a discussion to release Apache Fury(incubating) version 
${release_version}.
+
+The change lists about this release:
+
+https://github.com/apache/fury/compare/v0.4.1...v0.5.0
+
+Please leave your comments here about this release plan. We will bump the 
version in repo and start the release process after the discussion.
+
+Thanks,
+
+${name}
+```
+
+## Preparing for release
+
+If the discussion goes positive, you will need to prepare the release 
artifiacts.
+
+### Github branch and tag
+
+- Create a new branch named `releases-0.5.0`
+- Bump version to `$version` by executing command `python ci/release.py 
bump_version -l all -version $version`
+- Make a git commit and push the branch to `[email protected]:apache/fury.git`
+- Create a new tag by `git tag v0.5.0-rc1`, then push it to 
`[email protected]:apache/fury.git`
+
+### Build and upload artifacts to SVN dist/dev repo
+
+First you need to build source release artifacts by `python ci/release.py 
build -v $version`.
+
+Then you need to upload it to svn dist repo. The dist repo of the dev branch
+is: https://dist.apache.org/repos/dist/dev/incubator/fury
+
+```bash
+# As this step will copy all the versions, it will take some time. If the 
network is broken, please use svn cleanup to delete the lock before re-execute 
it.
+svn co https://dist.apache.org/repos/dist/dev/incubator/fury fury-dist-dev
+```
+
+Then, upload the artifacts:
+
+```bash
+cd fury-dist-dev
+# create a directory named by version
+mkdir ${release_version}-${rc_version}
+# copy source code and signature package to the versioned directory
+cp ${repo_dir}/dist/* ${release_version}-${rc_version}
+# check svn status
+svn status
+# add to svn
+svn add ${release_version}-${rc_version}
+# check svn status
+svn status
+# commit to SVN remote server
+svn commit -m "Prepare for fury ${release_version}-${rc_version}"
+```
+
+Visit https://dist.apache.org/repos/dist/dev/incubator/fury/ to check the 
artifacts are uploaded correctly.
+
+### What to do if something goes wrong
+
+If some files are unexpected, you need to remove by `svn delete` and repeat 
the above upload process.
+
+## Voting
+
+### check version
+
+As an incubating project, Fury requires votes from both the FUry Community and 
Incubator Community.
+
+- release_version: the version for fury, like 0.5.0.
+- release_candidate_version: the version for voting, like 0.5.0-rc1.
+- maven_artifact_number: the number for Maven staging artifacts, like 1001. 
Specifically, the maven_artifact_number can
+  be found by searching "fury" on 
https://repository.apache.org/#stagingRepositories.
+
+### Build the source code of fury and release it to nexus
+
+#### Configure Apache Account Passwords
+
+Before publishing Fury to Nexus, you need to securely configure your Apache 
account credentials. This step is critical
+as passwords must be encrypted.
+
+First, open your Maven global settings file `settings.xml`, typically located 
at `~/.m2/settings.xml`. Add or modify the
+following section:
+
+```xml
+
+<servers>
+    <server>
+        <id>apache.snapshots.https</id>
+        <username>your-apache-username</username>
+        <password>{your-encrypted-password}</password>
+    </server>
+    <server>
+        <id>apache.releases.https</id>
+        <username>your-apache-username</username>
+        <password>{your-encrypted-password}</password>
+    </server>
+</servers>
+```
+
+**Important Notes:**
+
+- Replace `your-apache-username` with your Apache LDAP username
+- Passwords must be encrypted using Maven's password encryption tool
+- Encrypted passwords should be enclosed in curly braces `{}`
+
+Refer to the official documentation for detailed encryption
+instructions: [Publishing Maven 
Artifacts](https://infra.apache.org/publishing-maven-artifacts.html)
+
+Steps to encrypt your password:
+
+1. Generate a master password (if you haven't already):
+
+2. ```sh
+
+   mvn --encrypt-master-password your-master-password
+
+   ```
+
+   Save the output to `~/.m2/settings-security.xml`:
+
+3. ```xml
+
+   <settingsSecurity>
+       <master>{your-encrypted-master-password}</master>
+   </settingsSecurity>
+
+   ```
+
+2. Encrypt your Apache account password:
+
+   ```sh
+
+   mvn --encrypt-password your-apache-password
+
+   ```
+
+   Place the encrypted output into the `password` field in `settings.xml`
+
+#### Build and Publish Java Module
+
+```sh
+
+# Navigate to the Java module directory
+cd java
+
+# Execute Maven build and deploy to Nexus
+# -T10: Use 10 threads for parallel build, improving speed
+# clean: Clean the project
+# deploy: Deploy to remote repository
+# -Papache-release: Activate apache-release profile
+# -DskipTests: Skip tests
+# -Dgpg.skip=false: Enable GPG signing (required for release verification)
+mvn -T10 clean deploy -Papache-release -DskipTests -Dgpg.skip=false
+
+```
+
+#### Build and Publish Kotlin Module
+
+```sh
+
+# Return to project root and navigate to Kotlin module
+cd ../kotlin
+
+# Execute the same Maven command as Java module
+# Configuration parameters are identical to Java module
+mvn -T10 clean deploy -Papache-release -DskipTests -Dgpg.skip=false
+
+```
+
+#### Build and Publish Scala Module
+
+```sh
+
+# Return to project root and navigate to Scala module
+cd ../scala
+
+# Build and sign JARs for all Scala versions
+# +publishSigned: Execute publishSigned for all configured Scala versions
+echo "Starting to build Scala JARs..."
+sbt +publishSigned
+
+# Prepare for upload to Sonatype (Nexus)
+# sonatypePrepare: Prepare for Maven Central Repository release
+echo "Starting upload preparation..."
+sbt sonatypePrepare
+
+# Upload packaged JARs to Sonatype
+# sonatypeBundleUpload: Upload prepared bundles
+echo "Starting JAR upload..."
+sbt sonatypeBundleUpload
+
+echo "Scala JAR deployment succeeded!"
+
+```
+
+#### Lock the Release in Nexus
+
+After completing the publication of all modules, perform the following steps 
in Nexus:
+
+1. Log in to the Apache Nexus repository management interface
+2. Navigate to the "Snapshots" or "Releases" repository (depending on your 
release type)
+3. Locate the latest Fury project version
+4. Execute the "Close" operation to validate all uploaded artifacts
+5. After successful validation, execute the "Release" operation to finalize 
the deployment
+
+These steps ensure all published artifacts are verified and correctly deployed 
to the public repository.
+
+### build a Pre-release
+
+You need to build a Pre-release before voting, such as:
+https://github.com/apache/fury/releases/tag/v0.10.3-rc2
+
+### Fury Community Vote
+
+you need send a email to Fury Community: [email protected]:
+
+Title:
+
+```
+[VOTE] Release Apache Fury(incubating) v${release_version}-${rc_version}
+```
+
+Content:
+
+```
+Hello, Apache Fury(incubating) Community:
+
+This is a call for vote to release Apache Fury(Incubating)
+version release-0.5.0-rc3.
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+The discussion thread:
+https://lists.apache.org/thread/xxr3od301g6v3ndj14zqc05byp9qvclh
+
+The change lists about this release:
+https://github.com/apache/fury/compare/v0.4.1...v0.5.0-rc3
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/incubator/fury/0.5.0-rc3/
+
+The maven staging for this release:
+https://repository.apache.org/content/repositories/orgapachefury-1003
+
+Git tag for the release:
+https://github.com/apache/fury/releases/tag/v0.5.0-rc3
+
+Git commit for the release:
+https://github.com/apache/fury/commit/fae06330edd049bb960536e978a45b97bca66faf
+
+The artifacts signed with PGP key [5E580BA4], corresponding to
+[[email protected]], that can be found in keys file:
+https://downloads.apache.org/incubator/fury/KEYS
+
+The vote will be open for at least 72 hours until the necessary number of 
votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+To learn more about Fury, please see https://fury.apache.org/
+
+*Valid check is a requirement for a vote. *Checklist for reference:
+
+[ ] Download Fury is valid.
+[ ] Checksums and PGP signatures are valid.
+[ ] Source code distributions have correct names matching the current release.
+[ ] LICENSE and NOTICE files are correct.
+[ ] All files have license headers if necessary.
+[ ] No compiled archives bundled in source archive.
+[ ] Can compile from source.
+
+More detail checklist please refer:
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+
+How to Build and Test, please refer to: 
https://github.com/apache/fury/blob/main/docs/guide/DEVELOPMENT.md
+
+
+Thanks,
+Chaokun Yang
+```
+
+After at least 3 +1 binding vote (from Fury Podling PMC member and committers) 
and no veto, claim the vote result:
+
+Title:
+
+```
+[RESULT][VOTE] Release Apache Fury(incubating) 
v${release_version}-${rc_version}
+```
+
+Content:
+
+```
+Hello, Apache Fury(incubating) Community,
+
+The vote to release Apache Fury(Incubating) v${release_version}-${rc_version} 
has passed.
+
+The vote PASSED with 3 binding +1 and 0 -1 vote:
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Vote thread: ${vote_thread_url}
+
+Thanks,
+
+${name}
+```
+
+### Incubator Community Vote
+
+Send an email to: [email protected]:
+
+Title:
+
+```
+[VOTE] Release Apache Fury(incubating) v${release_version}-${rc_version}
+```
+
+Content:
+
+```
+Hello everyone,
+
+This is a call for the vote to release Apache Fury(Incubating) 
v${release_version}-${rc_version}.
+
+The Apache Fury community has voted and approved the release of Apache
+Fury(incubating) v${release_version}-${rc_version}. We now kindly request the 
IPMC members
+review and vote for this release.
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+Fury community vote thread:
+${community_vote_thread_url}
+
+Vote result thread:
+${community_vote_result_thread_url}
+
+The release candidate:
+https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/
+
+This release has been signed with a PGP available here:
+https://downloads.apache.org/incubator/fury/KEYS
+
+Git tag for the release:
+https://github.com/apache/fury/releases/tag/v${release_version}-${rc_version}/
+
+Git commit for the release:
+https://github.com/apache/fury/commit/$xxx
+
+Maven staging repo:
+https://repository.apache.org/content/repositories/orgapachefury-${maven_artifact_number}/
+
+How to Build and Test, please refer to:
+https://github.com/apache/fury/blob/main/docs/guide/DEVELOPMENT.md
+
+Please download, verify, and test.
+
+The VOTE will pass after 3 binding approve.
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+To learn more about apache fury, please see https://fury.apache.org/
+
+Checklist for reference:
+
+[ ] Download links are valid.
+[ ] Checksums and signatures.
+[ ] LICENSE/NOTICE files exist
+[ ] No unexpected binary files
+[ ] All source files have ASF headers
+[ ] Can compile from source
+
+Thanks,
+
+${name}
+```
+
+After at least 72 hours with at least 3 +1 binding vote (from Incubator PMC 
member) and no veto, claim the vote result:
+
+Title:
+
+```
+[RESULT][VOTE] Release Apache Fury(incubating) 
v${release_version}-${rc_version}
+```
+
+Content:
+
+```
+Hi Incubator PMC,
+
+The vote to release Apache Fury(incubating) v${release_version}-${rc_version} 
has passed with
+4 +1 binding and 3 +1 non-binding votes, no +0 or -1 votes.
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Non-Binding votes:
+
+- aaa
+
+Vote thread: ${incubator_vote_thread_url}
+
+Thanks for reviewing and voting for our release candidate.
+
+We will proceed with publishing the approved artifacts and sending out the 
announcement soon.
+```
+
+### What if vote fail
+
+If the vote failed, click "Drop" to drop the staging Maven artifacts.
+
+Address the raised issues, then bump `rc_version` and file a new vote again.
+
+## Official Release
+
+### Publish artifacts to SVN Release Directory
+
+- release_version: the release version for fury, like 0.5.0
+- release_candidate_version: the version for voting, like 0.5.0-rc1
+
+```bash
+svn mv 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}
 https://dist.apache.org/repos/dist/release/incubator/fury/${release_version} 
-m "Release fury ${release_version}"
+```
+
+In the repository at https://dist.apache.org/repos/dist/dev/incubator/fury/, 
if any
+outdated release_candidate_version are left behind when releasing the 
release_version,
+please clear them to keep the dev repository tidy.
+
+When 
`https://archive.apache.org/dist/incubator/fury/0.10.0/${release_version}` is
+accessible (confirming that the release_version has been successfully released
+and archived), we may clean up the previous release version in the release 
repository,
+leaving only the current version.
+
+### Update Fury&Fury-Site content
+
+Submit a PR to https://github.com/apache/fury-site to update Fury-site.
+Reference implementation: [#222](https://github.com/apache/fury-site/pull/222)
+and [#223](https://github.com/apache/fury-site/pull/223).
+
+Submit a PR to https://github.com/apache/fury to update 
[README](https://github.com/apache/fury/blob/main/README.md),
+like [#2207](https://github.com/apache/fury/pull/2207).
+
+### Github officially released
+
+You need to officially release this version in the Fury project
+Reference implementation: https://github.com/apache/fury/releases/tag/v0.10.3
+
+### Release Maven artifacts
+
+- maven_artifact_number: the number for Maven staging artifacts, like 1001.
+- Open https://repository.apache.org/#stagingRepositories.
+- Find the artifact `orgapachefury-${maven_artifact_number}`, click "Release".
+
+### Send the announcement
+
+Send the release announcement to [email protected] and CC 
[email protected].
+
+Title:
+
+```
+[ANNOUNCE] Release Apache Fury(incubating) ${release_version}
+```
+
+Content:
+
+```
+Hi all,
+
+The Apache Fury(incubating) community is pleased to announce
+that Apache Fury(incubating) {release_version} has been released!
+
+Apache Fury(incubating) - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+The release notes are available here:
+https://github.com/apache/fury/releases/tag/v${release_version}
+
+For the complete list of changes:
+https://github.com/apache/fury/compare/v0.5.0...v${release_version}
+
+Apache Fury website: https://fury.apache.org/
+
+Download Links: https://fury.apache.org/download
+
+Fury Resources:
+- Fury github repo: https://github.com/apache/fury
+- Issue: https://github.com/apache/fury/issues
+- Mailing list: [email protected]
+
+We are looking to grow our community and welcome new contributors. If
+you are interested in contributing to Fury, please contact us on the
+mailing list or on GitHub. We will be happy to help you get started.
+
+------------------
+Best Regards,
+${your_name}
+```
+
+Remember to use plain text instead of rich text format, or you may be rejected 
when CC [email protected]
+
+After completing the above steps, the Fury release process comes to an end.
diff --git a/versioned_docs/version-0.10/community/how_to_verify.md 
b/versioned_docs/version-0.10/community/how_to_verify.md
new file mode 100644
index 00000000..23b7395b
--- /dev/null
+++ b/versioned_docs/version-0.10/community/how_to_verify.md
@@ -0,0 +1,122 @@
+---
+title: How to verify
+sidebar_position: 0
+id: how_to_verify
+---
+
+
+For detailed check list, please refer to the [official check 
list](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
+
+## Download the candidate version
+
+```bash
+#If there is svn locally, you can clone to the local
+svn co 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/
+# You can download the material file directly
+wget 
https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/xxx.xxx
+```
+
+## Verify checksums and signatures
+
+First you need to install gpg:
+
+```bash
+apt-get install gnupg
+# or
+yum install gnupg
+# or
+brew install gnupg
+```
+
+Then import the Fury release manager's public key:
+
+```bash
+curl https://downloads.apache.org/incubator/fury/KEYS > KEYS # Download KEYS
+gpg --import KEYS # Import KEYS to local
+# Then, trust the public key:
+gpg --edit-key <KEY-used-in-this-version> # Edit the key(mentioned in vote 
email)
+# It will enter the interactive mode, use the following command to trust the 
key:
+gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+
+gpg> trust
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+
+Please decide how far you trust this user to correctly verify other users' keys
+(by looking at passports, checking fingerprints from different sources, etc.)
+
+  1 = I don't know or won't say
+  2 = I do NOT trust
+  3 = I trust marginally
+  4 = I trust fully
+  5 = I trust ultimately
+  m = back to the main menu
+
+Your decision? 5
+Do you really want to set this key to ultimate trust? (y/N) y
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: ultimate      validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <[email protected]>
+Please note that the shown key validity is not necessarily correct
+unless you restart the program.
+```
+
+Next verify signature:
+
+```bash
+for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i; done
+```
+
+If something like the following appears, it means the signature is correct:
+
+```bash
+apache-fury-incubating-0.5.0-src.tar.gz
+gpg: Signature made Wed 17 Apr 2024 11:49:45 PM CST using RSA key ID 5E580BA4
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
+gpg: Good signature from "chaokunyang (CODE SIGNING KEY) 
<[email protected]>"
+```
+
+Then verify checksum:
+
+```bash
+for i in *.tar.gz; do echo $i; sha512sum --check  $i.sha512; done
+```
+
+It should output something like:
+
+```bash
+apache-fury-incubating-0.5.0-src.tar.gz
+apache-fury-incubating-0.5.0-src.tar.gz: OK
+```
+
+## Check the file content of the source package
+
+Unzip `apache-fury-${release_version}-${rc_version}-src.tar.gz` and check the 
follows:
+
+- LICENSE and NOTICE files are correct for the repository.
+- All files have ASF license headers if necessary.
+- Building is OK.
+
+## Check the Maven artifacts of fury-java
+
+Download the artifacts from 
https://repository.apache.org/content/repositories/orgapachefury-${maven_artifact_number}/.
+
+You can check the follows:
+
+- Checksum of JARs match the bundled checksum file.
+- Signature of JARs match the bundled signature file.
+- JARs is reproducible locally. This means you can build the JARs on your 
machine and verify the checksum is the same with the bundled one.
diff --git a/docs/introduction/benchmark.md 
b/versioned_docs/version-0.10/docs/01-Introduction/benchmark.md
similarity index 100%
rename from docs/introduction/benchmark.md
rename to versioned_docs/version-0.10/docs/01-Introduction/benchmark.md
diff --git a/docs/introduction/features.md 
b/versioned_docs/version-0.10/docs/01-Introduction/features.md
similarity index 100%
rename from docs/introduction/features.md
rename to versioned_docs/version-0.10/docs/01-Introduction/features.md
diff --git a/docs/introduction/introduction.md 
b/versioned_docs/version-0.10/docs/01-Introduction/introduction.md
similarity index 100%
rename from docs/introduction/introduction.md
rename to versioned_docs/version-0.10/docs/01-Introduction/introduction.md
diff --git a/docs/start/install.md 
b/versioned_docs/version-0.10/docs/02-Start/install.md
similarity index 100%
rename from docs/start/install.md
rename to versioned_docs/version-0.10/docs/02-Start/install.md
diff --git a/docs/start/usage.md 
b/versioned_docs/version-0.10/docs/02-Start/usage.md
similarity index 100%
rename from docs/start/usage.md
rename to versioned_docs/version-0.10/docs/02-Start/usage.md
diff --git a/docs/guide/DEVELOPMENT.md 
b/versioned_docs/version-0.10/docs/03-Guide/DEVELOPMENT.md
similarity index 100%
rename from docs/guide/DEVELOPMENT.md
rename to versioned_docs/version-0.10/docs/03-Guide/DEVELOPMENT.md
diff --git a/docs/guide/graalvm_guide.md 
b/versioned_docs/version-0.10/docs/03-Guide/graalvm_guide.md
similarity index 100%
rename from docs/guide/graalvm_guide.md
rename to versioned_docs/version-0.10/docs/03-Guide/graalvm_guide.md
diff --git a/docs/guide/java_serialization_guide.md 
b/versioned_docs/version-0.10/docs/03-Guide/java_serialization_guide.md
similarity index 100%
rename from docs/guide/java_serialization_guide.md
rename to versioned_docs/version-0.10/docs/03-Guide/java_serialization_guide.md
diff --git a/docs/guide/row_format_guide.md 
b/versioned_docs/version-0.10/docs/03-Guide/row_format_guide.md
similarity index 100%
rename from docs/guide/row_format_guide.md
rename to versioned_docs/version-0.10/docs/03-Guide/row_format_guide.md
diff --git a/docs/guide/scala_guide.md 
b/versioned_docs/version-0.10/docs/03-Guide/scala_guide.md
similarity index 100%
rename from docs/guide/scala_guide.md
rename to versioned_docs/version-0.10/docs/03-Guide/scala_guide.md
diff --git a/docs/guide/xlang_serialization_guide.md 
b/versioned_docs/version-0.10/docs/03-Guide/xlang_serialization_guide.md
similarity index 100%
rename from docs/guide/xlang_serialization_guide.md
rename to versioned_docs/version-0.10/docs/03-Guide/xlang_serialization_guide.md
diff --git a/docs/guide/xlang_type_mapping.md 
b/versioned_docs/version-0.10/docs/03-Guide/xlang_type_mapping.md
similarity index 98%
rename from docs/guide/xlang_type_mapping.md
rename to versioned_docs/version-0.10/docs/03-Guide/xlang_type_mapping.md
index b6acb9a9..1638e2ab 100644
--- a/docs/guide/xlang_type_mapping.md
+++ b/versioned_docs/version-0.10/docs/03-Guide/xlang_type_mapping.md
@@ -21,7 +21,7 @@ license: |
 
 Note:
 
-- For type definition, see [Type Systems in 
Spec](../specification/xlang_serialization_spec.md#type-systems)
+- For type definition, see [Type Systems in 
Spec](../docs/specification/xlang_serialization_spec.md#type-systems)
 - `int16_t[n]/vector<T>` indicates `int16_t[n]/vector<int16_t>`
 - The cross-language serialization is not stable, do not use it in your 
production environment.
 
diff --git 
a/versioned_docs/version-0.10/specification/java_serialization_spec.md 
b/versioned_docs/version-0.10/specification/java_serialization_spec.md
new file mode 100644
index 00000000..257f0172
--- /dev/null
+++ b/versioned_docs/version-0.10/specification/java_serialization_spec.md
@@ -0,0 +1,560 @@
+---
+title: Fury Java Serialization Format
+sidebar_position: 1
+id: fury_java_serialization_spec
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## Spec overview
+
+Fury Java Serialization is an automatic object serialization framework that 
supports reference and polymorphism. Fury
+will
+convert an object from/to fury java serialization binary format. Fury has two 
core concepts for java serialization:
+
+- **Fury Java Binary format**
+- **Framework to convert object to/from Fury Java Binary format**
+
+The serialization format is a dynamic binary format. The dynamics and 
reference/polymorphism support make Fury flexible,
+much more easy to use, but
+also introduce more complexities compared to static serialization frameworks. 
So the format will be more complex.
+
+Here is the overall format:
+
+```
+| fury header | object ref meta | object class meta | object value data |
+```
+
+The data are serialized using little endian byte order overall. If bytes swap 
is costly for some object,
+Fury will write the byte order for that object into the data instead of 
converting it to little endian.
+
+## Fury header
+
+Fury header consists starts one byte:
+
+```
+|     4 bits    | 1 bit | 1 bit | 1 bit  | 1 bit |          optional 4 bytes   
       |
++---------------+-------+-------+--------+-------+------------------------------------+
+| reserved bits |  oob  | xlang | endian | null  | unsigned int for meta start 
offset |
+```
+
+- null flag: 1 when object is null, 0 otherwise. If an object is null, other 
bits won't be set.
+- endian flag: 1 when data is encoded by little endian, 0 for big endian.
+- xlang flag: 1 when serialization uses xlang format, 0 when serialization 
uses Fury java format.
+- oob flag: 1 when passed `BufferCallback` is not null, 0 otherwise.
+
+If meta share mode is enabled, an uncompressed unsigned int is appended to 
indicate the start offset of metadata.
+
+## Reference Meta
+
+Reference tracking handles whether the object is null, and whether to track 
reference for the object by writing
+corresponding flags and maintaining internal state.
+
+Reference flags:
+
+| Flag                | Byte Value | Description                               
                                                                                
                              |
+|---------------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
+| NULL FLAG           | `-3`       | This flag indicates the object is a null 
value. We don't use another byte to indicate REF, so that we can save one byte. 
                               |
+| REF FLAG            | `-2`       | This flag indicates the object is already 
serialized previously, and fury will write a ref id with unsigned varint format 
instead of serialize it again |
+| NOT_NULL VALUE FLAG | `-1`       | This flag indicates the object is a 
non-null value and fury doesn't track ref for this type of object.              
                                    |
+| REF VALUE FLAG      | `0`        | This flag indicates the object is 
referencable and the first time to serialize.                                   
                                      |
+
+When reference tracking is disabled globally or for specific types, or for 
certain types within a particular
+context(e.g., a field of a class), only the `NULL` and `NOT_NULL VALUE` flags 
will be used for reference meta.
+
+## Class Meta
+
+Fury supports to register class by an optional id, the registration can be 
used for security check and class
+identification.
+If a class is registered, it will have a user-provided or an auto-growing 
unsigned int i.e. `class_id`.
+
+Depending on whether meta share mode and registration is enabled for current 
class, Fury will write class meta
+differently.
+
+### Schema consistent
+
+If schema consistent mode is enabled globally or enabled for current class, 
class meta will be written as follows:
+
+- If class is registered, it will be written as a fury unsigned varint: 
`class_id << 1`.
+- If class is not registered:
+  - If class is not an array, fury will write one byte `0bxxxxxxx1` first, 
then write class name.
+    - The first little bit is `1`, which is different from first bit `0` of
+          encoded class id. Fury can use this information to determine whether 
to read class by class id for
+          deserialization.
+  - If class is not registered and class is an array, fury will write one byte 
`dimensions << 1 | 1` first, then write
+      component
+      class subsequently. This can reduce array class name cost if component 
class is or will be serialized.
+  - Class will be written as two enumerated fury unsigned by default: `package 
name` and `class name`. If meta share
+      mode is
+      enabled,
+      class will be written as an unsigned varint which points to index in 
`MetaContext`.
+
+### Schema evolution
+
+If schema evolution mode is enabled globally or enabled for current class, 
class meta will be written as follows:
+
+- If meta share mode is not enabled, class meta will be written as schema 
consistent mode. Additionally, field meta such
+  as field type
+  and name will be written with the field value using a key-value like layout.
+- If meta share mode is enabled, class meta will be written as a meta-share 
encoded binary if class hasn't been written
+  before, otherwise an unsigned varint id which references to previous written 
class meta will be written.
+
+## Meta share
+
+> This mode will forbid streaming writing since it needs to look back for 
update the start offset after the whole object
+> graph
+> writing and meta collecting is finished. Only in this way we can ensure 
deserialization failure doesn't lost shared
+> meta.
+> Meta streamline will be supported in the future for enclosed meta sharing 
which doesn't cross multiple serializations
+> of different objects.
+
+For Schema consistent mode, class will be encoded as an enumerated string by 
full class name. Here we mainly describe
+the meta layout for schema evolution mode:
+
+```
+|  8 bytes global meta header   |  1~2 bytes  |   variable bytes   |  variable 
bytes   | variable bytes |
++-------------------------------+-------------|--------------------+-------------------+----------------+
+| 50 bits hash + 14 bits header | type header | current class meta | parent 
class meta |      ...       |
+```
+
+Class meta are encoded from parent class to leaf class, only class with 
serializable fields will be encoded.
+
+### Global meta header
+
+Meta header is a 64 bits number value encoded in little endian order.
+
+- lower 12 bits are used to encode meta size. If meta size `>= 
0b111_1111_1111`, then write
+  `meta_ size - 0b111_1111_1111` next.
+- 13rd bit is used to indicate whether to write fields meta. When this class 
is schema-consistent or use registered
+  serializer, fields meta will be skipped. Class Meta will be used for share 
namespace + type name only.
+- 14rd bit is used to indicate whether meta is compressed.
+- Other 50 bits is used to store the unique hash of `flags + all layers class 
meta`.
+
+### Type header
+
+- Lowest 4 digits `0b0000~0b1110` are used to record num classes. `0b1111` is 
preserved to indicate that Fury need to
+  read more bytes for length using Fury unsigned int encoding. If current 
class doesn't has parent class, or parent
+  class doesn't have fields to serialize, or we're in a context which 
serialize fields of current class
+  only(`ObjectStreamSerializer#SlotInfo` is an example), num classes will be 1.
+- Other 4 bits are preserved to future extensions.
+- If num classes are greater than or equal to `0b1111`, write `num_classes - 
0b1111` as varuint next.
+
+### Single layer class meta
+
+```
+|      unsigned varint       |      meta string      |     meta string     |  
field info: variable bytes   | variable bytes  | ... |
++----------------------------+-----------------------+---------------------+-------------------------------+-----------------+-----+
+| num fields + register flag | header + package name | header + class name | 
header + type id + field name | next field info | ... |
+```
+
+- num fields: encode `num fields << 1 | register flag(1 when class 
registered)` as unsigned varint.
+  - If class is registered, then an unsigned varint class id will be written 
next, package and class name will be
+      omitted.
+  - If current class is schema consistent, then num field will be `0` to flag 
it.
+  - If current class isn't schema consistent, then num field will be the 
number of compatible fields. For example,
+      users
+      can use tag id to mark some field as compatible field in schema 
consistent context. In such cases, schema
+      consistent
+      fields will be serialized first, then compatible fields will be 
serialized next. At deserialization, Fury will use
+      fields info of those fields which aren't annotated by tag id for 
deserializing schema consistent fields, then use
+      fields info in meta for deserializing compatible fields.
+- Package name encoding(omitted when class is registered):
+  - encoding algorithm: `UTF8/ALL_TO_LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL`
+  - Header: `6 bits size | 2 bits encoding flags`. The `6 bits size: 0~63`  
will be used to indicate size `0~63`,
+      the value `63` the size need more byte to read, the encoding will encode 
`size - 63` as a varint next.
+- Class name encoding(omitted when class is registered):
+  - encoding algorithm: 
`UTF8/LOWER_UPPER_DIGIT_SPECIAL/FIRST_TO_LOWER_SPECIAL/ALL_TO_LOWER_SPECIAL`
+  - header: `6 bits size | 2 bits encoding flags`. The `6 bits size: 0~63`  
will be used to indicate size `0~63`,
+      the value `63` the size need more byte to read, the encoding will encode 
`size - 63` as a varint next.
+- Field info:
+  - header(8
+      bits): `3 bits size + 2 bits field name encoding + polymorphism flag + 
nullability flag + ref tracking flag`.
+      Users can use annotation to provide those info.
+    - 2 bits field name encoding:
+      - encoding: `UTF8/ALL_TO_LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL/TAG_ID`
+      - If tag id is used, i.e. field name is written by an unsigned varint 
tag id. 2 bits encoding will be `11`.
+    - size of field name:
+      - The `3 bits size: 0~7`  will be used to indicate length `1~7`, the 
value `6` the size read more bytes,
+              the encoding will encode `size - 7` as a varint next.
+      - If encoding is `TAG_ID`, then num_bytes of field name will be used to 
store tag id.
+    - ref tracking: when set to 1, ref tracking will be enabled for this field.
+    - nullability: when set to 1, this field can be null.
+    - polymorphism: when set to 1, the actual type of field will be the 
declared field type even the type if
+          not `final`.
+  - type id:
+    - For registered type-consistent classes, it will be the registered class 
id.
+    - Otherwise it will be encoded as `OBJECT_ID` if it isn't `final` and 
`FINAL_OBJECT_ID` if it's `final`. The
+          meta for such types is written separately instead of inlining here 
is to reduce meta space cost if object of
+          this type is serialized in current object graph multiple times, and 
the field value may be null too.
+  - Field name: If type id is set, type id will be used instead. Otherwise 
meta string encoding length and data will
+      be written instead.
+
+Field order are left as implementation details, which is not exposed to 
specification, the deserialization need to
+resort fields based on Fury field comparator. In this way, fury can compute 
statistics for field names or types and
+using a more compact encoding.
+
+### Other layers class meta
+
+Same encoding algorithm as the previous layer except:
+
+- header + package name:
+  - Header:
+    - If package name has been written before: `varint index + sharing 
flag(set)` will be written
+    - If package name hasn't been written before:
+      - If meta string encoding is `LOWER_SPECIAL` and the length of encoded 
string `<=` 64, then header will be
+              `6 bits size + encoding flag(set) + sharing flag(unset)`.
+      - Otherwise, header will
+              be `3 bits unset + 3 bits encoding flags + encoding flag(unset) 
+ sharing flag(unset)`
+
+## Meta String
+
+Meta string is mainly used to encode meta strings such as class name and field 
names.
+
+### Encoding Algorithms
+
+String binary encoding algorithm:
+
+| Algorithm                 | Pattern       | Description                      
                                                                                
                                                                                
                                                                                
        |
+|---------------------------|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| LOWER_SPECIAL             | `a-z._$\|`    | every char is written using 5 
bits, `a-z`: `0b00000~0b11001`, `._$\|`: `0b11010~0b11101`, prepend one bit at 
the start to indicate whether strip last char since last byte may have 7 
redundant bits(1 indicates strip last char)                                     
                   |
+| LOWER_UPPER_DIGIT_SPECIAL | `a-zA-Z0~9._` | every char is written using 6 
bits, `a-z`: `0b00000~0b11001`, `A-Z`: `0b11010~0b110011`, `0~9`: 
`0b110100~0b111101`, `._`: `0b111110~0b111111`,  prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last char) |
+| UTF-8                     | any chars     | UTF-8 encoding                   
                                                                                
                                                                                
                                                                                
        |
+
+Encoding flags:
+
+| Encoding Flag             | Pattern                                          
             | Encoding Algorithm                                               
                                                                                
           |
+|---------------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| LOWER_SPECIAL             | every char is in `a-z._$\|`                      
             | `LOWER_SPECIAL`                                                  
                                                                                
           |
+| FIRST_TO_LOWER_SPECIAL    | every char is in `a-z[c1,c2]` except first char 
is upper case | replace first upper case char to lower case, then use 
`LOWER_SPECIAL`                                                                 
                      |
+| ALL_TO_LOWER_SPECIAL      | every char is in `a-zA-Z[c1,c2]`                 
             | replace every upper case char by `\|` + `lower case`, then use 
`LOWER_SPECIAL`, use this encoding if it's smaller than Encoding 
`LOWER_UPPER_DIGIT_SPECIAL` |
+| LOWER_UPPER_DIGIT_SPECIAL | every char is in `a-zA-Z[c1,c2]`                 
             | use `LOWER_UPPER_DIGIT_SPECIAL` encoding if it's smaller than 
Encoding `FIRST_TO_LOWER_SPECIAL`                                               
              |
+| UTF8                      | any utf-8 char                                   
             | use `UTF-8` encoding                                             
                                                                                
           |
+| Compression               | any utf-8 char                                   
             | lossless compression                                             
                                                                                
           |
+
+Notes:
+
+- For package name encoding, `c1,c2` should be `._`; For field/type name 
encoding, `c1,c2` should be `_$`;
+- Depending on cases, one can choose encoding `flags + data` jointly, uses 3 
bits of first byte for flags and other
+  bytes
+  for data.
+
+### Shared meta string
+
+The shared meta string format consists of header and encoded string binary. 
Header of encoded string binary will be
+inlined
+in shared meta header.
+
+Header is written using little endian order, Fury can read this flag first to 
determine how to deserialize the data.
+
+#### Write by data
+
+If string hasn't been written before, the data will be written as follows:
+
+```
+| unsigned varint: string binary size + 1 bit: not written before | 56 bits: 
unique hash | 3 bits encoding flags + string binary |
+```
+
+If string binary size is less than `16` bytes, the hash will be omitted to 
save spaces. Unique hash can be omitted too
+if caller pass a flag to disable it. In such cases, the format will be:
+
+```
+| unsigned varint: string binary size + 1 bit: not written before  | 3 bits 
encoding flags + string binary |
+```
+
+#### Write by ref
+
+If string has been written before, the data will be written as follows:
+
+```
+| unsigned varint: written string id + 1 bit: written before |
+```
+
+## Value Format
+
+### Basic types
+
+#### Bool
+
+- size: 1 byte
+- format: 0 for `false`, 1 for `true`
+
+#### Byte
+
+- size: 1 byte
+- format: write as pure byte.
+
+#### Short
+
+- size: 2 byte
+- byte order: little endian order
+
+#### Char
+
+- size: 2 byte
+- byte order: little endian order
+
+#### Unsigned int
+
+- size: 1~5 byte
+- Format: The most significant bit (MSB) in every byte indicates whether to 
have the next byte. If first bit is set
+  i.e. `b & 0x80 == 0x80`, then
+  the next byte should be read until the first bit of the next byte is unset.
+
+#### Signed int
+
+- size: 1~5 byte
+- Format: First convert the number into positive unsigned int by `(v << 1) ^ 
(v >> 31)` ZigZag algorithm, then encoding
+  it as an unsigned int.
+
+#### Unsigned long
+
+- size: 1~9 byte
+- Fury PVL(Progressive Variable-length Long) Encoding:
+  - positive long format: first bit in every byte indicates whether to have 
the next byte. If first bit is set
+      i.e. `b & 0x80 == 0x80`, then the next byte should be read until the 
first bit is unset.
+
+#### Signed long
+
+- size: 1~9 byte
+- Fury SLI(Small long as int) Encoding:
+  - If long is in [-1073741824, 1073741823], encode as 4 bytes int: `| 
little-endian: ((int) value) << 1 |`
+  - Otherwise write as 9 bytes: `| 0b1 | little-endian 8 bytes long |`
+- Fury PVL(Progressive Variable-length Long) Encoding:
+  - First convert the number into positive unsigned long by `(v << 1) ^ (v >> 
63)` ZigZag algorithm to reduce cost of
+      small negative numbers, then encoding it as an unsigned long.
+
+#### Float
+
+- size: 4 byte
+- format: convert float to 4 bytes int by `Float.floatToRawIntBits`, then 
write as binary by little endian order.
+
+#### Double
+
+- size: 8 byte
+- format: convert double to 8 bytes int by `Double.doubleToRawLongBits`, then 
write as binary by little endian order.
+
+### String
+
+Format:
+
+```
+| header: size << 2 | 2 bits encoding flags | binary data |
+```
+
+- `size + encoding` will be concat as a long and encoded as an unsigned var 
long. The little 2 bits is used for
+  encoding:
+  0 for `latin`, 1 for `utf-16`, 2 for `utf-8`.
+- encoded string binary data based on encoding: `latin/utf-16/utf-8`.
+
+Which encoding to choose:
+
+- For JDK8: fury detect `latin` at runtime, if string is `latin` string, then 
use `latin` encoding, otherwise
+  use `utf-16`.
+- For JDK9+: fury use `coder` in `String` object for encoding, 
`latin`/`utf-16` will be used for encoding.
+- If the string is encoded by `utf-8`, then fury will use `utf-8` to decode 
the data. But currently fury doesn't enable
+  utf-8 encoding by default for java. Cross-language string serialization of 
fury uses `utf-8` by default.
+
+### Collection
+
+> All collection serializers must extend `AbstractCollectionSerializer`.
+
+Format:
+
+```
+length(unsigned varint) | collection header | elements header | elements data
+```
+
+#### Collection header
+
+- For `ArrayList/LinkedArrayList/HashSet/LinkedHashSet`, this will be empty.
+- For `TreeSet`, this will be `Comparator`
+- For subclass of `ArrayList`, this may be extra object field info.
+
+#### Elements header
+
+In most cases, all collection elements are same type and not null, elements 
header will encode those homogeneous
+information to avoid the cost of writing it for every element. Specifically, 
there are four kinds of information
+which will be encoded by elements header, each use one bit:
+
+- If track elements ref, use the first bit `0b1` of the header to flag it.
+- If the collection has null, use the second bit `0b10` of the header to flag 
it. If ref tracking is enabled for this
+  element type, this flag is invalid.
+- If the collection element types are not declared type, use the 3rd bit 
`0b100` of the header to flag it.
+- If the collection element types are different, use the 4rd bit `0b1000` 
header to flag it.
+
+By default, all bits are unset, which means all elements won't track ref, all 
elements are same type, not null and
+the actual element is the declared type in the custom class field.
+
+The implementation can generate different deserialization code based read 
header, and look up the generated code from a
+linear map/list.
+
+#### Elements data
+
+Based on the elements header, the serialization of elements data may skip `ref 
flag`/`null flag`/`element class info`.
+
+`CollectionSerializer#write/read` can be taken as an example.
+
+### Array
+
+#### Primitive array
+
+Primitive array are taken as a binary buffer, serialization will just write 
the length of array size as an unsigned int,
+then copy the whole buffer into the stream.
+
+Such serialization won't compress the array. If users want to compress 
primitive array, users need to register custom
+serializers for such types.
+
+#### Object array
+
+Object array is serialized using the collection format. Object component type 
will be taken as collection element
+generic
+type.
+
+### Map
+
+> All Map serializers must extend `AbstractMapSerializer`.
+
+Format:
+
+```
+| length(unsigned varint) | map header | key value pairs data |
+```
+
+#### Map header
+
+- For `HashMap/LinkedHashMap`, this will be empty.
+- For `TreeMap`, this will be `Comparator`
+- For other `Map`, this may be extra object field info.
+
+#### Map Key-Value data
+
+Map iteration is too expensive, Fury won't compute the header like for 
collection before since it introduce
+[considerable overhead](https://github.com/apache/fury/issues/925).
+Users can use `MapFieldInfo` annotation to provide header in advance. 
Otherwise Fury will use first key-value pair to
+predict header optimistically, and update the chunk header if the prediction 
failed at some pair.
+
+Fury will serialize map chunk by chunk, every chunk has 127 pairs at most.
+
+```
+|    1 byte      |     1 byte     | variable bytes  |
++----------------+----------------+-----------------+
+|    KV header   | chunk size: N  |   N*2 objects   |
+```
+
+KV header:
+
+- If track key ref, use the first bit `0b1` of the header to flag it.
+- If the key has null, use the second bit `0b10` of the header to flag it. If 
ref tracking is enabled for this
+  key type, this flag is invalid.
+- If the actual key type of map is not the declared key type, use the 3rd bit 
`0b100` of the header to flag it.
+- If track value ref, use the 4th bit `0b1000` of the header to flag it.
+- If the value has null, use the 5th bit `0b10000` of the header to flag it. 
If ref tracking is enabled for this
+  value type, this flag is invalid.
+- If the value type of map is not the declared value type, use the 6rd bit 
`0b100000` of the header to flag it.
+- If key or value is null, that key and value will be written as a separate 
chunk, and chunk size writing will be
+  skipped too.
+
+If streaming write is enabled, which means Fury can't update written `chunk 
size`. In such cases, map key-value data
+format will be:
+
+```
+|    1 byte      | variable bytes  |
++----------------+-----------------+
+|    KV header   |   N*2 objects   |
+```
+
+`KV header` will be a header marked by `MapFieldInfo` in java. The 
implementation can generate different deserialization
+code based read header, and look up the generated code from a linear map/list.
+
+### Enum
+
+Enums are serialized as an unsigned var int. If the order of enum values 
change, the deserialized enum value may not be
+the value users expect. In such cases, users must register enum serializer by 
make it write enum value as an enumerated
+string with unique hash disabled.
+
+### Object
+
+Object means object of `pojo/struct/bean/record` type.
+Object will be serialized by writing its fields data in fury order.
+
+Depending on schema compatibility, objects will have different formats.
+
+#### Field order
+
+Field will be ordered as following, every group of fields will have its own 
order:
+
+- primitive fields: larger size type first, smaller later, variable size type 
last.
+- boxed primitive fields: same order as primitive fields
+- final fields: same type together, then sorted by field name 
lexicographically.
+- collection fields: same order as final fields
+- map fields: same order as final fields
+- other fields: same order as final fields
+
+#### Schema consistent
+
+Object fields will be serialized one by one using following format:
+
+```
+Primitive field value:
+|   var bytes    |
++----------------+
+|   value data   |
++----------------+
+Boxed field value:
+| one byte  |   var bytes   |
++-----------+---------------+
+| null flag |  field value  |
++-----------+---------------+
+field value of final type with ref tracking:
+| var bytes | var objects |
++-----------+-------------+
+| ref meta  | value data  |
++-----------+-------------+
+field value of final type without ref tracking:
+| one byte  | var objects |
++-----------+-------------+
+| null flag | field value |
++-----------+-------------+
+field value of non-final type with ref tracking:
+| one byte  | var bytes | var objects |
++-----------+-------------+-------------+
+| ref meta  | class meta  | value data  |
++-----------+-------------+-------------+
+field value of non-final type without ref tracking:
+| one byte  | var bytes | var objects |
++-----------+------------+------------+
+| null flag | class meta | value data |
++-----------+------------+------------+
+```
+
+#### Schema evolution
+
+Schema evolution have similar format as schema consistent mode for object 
except:
+
+- For this object type itself, `schema consistent` mode will write class by 
id/name, but `schema evolution` mode will
+  write class field names, types and other meta too, see [Class 
meta](#class-meta).
+- Class meta of `final custom type` needs to be written too, because peers may 
not have this class defined.
+
+### Class
+
+Class will be serialized using class meta format.
+
+## Implementation guidelines
+
+- Try to merge multiple bytes into an int/long write before writing to reduce 
memory IO and bound check cost.
+- Read multiple bytes as an int/long, then split into multiple bytes to reduce 
memory IO and bound check cost.
+- Try to use one varint/long to write flags and length together to save one 
byte cost and reduce memory io.
+- Condition branches are less expensive compared to memory IO cost unless 
there are too many branches.
diff --git a/versioned_docs/version-0.10/specification/row_format_spec.md 
b/versioned_docs/version-0.10/specification/row_format_spec.md
new file mode 100644
index 00000000..eefd9d97
--- /dev/null
+++ b/versioned_docs/version-0.10/specification/row_format_spec.md
@@ -0,0 +1,24 @@
+---
+title: Fury Row Format
+sidebar_position: 2
+id: fury_row_format_spec
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## Row Format
+
+Coming soon
diff --git a/docs/specification/xlang_serialization_spec.md 
b/versioned_docs/version-0.10/specification/xlang_serialization_spec.md
similarity index 99%
copy from docs/specification/xlang_serialization_spec.md
copy to versioned_docs/version-0.10/specification/xlang_serialization_spec.md
index 60925476..8f15e542 100644
--- a/docs/specification/xlang_serialization_spec.md
+++ b/versioned_docs/version-0.10/specification/xlang_serialization_spec.md
@@ -151,7 +151,7 @@ types.
 
 ### Type mapping
 
-See [Type mapping](../guide/xlang_type_mapping.md)
+See [Type mapping](../docs/guide/xlang_type_mapping.md)
 
 ## Spec overview
 
diff --git a/versioned_sidebars/version-0.10-sidebars.json 
b/versioned_sidebars/version-0.10-sidebars.json
new file mode 100644
index 00000000..b14cd02a
--- /dev/null
+++ b/versioned_sidebars/version-0.10-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "specificationSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "specification"
+    }
+  ],
+  "communitySidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "community"
+    }
+  ]
+}
diff --git a/versions.json b/versions.json
new file mode 100644
index 00000000..384ee231
--- /dev/null
+++ b/versions.json
@@ -0,0 +1,3 @@
+[
+  "0.10"
+]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to