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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0b70be67bbb [fix][doc] Update contribution guide according to recent 
changes (#351)
0b70be67bbb is described below

commit 0b70be67bbb09ee62e78e974313ff5dbb2976d64
Author: tison <[email protected]>
AuthorDate: Sat Dec 31 00:10:36 2022 +0800

    [fix][doc] Update contribution guide according to recent changes (#351)
    
    Signed-off-by: tison <[email protected]>
---
 contribute/assets/release-note-guide-example.png   | Bin 273286 -> 0 bytes
 contribute/become-core-developer.md                |   2 +-
 contribute/create-gpg-keys.md                      |   2 +-
 contribute/develop-semantic-title.md               |   4 +-
 contribute/document-contribution.md                |  54 +--
 contribute/document-intro.md                       |  23 +-
 contribute/document-preview.md                     |  94 +----
 contribute/document-syntax.md                      |   4 +-
 .../{assets => media}/client-matrix-workflow.png   | Bin
 .../{assets => media}/obtain-github-permalink.png  | Bin
 .../semantic-pull-request-title.png                | Bin
 contribute/{assets => media}/website-preview.png   | Bin
 contribute/release-note-guide.md                   |  71 ++--
 contribute/release-process.md                      | 453 +++++++++++----------
 contribute/setup-building.md                       |   2 +-
 contribute/testing-licenses.md                     |   2 +-
 contribute/validate-release-candidate.md           |   2 +-
 contribute/version-policy.md                       |   2 +-
 docs/about.md                                      |   2 +-
 docs/client-libraries.md                           |   6 +-
 sidebarsDevelopment.js                             |   4 +-
 src/pages/contributing.md                          |   7 +-
 tools/pytools/bin/reference-doc-generator.py       |  23 +-
 .../version-2.10.x/security-tls-transport.md       |   2 +-
 .../version-2.2.0/security-tls-transport.md        |   2 +-
 .../version-2.2.1/security-tls-transport.md        |   2 +-
 .../version-2.3.0/security-tls-transport.md        |   2 +-
 .../version-2.3.1/security-tls-transport.md        |   2 +-
 .../version-2.3.2/security-tls-transport.md        |   2 +-
 .../version-2.4.0/security-tls-transport.md        |   2 +-
 .../version-2.4.1/security-tls-transport.md        |   2 +-
 .../version-2.4.2/security-tls-transport.md        |   2 +-
 .../version-2.5.0/security-tls-transport.md        |   2 +-
 .../version-2.5.1/security-tls-transport.md        |   2 +-
 .../version-2.5.2/security-tls-transport.md        |   2 +-
 .../version-2.6.0/security-tls-transport.md        |   2 +-
 .../version-2.6.1/security-tls-transport.md        |   2 +-
 .../version-2.6.2/security-tls-transport.md        |   2 +-
 .../version-2.6.3/security-tls-transport.md        |   2 +-
 .../version-2.6.4/security-tls-transport.md        |   2 +-
 .../version-2.7.0/security-tls-transport.md        |   2 +-
 .../version-2.7.1/security-tls-transport.md        |   2 +-
 .../version-2.7.2/security-tls-transport.md        |   2 +-
 .../version-2.7.3/security-tls-transport.md        |   2 +-
 .../version-2.7.4/security-tls-transport.md        |   2 +-
 .../version-2.7.5/security-tls-transport.md        |   2 +-
 .../version-2.8.x/security-tls-transport.md        |   2 +-
 .../version-2.9.x/security-tls-transport.md        |   2 +-
 48 files changed, 366 insertions(+), 441 deletions(-)

diff --git a/contribute/assets/release-note-guide-example.png 
b/contribute/assets/release-note-guide-example.png
deleted file mode 100644
index 25120c886e6..00000000000
Binary files a/contribute/assets/release-note-guide-example.png and /dev/null 
differ
diff --git a/contribute/become-core-developer.md 
b/contribute/become-core-developer.md
index 512cdea18eb..9aa0e54ba5f 100644
--- a/contribute/become-core-developer.md
+++ b/contribute/become-core-developer.md
@@ -1,6 +1,6 @@
 ---
 id: become-core-developer
-title: How to Become a Core Developer
+title: How to become a core developer
 ---
 
 The Pulsar community follows [the Apache governance 
model](https://www.apache.org/foundation/how-it-works.html#roles).
diff --git a/contribute/create-gpg-keys.md b/contribute/create-gpg-keys.md
index a5fdc8cd12a..51b72582adb 100644
--- a/contribute/create-gpg-keys.md
+++ b/contribute/create-gpg-keys.md
@@ -1,6 +1,6 @@
 ---
 id: create-gpg-keys
-title: Create GPG keys
+title: Creating GPG keys
 ---
 
 This page provides instructions for Pulsar committers on how to do the initial 
GPG setup.
diff --git a/contribute/develop-semantic-title.md 
b/contribute/develop-semantic-title.md
index a474b1bc3da..d28e751ee76 100644
--- a/contribute/develop-semantic-title.md
+++ b/contribute/develop-semantic-title.md
@@ -1,6 +1,6 @@
 ---
 id: develop-semantic-title
-title: Conventional Commits
+title: Conventional commits
 ---
 
 This guide explains why you need good PR titles and how you do write PR titles 
in Conventional Commits spec.
@@ -32,7 +32,7 @@ Good titles often bring many benefits, including but not 
limited to the followin
 
 A PR title should be structured as follows:
 
-![Semantic Pull Request Title](assets/semantic-pull-request-title.png)
+![Semantic Pull Request Title](media/semantic-pull-request-title.png)
 
 The rule can be interpreted as: A good title = clear format ([type](#type) and 
[scope](#scope)) + self-explanatory [summary](#summary).
 
diff --git a/contribute/document-contribution.md 
b/contribute/document-contribution.md
index 0d91ee8145e..f99d410b0f0 100644
--- a/contribute/document-contribution.md
+++ b/contribute/document-contribution.md
@@ -1,29 +1,17 @@
 ---
 id: document-contribution
-title: Contribution
+title: Updating document
 ---
 
 This guide explains the organization of Pulsar documentation and website repos 
and the workflow of updating various Pulsar documents.
 
 ## Source repositories
 
-Currently, the source of documents and website (where the docs are finally 
published) are located in two repositories:
-
-| Type          | Location                                                     
| Description                                                                   
                                                                                
                    |
-|---------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Documentation | [pulsar](https://github.com/apache/pulsar/tree/master/site2) 
| All files related to Pulsar documentation are stored in this repo.            
                                                                                
                    |
-| Website       | [pulsar-site](https://github.com/apache/pulsar-site)         
| 1. All files related to the Pulsar website are stored in the **main** branch 
in this repo. <br/> 2. The website is built and put in in the **asf-site-next** 
branch in this repo. |
-
-Documents in the `pulsar` repo are synced to the `pulsar-site` repo every 6 
hours, following the rules:
-
-| Source (pulsar)    | Destination (pulsar-site) |
-|--------------------|---------------------------|
-| site2/website      | site2/website-next        |
-| site2/docs         | site2/website-next/docs   |
+Currently, the source of documents and website (where the docs are finally 
published) are located at the 
[apache/pulsar-site](https://github.com/apache/pulsar-site) repo.
 
 ## Update versioned docs
 
-If you want to update versioned docs, go to [site2/website/versioned_docs/ 
folder under the main 
repo](https://github.com/apache/pulsar/tree/master/site2/website/versioned_docs)
 to find your desired one.
+If you want to update versioned docs, go to [versioned_docs 
folder](https://github.com/apache/pulsar-site/tree/main/versioned_docs) to find 
your desired one.
 
 For versions prior to 2.8, Pulsar releases versioned docs for each patch 
release. You can update the exact versioned doc.
 
@@ -39,18 +27,12 @@ This <fix / improvment> is available for 2.8.2 and later 
versions.
 :::
 ```
 
-:::note
-
-Read [PIP-190: Simplify documentation release and maintenance 
strategy](https://github.com/apache/pulsar/issues/16637) for more information.
-
-:::
-
 ## Update reference docs
 
-If you want to update [Pulsar configuration 
docs](https://pulsar.apache.org/reference/#/latest/), pay attention to the doc 
source files.
+If you want to update [Pulsar reference docs](pathname:///reference/), you 
should update the corresponding source files.
 
-- Some docs are generated from code **automatically**. If you want to update 
the docs, you need to update the source code files.
-- Some configuration docs are updated **manually** using markdown files.
+* Some reference docs are generated from code **automatically**. If you want 
to update the docs, you need to update the source code files.
+* Some configuration docs are updated **manually** using markdown files.
 
 ### Update configuration docs
 
@@ -69,12 +51,12 @@ Docs for configs of bundled components are generated from 
command-line tools **a
 
 Docs for configs of external components (whose source code is hosted outside 
the Pulsar repositories) are updated **manually**:
 
-| Components  | Update where ...                                               
                                                                                
                                  |
-|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| BookKeeper  | 
[reference-configuration-bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/config/reference-configuration-bookkeeper.md)
   |
-| Log4j       | 
[reference-configuration-log4j.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/config/reference-configuration-log4j.md)
             |
-| Log4j shell | 
[reference-configuration-log4j-shell.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/config/reference-configuration-log4j-shell.md)
 |
-| ZooKeeper   | 
[reference-configuration-zookeeper.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/config/reference-configuration-zookeeper.md)
     |
+| Components  | Update where ...                                               
                                                                                
               |
+|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| BookKeeper  | 
[reference-configuration-bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-bookkeeper.md)
   |
+| Log4j       | 
[reference-configuration-log4j.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-log4j.md)
             |
+| Log4j shell | 
[reference-configuration-log4j-shell.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-log4j-shell.md)
 |
+| ZooKeeper   | 
[reference-configuration-zookeeper.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/config/reference-configuration-zookeeper.md)
     |
 
 ### Update command-line tool docs
 
@@ -89,11 +71,11 @@ Docs for bundled Java-based command-line tools are 
generated **automatically**:
 
 Docs for external command-line tools or bare scripts are updated **manually**:
 
-| Components    | Update where…                                                
                                                                               |
-|---------------|---------------------------------------------------------------------------------------------------------------------------------------------|
-| pulsar-shell  | 
[pulsar-shell.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/pulsar-shell/pulsar-shell.md)
    |
-| pulsar-daemon | 
[pulsar-daemon.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/pulsar-daemon/pulsar-daemon.md)
 |
-| bookkeeper    | 
[bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/site2/website-next/static/reference/next/bookkeeper/bookkeeper.md)
          |
+| Components    | Update where…                                                
                                                            |
+|---------------|--------------------------------------------------------------------------------------------------------------------------|
+| pulsar-shell  | 
[pulsar-shell.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/pulsar-shell/pulsar-shell.md)
    |
+| pulsar-daemon | 
[pulsar-daemon.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/pulsar-daemon/pulsar-daemon.md)
 |
+| bookkeeper    | 
[bookkeeper.md](https://github.com/apache/pulsar-site/blob/main/static/reference/next/bookkeeper/bookkeeper.md)
          |
 
 ## Update client/function matrix
 
@@ -112,4 +94,4 @@ If you want to update the Pulsar Feature Matrix, follow the 
steps below.
 2. Get your PR reviewed and merged.
 3. In the [Pulsar Feature 
Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=1784579914),
 check the box in the corresponding cell with the links of PRs and doc site.
 
-![Client Feature Matrix Workflow](assets/client-matrix-workflow.png)
+![Client Feature Matrix Workflow](media/client-matrix-workflow.png)
diff --git a/contribute/document-intro.md b/contribute/document-intro.md
index 974d54984bd..878388804ff 100644
--- a/contribute/document-intro.md
+++ b/contribute/document-intro.md
@@ -8,29 +8,30 @@ Good documentation is crucial for any kind of software. This 
is especially true
 
 This introduction provides a set of guides offering best-practice suggestions 
for contributing documentation to Pulsar. It provides detailed instructions on 
the contribution workflow and conventions. Please follow these guidelines to 
keep the documentation structure, style, and syntax consistent.
 
-## Before writing documents
-
-* [Contribution Guide](document-contribution.md)
-    * Documentation structure and organization
-    * Workflow of submitting various docs
-
 ## Writing documents
 
+* [How to update document](document-contribution.md)
 * [Writing Syntax Guide](document-syntax.md)
 * [Writing Style 
Guide](https://docs.google.com/document/d/1lc5j4RtuLIzlEYCBo97AC8-U_3Erzs_lxpkDuseU0n4/edit#)
 * [Design Style 
Guide](https://docs.google.com/document/d/16Hp7Sc86MQtL0m8fc2w_TrcKXAuglwRwHmdmwfk00mI/edit#heading=h.b8ogodj5sj0)
 * [API Documentation 
Guide](https://docs.google.com/document/d/1-I1oQp1_HUaQopqilU-JdC-ksrLAgYNi93FZVnECwV8/edit#heading=h.wu6ygjne8e35)
 
-## Testing documents
+## Testing changes
+
+* [How to preview changes](document-preview.md)
 
-* [Content Preview Guide](document-preview.md)
+## Submitting changes
 
-## Preparing to submit doc PRs
+### Convention
 
 * [Labels](develop-labels.md)
-* [Conventional Commits](develop-semantic-title.md)
+* [Conventional commits](develop-semantic-title.md)
+
+### Pull request process
+
+* [Creating a pull request from a 
fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)
 
-## References
+## Reference
 
 In addition, the following resources can help you craft and contribute to docs:
 
diff --git a/contribute/document-preview.md b/contribute/document-preview.md
index 7891fd72139..c935883fe53 100644
--- a/contribute/document-preview.md
+++ b/contribute/document-preview.md
@@ -1,6 +1,6 @@
 ---
 id: document-preview
-title: Content Preview
+title: Previewing content
 ---
 
 This guide explains why and how to preview Pulsar content locally with 
detailed steps and various examples.
@@ -9,12 +9,12 @@ This guide explains why and how to preview Pulsar content 
locally with detailed
 
 It is **required** to preview your changes locally and attach the preview 
screenshots in your PR description. It brings many benefits, including but not 
limited to:
 
-* You can test your writings. It's a way to check whether you use the correct 
[syntax](document-syntax.md) and debug issues. You **must ensure** docs can be 
compiled and published correctly.
+* You can test your writings. It's a way to check whether you use the correct 
[syntax](document-syntax.md). You **must ensure** docs can be compiled and 
published correctly.
 * You can get your PR merged more quickly. Reviewers know your changes clearly 
and can speed up the review process.
 
 ## How to preview changes locally?
 
-Pulsar documentation is built using Docusaurus. To preview your changes as you 
edit the files, you can run a local development server that serves your website 
and reflect the latest changes.
+Pulsar documentation is built using [Docusaurus](https://docusaurus.io/). To 
preview your changes as you edit the files, you can run a local development 
server that serves your website and reflect the latest changes.
 
 ### Prerequisites
 
@@ -24,71 +24,15 @@ To verify docs are built correctly before submitting a 
contribution, you should
 * Yarn >= 1.5
 * Although you can use Linux, macOS, or Windows to build locally the Pulsar 
documentation, macOS is the preferred build environment as it offers the most 
complete support for documentation building.
 
-### Preview documentation changes
-
-Follow these steps to preview documentation changes on the **master** branch.
-
-1. Change to the working directory:
-
-    ```bash
-    cd pulsar/site2/website
-    ```
-
-2. Run the following command to preview changes:
-
-    ```bash
-    # Preview changes on latest stable version
-    sh start.sh
-
-    # Preview changes on a specific version version
-    sh start.sh 2.10.x 
-
-    # Preview changes on multiple versions
-    sh start.sh 2.10.x 2.9.x ...
-    ```
-    
-  By default, a browser window will open at http://localhost:3000 to show the 
changes.
-
-  :::tip
-  
-  If you want to preview changes on `master`, change the URL to 
`http://localhost:3000/docs/next`.
-
-  :::
-
-  ![alt_text](assets/website-preview.png)
-
-### Preview Java API document changes
-
-Follow these steps to preview Java API document changes on the **master** 
branch.
-
-1. Change to the working directory:
-
-    ```bash
-    cd pulsar/site2/tools
-    ```
-
-2. Run the following command to generate the `.html` files:
-
-    ```bash
-    sh javadoc-gen.sh
-    ```
-
-3. Open the target `.html` file to preview the updates.
-    
-    Supposed you change JavaDoc for `ConsumerBuilder.java`:
-
-    ```bash
-    cd generated-site/api/client/{version}/org/apache/pulsar/client/api/
-    open ConsumerBuilder.html
-    ```
-
-### Preview website changes
+### Preview changes
 
 Pulsar website changes refer to all the changes made to the Pulsar website, 
including but not limited to the following pages:
 
-* [Release Notes page](pathname:///release-notes/)
+* [User documents](pathname:///docs)
+* [Contribution guide](about.md)
+* [Release notes](pathname:///release-notes/)
 * [Ecosystem page](pathname:///ecosystem)
-* [Case studies page](pathname:///case-studies)
+* [Case studies](pathname:///case-studies)
 * ...
 
 Follow these steps to preview the website changes.
@@ -96,21 +40,25 @@ Follow these steps to preview the website changes.
 1. Change to the working directory:
 
     ```bash
-    cd pulsar-site/site2/website-next
+    cd pulsar-site/
     ```
 
 2. Run the following command to preview changes:
-   
+
    ```bash
-    # Preview changes on master
-    ./preview.sh current
+   # Preview changes on master
+   ./preview.sh current
 
-    # preview changes on a specific version
-    ./preview.sh 2.10.x
+   # preview changes on a specific version
+   ./preview.sh 2.10.x
 
-    # preview changes on multiple versions
-    ./preview.sh 2.10.x 2.9.x ...
-    ```
+   # preview changes on multiple versions
+   ./preview.sh 2.10.x 2.9.x ...
+   ```
+
+By default, a browser window will open at 
[http://localhost:3000](http://localhost:3000) to show the changes:
+
+![alt_text](media/website-preview.png)
 
 ### Stop preview
 
diff --git a/contribute/document-syntax.md b/contribute/document-syntax.md
index 9ecf73cbc8c..f31f01e2327 100644
--- a/contribute/document-syntax.md
+++ b/contribute/document-syntax.md
@@ -1,6 +1,6 @@
 ---
 id: document-syntax
-title: Writing Syntax
+title: Writing syntax guide
 ---
 
 ````mdx-code-block
@@ -268,7 +268,7 @@ For example, if you're describing a feature in Microsoft's 
Active Directory, inc
 
 Use a **permalink** when linking to a specific line in a file to ensure users 
land on the line you're referring to though lines of code change over time.
 
-![alt_text](assets/obtain-github-permalink.png)
+![alt_text](media/obtain-github-permalink.png)
 
 ### Authoritative sources
 
diff --git a/contribute/assets/client-matrix-workflow.png 
b/contribute/media/client-matrix-workflow.png
similarity index 100%
rename from contribute/assets/client-matrix-workflow.png
rename to contribute/media/client-matrix-workflow.png
diff --git a/contribute/assets/obtain-github-permalink.png 
b/contribute/media/obtain-github-permalink.png
similarity index 100%
rename from contribute/assets/obtain-github-permalink.png
rename to contribute/media/obtain-github-permalink.png
diff --git a/contribute/assets/semantic-pull-request-title.png 
b/contribute/media/semantic-pull-request-title.png
similarity index 100%
rename from contribute/assets/semantic-pull-request-title.png
rename to contribute/media/semantic-pull-request-title.png
diff --git a/contribute/assets/website-preview.png 
b/contribute/media/website-preview.png
similarity index 100%
rename from contribute/assets/website-preview.png
rename to contribute/media/website-preview.png
diff --git a/contribute/release-note-guide.md b/contribute/release-note-guide.md
index 27575d450e9..0802e7fcacd 100644
--- a/contribute/release-note-guide.md
+++ b/contribute/release-note-guide.md
@@ -1,71 +1,58 @@
 ---
 id: release-note-guide
-title: Release Note Guide
+title: Writing release notes
 ---
 
-This guide explains everything about Pulsar release notes.
+Pulsar release notes consist of the following parts:
 
-## Intro to release notes
+* [Core](pathname:///release-notes/)
+* [Java client](pathname:///release-notes/client-java)
+* [WebSocket client](pathname:///release-notes/client-ws)
+* [C++ client](pathname:///release-notes/client-cpp)
+* [Python client](pathname:///release-notes/client-python)
+* [Go client](pathname:///release-notes/client-go)
+* [Node.js client](pathname:///release-notes/client-node)
+* [C# client](pathname:///release-notes/client-cs)
 
-This chapter gives an overview of Pulsar release notes.
+## Prerequisite
 
-### Basic info
+To generate release notes, you are suggested to install the [GitHub 
CLI](https://cli.github.com/) and authenticate first:
 
-[Pulsar release notes](/release-notes/) consist of the following parts.
-
-| Release note                                        | Component              
                                                                                
  |
-|-----------------------------------------------------|----------------------------------------------------------------------------------------------------------|
-| [Pulsar Core](/release-notes/#pulsar-release-notes) | Pulsar                 
                                                                                
  |
-| [Pulsar Clients](/docs/client-libraries.md)         | 
<ul><li>Java</li><li>WebSocket</li><li>C++</li><li>Python</li><li>Go</li><li>NodeJs</li><li>C#</li></ul>
 |
-
-### Maintenance info
-
-To generate release note page, you're suggested to install the [GitHub 
CLI](https://cli.github.com/) and authenticate first.
+```shell
+brew install gh
+gh auth login
+```
 
-1. Fetch the release metadata:
+## Fetch the release metadata
 
 ```bash
 # Replace v2.10.2 with the target version tag
+# Replace apache/pulsar with the component repo
 gh release view "v2.10.2" -R apache/pulsar --json author,tagName,publishedAt
 ```
 
-2. Fetch the release notes:
+## Fetch the release note
 
 ```bash
 # Replace v2.10.2 with the target version tag
+# Replace apache/pulsar with the component repo
 gh release view "v2.10.2" -R apache/pulsar --json body --jq .body
 ```
 
-3. Select the related release notes entries and add a [versioned release 
note](https://github.com/apache/pulsar-site/tree/main/site2/website-next/release-notes/versioned).
-4. Update the metadata file 
[site2/website-next/data/release-*.js](https://github.com/apache/pulsar-site/tree/main/site2/website-next/data).
+## Update the release note page
 
-The process is similar to update standalone client releases.
+1. Copy the related release notes entries and add a [versioned release note 
file](https://github.com/apache/pulsar-site/tree/main/release-notes/versioned).
+2. Update the [version metadata 
files](https://github.com/apache/pulsar-site/tree/main/data) (`release-*.js`).
 
 To preview the result, follow the instructions documented at the [Content 
Preview Guide](document-preview.md#preview-website-changes).
 
-## Submit release notes
-
-Follow the steps below to submit release notes for Pulsar and clients (**Java 
and WebSocket**).
-
-:::note
-
-For C++, Python, Go, Node.js, and C# clients, you do not need to take care of 
them since their release notes are synced from their repos to the [Pulsar 
Release Note page](/release-notes/).
-
-:::
+## Submit the release note
 
-1. Submit a PR to add separate release notes for Pulsar and clients (Java and 
WebSocket) to [versioned release-notes 
folder](https://github.com/apache/pulsar-site/tree/main/site2/website-next/release-notes/versioned).
-2. Get this PR reviewed and merged.
-3. Copy the release note to the [Pulsar Releases Page on 
GitHub](https://github.com/apache/pulsar/releases).
+Submit a PR against [the site repo](https://github.com/apache/pulsar-site) 
with the added version release note file and updated version metadata files.
 
-    | Component                             | Step                             
                                          |
-    
|---------------------------------------|----------------------------------------------------------------------------|
-    | Pulsar Core                           | Copy the release note content.   
                                          |
-    | Pulsar Clients (Java, WebSocket, ...) | Create independent sections for 
each client and copy release note content. |
- 
-    Examples for Java clent's release note:
- 
-    ![Java client release note example](assets/release-note-guide-example.png)
+Here are some examples:
 
-    After the new release is published, all the information about the release 
is automatically added to the [Pulsar Release Note page](/release-notes/).
+* [Add the release note for C++ client 
3.1.0](https://github.com/apache/pulsar-site/pull/326)
+* [Add the release note for Python client 
3.0.0](https://github.com/apache/pulsar-site/pull/343)
 
-4. Check whether the release information is shown on the [Pulsar Release Note 
page](/release-notes/) after the website is updated and built successfully.
+Check whether the release information is shown on the [Pulsar Release Note 
page](pathname:///release-notes/) after the website is updated and built 
successfully.
diff --git a/contribute/release-process.md b/contribute/release-process.md
index 57c513a23d6..7551d623e98 100644
--- a/contribute/release-process.md
+++ b/contribute/release-process.md
@@ -1,58 +1,57 @@
 ---
 id: release-process
-title: Release Process
+title: Release process
 ---
 
 This page contains instructions for Pulsar committers on how to perform a 
release.
 
-:::note
-
-The term `major/minor releases` used throughout this document is defined as 
follows:
+The term major/minor releases used throughout this document is defined as 
follows:
 
 * Major releases refer to feature releases, such as 2.10.0, 2.11.0, and so on.
 * Minor releases refer to bug-fix releases, such as 2.10.1, 2.10.2, and so on.
 
-:::
-
 ## Preparation
 
-Open a discussion in [email protected] to notify others that you volunteer to be 
the release manager of a specific release. If there are no disagreements, you 
can start the release process.
+Open a discussion on [email protected] to notify others that you 
volunteer to be the release manager of a specific release. If there are no 
disagreements, you can start the release process.
 
-For major releases, you should create a new branch named `branch-2.X.0` once 
all PRs with the 2.X.0 milestone are merged. If some PRs with the 2.X.0 
milestone are still working in progress and might take much time to complete, 
you can move them to the next milestone if they are not important. In this 
case, you'd better notify the author in the PR.
+For major releases, you should create a new branch named `branch-X.Y` once all 
PRs with the X.Y.0 milestone are merged. If some PRs with the X.Y.0 milestone 
are still working in progress and might take much time to complete, you can 
move them to the next milestone if they are not important. In this case, you'd 
better notify the author in the PR.
 
-For minor releases, if there are no disagreements, you should cherry-pick all 
merged PRs with the `release/X.Y.Z` labels into `branch-X.Y`. After these PRs 
are cherry-picked, you should add the `cherry-picked/branch-X.Y` labels.
+For minor releases, if there are no disagreements, you should cherry-pick all 
merged PRs labeled with `release/X.Y.Z` into `branch-X.Y`. After these PRs are 
cherry-picked, you should add the `cherry-picked/branch-X.Y` labels.
 
 Sometimes some PRs cannot be cherry-picked cleanly, you might need to create a 
separate PR and move the `release/X.Y.Z` label from the original PR to it. In 
this case, you can ask the author to help create the new PR.
 
 For PRs that are still open, you can choose to delay them to the next release 
or ping others to review so that they can be merged.
 
-To verify the release branch is not broken, you can synchronize the branch in 
your private repo and open a PR to trigger the CI. Example: 
https://github.com/BewareMyPower/pulsar/pull/3
+To verify the release branch is not broken, you can synchronize the branch in 
your personal repo and open a PR to trigger the CI.
+
+You can use the following command to catch basic compilation, checkstyle or 
spotbugs errors in your local env before cherry-picking.
+
+```bash
+mvn clean install -DskipTests
+```
 
-> You can use the following command to catch basic compilation or checkstyle 
errors in your local env before cherry-picking.
->
-> ```bash
-> mvn -Pcore-modules,-main -T 1C clean install -DskipTests -Dspotbugs.skip=true
-> ```
+If you haven't already done it, [create and publish the GPG 
key](create-gpg-keys.md). You will use the key to sign the release artifacts.
 
-## Requirements
+Before you start the next release steps, make sure you have installed these 
software:
 
-If you haven't already done it, [create and publish the GPG 
key](create-gpg-keys.md) to sign the release artifacts.
+* JDK 11
+* Maven 3.8.6
+* Zip
 
-Before you start the next release steps, make sure you have installed the 
**JDK8** and maven **3.6.1** for Pulsar 2.6 and Pulsar 2.7, and **JDK11** and 
Maven **3.6.1** or **3.8.6** for Pulsar 2.8 onwards. And **clean up the 
bookkeeper's local compiled** to make sure the bookkeeper dependency is fetched 
from the Maven repo, details to see 
https://lists.apache.org/thread/gsbh95b2d9xtcg5fmtxpm9k9q6w68gd2
+Also, you need to **clean up the bookkeeper's local compiled** to make sure 
the bookkeeper dependency is fetched from the Maven repository, details to see 
[this mailing list 
thread](https://lists.apache.org/thread/gsbh95b2d9xtcg5fmtxpm9k9q6w68gd2).
 
-## Create the release branch
+## Create a release candidate
 
-We are going to create a branch from `master` to `branch-v2.X`
-where the tag will be generated and where new fixes will be
-applied as part of the maintenance for the release.
+### Create the release branch
 
-The branch needs only to be created when creating major releases,
-and not for minor releases like `2.3.1`. For minor releases, go to the next 
step.
+We are going to create a branch from `master` to `branch-v2.X` where the tag 
will be generated and where new fixes will be applied as part of the 
maintenance for the release.
+
+The branch needs only to be created for major releases, and not for minor 
releases like `2.3.1`. For minor releases, go to the next step.
 
 For example, when you create the `v2.3.0` release, the branch `branch-2.3` 
will be created; but for `v2.3.1`, we
 keep using the old `branch-2.3`.
 
-In these instructions, I'm referring to a fictitious release `2.X.0`. Change 
the release version in the examples accordingly with the real version.
+In these instructions, a fictitious release `2.X.0` is referred. Change the 
release version in the examples accordingly with the real version.
 
 It is recommended to create a fresh clone of the repository to avoid any local 
files interfering in the process:
 
@@ -68,20 +67,17 @@ Alternatively, you can use a git workspace to create a new, 
clean directory on y
 git worktree add ../pulsar.branch-2.X branch-2.X
 ```
 
-If you created a new branch, update the `CI - OWASP Dependency Check` workflow 
so that it will run on the new branch. At the time of writing, here is the file 
that should be updated: 
https://github.com/apache/pulsar/blob/master/.github/workflows/ci-owasp-dependency-check.yaml.
+If you created a new branch, update the [CI - OWASP Dependency 
Check](https://github.com/apache/pulsar/blob/master/.github/workflows/ci-owasp-dependency-check.yaml)
 workflow so that it will run on the new branch.
 
-Note also that you should stop the GitHub action for Pulsar versions that are 
EOL.
+Note that you should also stop the workflow for previous Pulsar versions that 
are EOL.
 
-Also, if you created a new branch, please update the `Security Policy and 
Supported Versions` page on the website. This page has a table for support 
timelines based on when minor releases take place.
+Also, if you created a new branch, please update the "Supported Versions" 
table on the [version policy](version-policy.md) page. This table is for 
support timelines based on when minor releases take place.
 
-## Update project version and tag
+### Update project version and tag
 
-During the release process, you are going to initially create
-"candidate" tags, that after verification and approval will
-get promoted to the "real" final tag.
+During the release process, you are going to initially create "candidate" 
tags, that after verification and approval will get promoted to the "real" 
final tag.
 
-In this process, the maven version of the project will always
-be the final one.
+In this process, the maven version of the project will always be the final one.
 
 ```shell
 # Bump to the release version
@@ -109,13 +105,15 @@ git push origin v2.X.0-candidate-1
 
 For minor releases, the tag is like `2.3.1`.
 
-## Build and inspect the artifacts
+### Build release artifacts
+
+Run the following command to build the artifacts:
 
 ```shell
 mvn clean install -DskipTests
 ```
 
-After the build, there will be 5 generated artifacts and the connectors 
directory with all the Pulsar IO nar files:
+After the build, you should find the following tarballs, zip files, and the 
connectors directory with all the Pulsar IO nar files:
 
 * `distribution/server/target/apache-pulsar-2.X.0-bin.tar.gz`
 * `target/apache-pulsar-2.X.0-src.tar.gz`
@@ -130,54 +128,60 @@ The _apache-pulsar-shell_ artifacts are distributed 
beginning with release 2.11.
 
 :::
 
-Inspect the artifacts:
-* Check that the `LICENSE` and `NOTICE` files cover all included jars for the 
-bin package)
-    - Use script to cross-validate `LICENSE` file with included jars:
-       ```
-       src/check-binary-license 
distribution/server/target/apache-pulsar-2.x.0-bin.tar.gz
-       ```
-* Unpack src package: `target/apache-pulsar-2.X.0-src.tar.gz`
-    - Run Apache RAT to verify the license headers in the `src` package:
-       ```shell
-       cd apache-pulsar-2.X.0
-       mvn apache-rat:check
-       ```
-* Unpack bin package: 
`distribution/server/target/apache-pulsar-2.X.0-bin.tar.gz`, Check that the 
standalone Pulsar service starts correctly:
- ```shell
- cd apache-pulsar-2.X.0
- cp -r ../../../io/target/apache-pulsar-io-connectors-2.X.0-bin connectors
- bin/pulsar standalone
- ```
-
-* Use instructions in 
[Release-Candidate-Validation](validate-release-candidate.md) to do some sanity 
checks on the produced binary distributions.
-
-### Build RPM and DEB packages
+#### Build RPM and DEB packages
+
+For 2.8, 2.9 and 2.10 releases, you should build RPM and DEB packages for the 
C++ client:
 
 ```shell
 pulsar-client-cpp/pkg/rpm/docker-build-rpm.sh
-
 pulsar-client-cpp/pkg/deb/docker-build-deb.sh
 ```
 
-> For 2.11.0 or higher, you can set the environment variable `BUILD_IMAGE` to 
build the base image locally instead of pulling from the DockerHub.
-> Since only a few members have the permission to push the image to DockerHub, 
the image might not be the latest, if you failed to build the RPM and DEB 
packages, you can run `export BUILD_IMAGE=1` before running these commands.
+This will leave the RPM/YUM and DEB repo files in 
`pulsar-client-cpp/pkg/rpm/RPMS/x86_64` and 
`pulsar-client-cpp/pkg/deb/BUILD/DEB` directory.
 
-This will leave the RPM/YUM and DEB repo files in 
`pulsar-client-cpp/pkg/rpm/RPMS/x86_64` and
-`pulsar-client-cpp/pkg/deb/BUILD/DEB` directory.
+:::note
+
+If you get error `c++: internal compiler error: Killed (program cc1plus)` when 
run `pulsar-client-cpp/pkg/deb/docker-build-deb.sh`. You may need to expand 
your docker memory greater than 2GB.
 
-> **NOTE**: If you get error `c++: internal compiler error: Killed (program 
cc1plus)` when run `pulsar-client-cpp/pkg/deb/docker-build-deb.sh`. You may 
need to expand your docker memory greater than 2GB.
+:::
 
-## Sign and stage the artifacts
+:::caution
 
-The `src` and `bin` artifacts need to be signed and uploaded to the dist SVN
-repository for staging.
+The C++ client is now developing in a [separated 
repo](https://github.com/apache/pulsar-client-cpp). You should check its own 
[release 
guide](https://github.com/apache/pulsar-client-cpp/wiki/Committer-Release-Guide)
 if you're releasing version >= 3.0.0.  
+
+:::
+
+### Inspect the artifacts
+
+First, check that the `LICENSE` and `NOTICE` files cover all included jars for 
the bin package. You can use script to cross-validate `LICENSE` file with 
included jars:
+
+```shell
+src/check-binary-license 
distribution/server/target/apache-pulsar-2.x.0-bin.tar.gz
+```
+
+Then, run Apache RAT to verify the license headers in the src package:
+
+```shell
+tar -xvzf target/apache-pulsar-2.X.0-src.tar.gz
+cd apache-pulsar-2.X.0-src
+mvn apache-rat:check
+```
+
+Finally, use instructions in [verifying release 
candidates](validate-release-candidate.md) page to do some sanity checks on the 
produced binary distributions.
+
+### Sign and stage the artifacts on SVN
+
+The src and bin artifacts need to be signed and uploaded to the dist SVN 
repository for staging.
+
+Before running the script, make sure that the `<yourname>@apache.org` code 
signing key is the default gpg signing key.
+
+One way to ensure this is to create/edit file `~/.gnupg/gpg.conf` and add a 
line:
 
-Before running the script, make sure that the `[email protected]` code signing 
key is the default gpg signing key.
-One way to ensure this is to create/edit file `~/.gnupg/gpg.conf` and add a 
line
 ```
 default-key <key fingerprint>
 ```
-where `<key fingerprint>` should be replaced with the private key fingerprint 
for the `[email protected]` key. The key fingerprint can be found in `gpg -K` 
output.
+
+... where `<key fingerprint>` should be replaced with the private key 
fingerprint for the `<yourname>@apache.org` key. The key fingerprint can be 
found in `gpg -K` output.
 
 ```shell
 svn co https://dist.apache.org/repos/dist/dev/pulsar pulsar-dist-dev
@@ -194,7 +198,7 @@ svn add *
 svn ci -m 'Staging artifacts and signature for Pulsar release 2.X.0'
 ```
 
-## Stage artifacts in maven
+### Stage Maven modules
 
 Upload the artifacts to ASF Nexus:
 
@@ -215,27 +219,21 @@ mvn deploy -DskipTests -Papache-release --settings 
/tmp/mvn-apache-settings.xml
 mvn deploy -DskipTests -Papache-release --settings 
/tmp/mvn-apache-settings.xml -f tests/pom.xml -pl 
org.apache.pulsar.tests:tests-parent,org.apache.pulsar.tests:integration
 ```
 
-> **NOTE**: The `GPG_TTY` environment variable must be set for all the 
following steps. Otherwise, some operations might fail by `gpg failed to sign 
the data`.
+:::note
 
-This will ask for the GPG key passphrase and then upload it to the staging 
repository.
+The `GPG_TTY` environment variable must be set for all the following steps. 
Otherwise, some operations might fail by "gpg failed to sign the data".
+
+:::
 
-> If you have deployed before, re-deploying might fail on 
pulsar-presto-connector-original.
->
-> See https://github.com/apache/pulsar/issues/17047.
->
-> You can run `mvn clean deploy` instead of `mvn deploy` as a workaround.
+This will ask for the GPG key passphrase and then upload it to the staging 
repository.
 
 Log in to the ASF Nexus repository at https://repository.apache.org
 
-Click on "Staging Repositories" on the left sidebar and then select the current
-Pulsar staging repo. This should be called something like 
`orgapachepulsar-XYZ`.
+Click on "Staging Repositories" on the left sidebar and then select the 
current Pulsar staging repo. This should be called something like 
`orgapachepulsar-XYZ`.
 
-Use the "Close" button to close the repository. This operation will take few
-minutes. Once complete click "Refresh" and now a link to the staging repository
-should be available, something like
-https://repository.apache.org/content/repositories/orgapachepulsar-XYZ
+Use the "Close" button to close the repository. This operation will take few 
minutes. Once complete click "Refresh" and now a link to the staging repository 
should be available, something like 
https://repository.apache.org/content/repositories/orgapachepulsar-XYZ
 
-## Publish release candidate docker images
+### Stage Docker images
 
 Run the following commands:
 
@@ -245,16 +243,16 @@ cd $PULSAR_HOME/docker
 DOCKER_USER=<your-username> DOCKER_PASSWORD=<your-password> 
DOCKER_ORG=<your-username> ./publish.sh
 ```
 
-After that, the following images will be built and pushed to your own 
DockerHub account.
-- pulsar
-- pulsar-all
-- pulsar-grafana
-- pulsar-standalone
+After that, the following images will be built and pushed to your own 
DockerHub account:
 
+* pulsar
+* pulsar-all
+* pulsar-grafana
+* pulsar-standalone
 
-## Run the vote
+## Vote for the release candidate
 
-Send an email to the Pulsar Dev mailing list:
+Start a voting thread on the dev mailing list. Here is a sample content:
 
 ```
 To: [email protected]
@@ -298,49 +296,38 @@ Please download the source package, and follow the README 
to build
 and run the Pulsar standalone service.
 ```
 
-The vote should be open for at least 72 hours (3 days). Votes from Pulsar PMC 
members
-will be considered binding, while anyone else is encouraged to verify the 
release and
-vote as well.
+The vote should be open for at least 72 hours (3 days). Votes from Pulsar PMC 
members will be considered binding, while anyone else is encouraged to verify 
the release and vote as well.
 
-If the release is approved here, you can then proceed to the next step. 
Otherwise, you should repeat the previous steps and prepare another candidate 
release to vote.
+If the release is approved here with 3 +1 binding votes, you can then proceed 
to the next step. Otherwise, you should repeat the previous steps and prepare 
another release candidate to vote.
 
-## Move master branch to next version
+## Promote the release
 
-> **NOTE**: This step is for major releases only.
+### Publish the final tag
 
-You need to move the master version to the next iteration `Y` (`X + 1`).
+Create and push the final Git tag:
 
 ```shell
-git checkout master
-./src/set-project-version.sh 2.Y.0-SNAPSHOT
-
-git commit -m 'Bumped version to 2.Y.0-SNAPSHOT' -a
+git tag -u [email protected] v2.X.0 -m 'Release v2.X.0'
+git push origin v2.X.0
 ```
 
-Since this needs to be merged into `master`, you need to follow the regular 
process
-and create a Pull Request on GitHub.
+Then, you can [create a GitHub 
release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release)
 based on the tag.
 
-## Promote the release
+### Release the artifacts on SVN
 
-Create the final git tag:
+Promote the artifacts on the release SVN repo 
https://dist.apache.org/repos/dist/release. Note that this repo is limited to 
PMC members, You may need a PMC member's help if you are not one:
 
 ```shell
-git tag -u [email protected] v2.X.0 -m 'Release v2.X.0'
-git push origin v2.X.0
+svn move -m "Release Apache Pulsar 2.X.Y" \
+  https://dist.apache.org/repos/dist/dev/pulsar/pulsar-2.X.0-candidate-1 \
+  https://dist.apache.org/repos/dist/release/pulsar/pulsar-2.X.0
 ```
 
-Promote the artifacts on the release location(repo 
https://dist.apache.org/repos/dist/release limited to PMC, You may need a PMC 
member's help if you are not one):
-```shell
-svn move -m "Release Apache Pulsar 2.X.Y" 
https://dist.apache.org/repos/dist/dev/pulsar/pulsar-2.X.0-candidate-1 \
-         https://dist.apache.org/repos/dist/release/pulsar/pulsar-2.X.0
-```
+### Release Maven modules
 
-Promote the Maven staging repository for release. Login to 
`https://repository.apache.org` and
-select the staging repository associated with the RC candidate that was 
approved. The naming
-will be like `orgapachepulsar-XYZ`. Select the repository and click on 
"Release". Artifacts
-will now be made available on Maven central.
+Promote the Maven staging repository for release. Login to 
`https://repository.apache.org` and select the staging repository associated 
with the RC candidate that was approved. The naming will be like 
`orgapachepulsar-XYZ`. Select the repository and click on "Release". Artifacts 
will now be made available on Maven central.
 
-## Publish Docker Images
+### Release Docker images
 
 Copy the approved candidate docker images from your personal account to 
apachepulsar org.
 
@@ -358,33 +345,58 @@ done
 
 If you don't have the permission, you can ask someone with access to 
apachepulsar org to do that.
 
-## Release Helm Chart
+### Release Helm Chart
 
-**This step can be skipped if the major version number is not the latest.**
+:::caution
 
-1. Bump the image version in the Helm Chart: 
[charts/pulsar/values.yaml](https://github.com/apache/pulsar-helm-chart/blob/master/charts/pulsar/values.yaml)
+This step can be skipped if the major version number is not the latest.
 
-2. Bump the chart version and `appVersion` in the Helm Chart to the released 
version: 
[charts/pulsar/Chart.yaml](https://github.com/apache/pulsar-helm-chart/blob/master/charts/pulsar/Chart.yaml)
+:::
 
+1. Bump the image version in the Helm Chart: 
[charts/pulsar/values.yaml](https://github.com/apache/pulsar-helm-chart/blob/master/charts/pulsar/values.yaml)
+2. Bump the chart version and `appVersion` in the Helm Chart to the released 
version: 
[charts/pulsar/Chart.yaml](https://github.com/apache/pulsar-helm-chart/blob/master/charts/pulsar/Chart.yaml)
 3. Send a pull request for reviews and get it merged.
+4. Once it is merged, the chart will be automatically released to GitHub 
releases at https://github.com/apache/pulsar-helm-chart and updated to 
https://pulsar.apache.org/charts/index.yaml.
+
+### Release Homebrew libpulsar package
 
-4. Once it is merged, the chart will be automatically released to Github 
releases at https://github.com/apache/pulsar-helm-chart and updated to 
https://pulsar.apache.org/charts.
+For 2.8, 2.9 and 2.10 releases, you should release the libpulsar package on 
Homebrew.
 
-## Publish Python Clients
+:::caution
+
+The C++ client is now developing in a [separated 
repo](https://github.com/apache/pulsar-client-cpp). You should check its own 
release guide if you're releasing version >= 3.0.0.
+
+:::
+
+Release a new version of libpulsar for Homebrew, You can follow the example 
[here](https://github.com/Homebrew/homebrew-core/pull/53514).
+
+### Release Python client
+
+For 2.8, 2.9 and 2.10 releases, you should release the Python client.
 
 :::note
 
 1. You need to create an account on PyPI: https://pypi.org/account/register/
 2. Ask anyone that has been a release manager before to add you as a 
maintainer for pulsar-docker on PyPI
-3. Once you have completed the following steps in this section, you can check 
if the wheels are uploaded successfully in [Download 
files](https://pypi.org/project/pulsar-client/#files). Remember to switch to 
the correct version in [Release 
history](https://pypi.org/project/pulsar-client/#history)).
+3. Once you have completed the following steps in this section, you can check 
if the wheels are uploaded successfully in [Download 
files](https://pypi.org/project/pulsar-client/#files). Remember to switch to 
the correct version in [Release 
history](https://pypi.org/project/pulsar-client/#history).
 
 :::
 
-### Linux
+:::caution
 
-There is a script that builds and packages the Python client inside Docker 
images.
+Make sure you run following command at the release tag!
 
-> Make sure you run following command at the release tag!
+:::
+
+:::caution
+
+The Python client is now developing in a [separated 
repo](https://github.com/apache/pulsar-client-python). You should check its own 
release guide if you're releasing version >= 3.0.0.
+
+:::
+
+#### Linux
+
+There is a script that builds and packages the Python client inside Docker 
images:
 
 ```shell
 pulsar-client-cpp/docker/build-wheels.sh
@@ -392,7 +404,7 @@ pulsar-client-cpp/docker/build-wheels.sh
 
 The wheel files will be left under `pulsar-client-cpp/python/wheelhouse`. Make 
sure all the files have `manylinux` in the filenames. Otherwise, those files 
will not be able to upload to PyPI.
 
-Run the following command to push the built wheel files.
+Run the following command to push the built wheel files:
 
 ```shell
 cd pulsar-client-cpp/python/wheelhouse
@@ -400,113 +412,126 @@ pip install twine
 twine upload pulsar_client-*.whl
 ```
 
-### MacOS
+#### macOS
 
-There is a script that builds and packages the Python client inside Docker 
images.
+There is a script that builds and packages the Python client inside Docker 
images:
 
 ```shell
 pulsar-client-cpp/python/build-mac-wheels.sh
 ```
 
-The wheel files will be generated at each platform directory under 
`pulsar-client-cpp/python/pkg/osx/`.
-Then you can run `twin upload` to upload those wheel files.
+The wheel files will be generated at each platform directory under 
`pulsar-client-cpp/python/pkg/osx/`. Then you can run `twin upload` to upload 
those wheel files.
+
+## Update the document
+
+### Release notes
 
-## Update Javadocs
+This step is for every release. Read the specific guide for [writing release 
notes](release-note-guide.md).
 
-After publish Java libraries, run the following script from the 
apache/pulsar-site `main` branch:
+### Javadoc
+
+:::caution
+
+This step is for major releases only, unless you're sure that significant 
Javadoc fixes are made against the minor release.
+
+:::
+
+After publish Java libraries, run the following script from the main branch of 
apache/pulsar-site repo:
 
 ```shell
 cd tools/pytools
 poetry install
-poetry run bin/java-apidoc-generator.py 2.11.0
+poetry run bin/java-apidoc-generator.py 2.X.0
 ```
 
 Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is: 
 
-* `site2/website-next/static/api/admin`
-* `site2/website-next/static/api/client`
-* `site2/website-next/static/api/pulsar-functions`
+* `static/api/admin`
+* `static/api/client`
+* `static/api/pulsar-functions`
 
 Read more on the manual of 
[pytools](https://github.com/apache/pulsar-site/tree/main/tools/pytools/README.md).
 
-## Update config and command-line tool references 
+### Reference
+
+:::caution
+
+This step is for major releases only, unless you're sure that significant 
Javadoc fixes are made against the minor release.
+
+:::
 
-Run the following script from the apache/pulsar-site `main` branch:
+You can generate references of config and command-line tool by running the 
following script from the main branch of apache/pulsar-site repo:
 
 ```shell
-# build Pulsar distributions under /path/to/pulsar-2.11.0
+# build Pulsar distributions under /path/to/pulsar-2.X.0
 cd tools/pytools
 poetry install
-poetry run bin/bin/reference-doc-generator.py 
--master-path=/path/to/pulsar-2.11.0 --version=2.11.0
+poetry run bin/reference-doc-generator.py --master-path=/path/to/pulsar-2.X.0 
--version=2.X.0
 ```
 
-Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is:
-
-* `site2/website-next/static/api/admin`
-* `site2/website-next/static/api/client`
-* `site2/website-next/static/api/pulsar-functions`
+Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is `static/reference/2.X.x`
 
 Read more on the manual of 
[pytools](https://github.com/apache/pulsar-site/tree/main/tools/pytools/README.md).
 
-## Update C++ client docs
+### C++ client docs
+
+:::caution
+
+This step is for major releases only, unless you're sure that significant 
Javadoc fixes are made against the minor release.
 
-After publishing the C++ client, run the following script from the 
apache/pulsar-site `main` branch:
+:::
+
+After publishing the C++ client, run the following script from the main branch 
of apache/pulsar-site repo:
 
 ```shell
 cd tools/pytools
 poetry install
-poetry run bin/cpp-apidoc-generator.py 2.11.0
+poetry run bin/cpp-apidoc-generator.py 2.X.0
 ```
 
-Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is `site2/website-next/static/api/cpp`.
+Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is `static/api/cpp`.
 
 Read more on the manual of 
[pytools](https://github.com/apache/pulsar-site/tree/main/tools/pytools/README.md).
 
-## Update Python client docs
+### Python client docs
+
+:::caution
+
+This step is for major releases only, unless you're sure that significant 
Javadoc fixes are made against the minor release.
 
-After publishing the Python client, run the following script from the 
apache/pulsar-site `main` branch:
+:::
+
+After publishing the Python client, run the following script from the main 
branch of apache/pulsar-site repo:
 
 ```shell
 cd tools/pytools
 poetry install
-poetry run bin/py-apidoc-generator.py 2.8.3
+poetry run bin/py-apidoc-generator.py 2.X.0
 ```
 
 Note that before version 3.0.0, it builds the docs within a docker image, so 
you'll need to have docker running.
 
-Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is `site2/website-next/static/api/python`.
+Once the docs are generated, you can add them and submit them in a PR. The 
expected doc output is `static/api/python`.
 
 Read more on the manual of 
[pytools](https://github.com/apache/pulsar-site/tree/main/tools/pytools/README.md).
 
-## Publish Homebrew libpulsar package
+### Swagger files
 
-**This step can be skipped if the major version number is not the latest.**
-
-Release a new version of libpulsar for Homebrew, You can follow the example 
[here](https://github.com/Homebrew/homebrew-core/pull/53514).
+First, build swagger files from apache/pulsar repo at the released tag:
 
-## Update swagger file
+```shell
+mvn -B -ntp install -Pcore-modules,swagger,-main -DskipTests 
-DskipSourceReleaseAssembly=true -Dspotbugs.skip=true -Dlicense.skip=true
+```
 
-> For major releases, the swagger file update happen under `master` branch, 
while for minor releases, swagger file is created from branch-2.x.
+Now, run the following script from the main branch of apache/pulsar-site repo:
 
 ```shell
-# ... in the main repo (apache/pulsar)
-cd pulsar
-git checkout branch-2.X
-mvn -am -pl pulsar-broker install -DskipTests -Pswagger
-
-# ... in the site repo (apache/pulsar-site)
-cd pulsar-site
-git checkout -b fix/swagger-file
 cd tools/pytools
 poetry install
-poetry run bin/rest-apidoc-generator.py --master-path=/path/to/pulsar 
--version 2.10.2
+poetry run bin/rest-apidoc-generator.py --master-path=/path/to/pulsar-2.X.Y 
--version=2.X.Y
 ```
 
-Send out a PR request for review.
-
-## Write release notes
-
-See [Pulsar Release Notes Guide](release-note-guide.md).
+Read more on the manual of 
[pytools](https://github.com/apache/pulsar-site/tree/main/tools/pytools/README.md).
 
 ## Update the site
 
@@ -516,18 +541,16 @@ This step is for major releases only.
 
 :::
 
-For major releases, such as 2.10.0, the website is updated based on the 
`master` branch.
-
-1. Create a new branch off master.
+1. Clone the apache/site repo:
 
 ```shell
-git checkout -b doc_release_<release-version>
+git clone [email protected]:apache/pulsar-site.git
 ```
 
-2. Go to the website directory.
+2. Create a new branch from the main branch.
 
 ```shell
-cd site2/website
+git checkout -b doc_release_<release-version>
 ```
 
 3. Generate a new version of the documentation.
@@ -537,12 +560,7 @@ yarn install
 yarn run version <release-version>
 ```
 
-After you run this command, a new folder `version-<release-version>` is added 
in the `site2/website/versioned_docs` directory, a new sidebar file 
`version-<release-version>-sidebars.json` is added in the 
`site2/website/versioned_sidebars` directory, and the new version is added in 
the `versions.json` file, shown as follows:
-
-```shell
-versioned_docs/version-<release-version>
-versioned_sidebars/version-<release-version>-sidebars.json
-```
+After you run this command, a new folder `version-<release-version>` is added 
in the `versioned_docs` directory, a new sidebar file 
`version-<release-version>-sidebars.json` is added in the `versioned_sidebars` 
directory, and the new version is added in the `versions.json` file.
 
 :::note
 
@@ -550,32 +568,15 @@ You can move the latest version under the old version in 
the `versions.json` fil
 
 :::
 
-4. Update the `releases.json` file by adding `<release-version>` to the second 
of the list (this is to make the search work. After your PR is merged, the 
Pulsar website is built and tagged for search, you can change it to the first 
list).
-
-5. Send out a PR request for review.
-
-   After your PR is approved and merged to master, the website is published 
automatically after the new website is built. The website is built every 6 
hours.
-
-6. Check the new website after the website is built. Open 
https://pulsar.apache.org in your browsers to verify all the changes are alive. 
If the website build succeeds but the website is not updated, you can try to 
sync the git repository. Navigate to https://selfserve.apache.org/ and click 
the "Synchronize Git Repositories" and then select apache/pulsar.
-
-7. Publish the release on GitHub, and copy the same release notes: 
https://github.com/apache/pulsar/releases.
-
-8. Update the deploy version to the current release version in 
`deployment/terraform-ansible/deploy-pulsar.yaml`.
-
-9. Generate the doc set and sidebar file for the next major release `2.X.x` 
based on the `site2/docs` folder. You can follow steps 1, 2, and 3, and submit 
those files to the `apache/pulsar` repository. This step is a preparation for 
the `2.X.x` release.
-
-:::note
+4. Add `<release-version>` to the corresponding place in the `releases.json` 
file.
 
-Starting from 2.8.0, you don't need to generate an independent doc set or 
update the Pulsar site for minor releases, such as 2.8.1, 2.8.2, and so on. 
Instead, the generic doc set 2.8.x is used.
+5. Send out a PR request for review. After your PR is approved and merged to 
main, the website is published automatically after the new website is built. 
The website is built every 6 hours.
 
-:::note
+6. Check the new website after the website is built. Open 
https://pulsar.apache.org in your browsers to verify all the changes are alive. 
If the website build succeeds but the website is not updated, you can try to 
sync the git repository. Navigate to https://selfserve.apache.org/ and click 
the "Synchronize Git Repositories" and then select apache/pulsar-site.
 
 ## Announce the release
 
-Once the release artifacts are available in the Apache Mirrors and the website 
is updated,
-we need to announce the release.
-
-Send an email to these lines:
+Once the release artifacts are available in the Apache Mirrors and the website 
is updated, you need to announce the release. You should email to 
[email protected], [email protected], and [email protected]. Here 
is a sample content:
 
 ```
 To: [email protected], [email protected], [email protected]
@@ -603,19 +604,18 @@ The Pulsar Team
 ```
 
 Send the email in plain text mode since the [email protected] mailing list 
will reject messages with text/html content.
-In Gmail, there's an option to set `Plain text mode` in the `⋮`/ `More 
options` menu.
 
+In Gmail, there's an option to set "Plain text mode" in the "⋮" menu.
+
+## Write a blog post (optional)
 
-## Write a blog post for the release (optional)
+It is encouraged to write a blog post to summarize the features introduced in 
this release, especially for feature releases.
 
-It is encouraged to write a blog post to summarize the features introduced in 
this release,
-especially for feature releases.
-You can follow the example [here](https://github.com/apache/pulsar/pull/2308)
+You can follow the example [here](https://github.com/apache/pulsar/pull/2308). 
Be aware that the source of blog is moved to 
[here](https://github.com/apache/pulsar-site/tree/main/blog).
 
 ## Remove old releases
 
-Remove the old releases (if any). You only need the latest release there, and 
older releases are
-available through the Apache archive:
+Remove the old releases (if any). You only need the latest release there, and 
older releases are available through the Apache archive:
 
 ```shell
 # Get the list of releases
@@ -625,13 +625,20 @@ svn ls https://dist.apache.org/repos/dist/release/pulsar
 svn rm https://dist.apache.org/repos/dist/release/pulsar/pulsar-2.Y.0
 ```
 
-## Move release branch to next version
+## Move master branch to next version
 
-Run the following commands in the release branches.
+:::caution
 
-```shell
-./src/set-project-version.sh 2.X.Y-SNAPSHOT
+This step is for major releases only.
 
-git commit -m 'Bumped version to 2.X.Y-SNAPSHOT' -a
-git push origin branch-2.X
+:::
+
+You need to move the master version to the next iteration `Y` (`X + 1`).
+
+```shell
+git checkout master
+./src/set-project-version.sh 2.Y.0-SNAPSHOT
+git commit -a -s -m "[cleanup][build] Bumped version to 2.Y.0-SNAPSHOT'
 ```
+
+Since this needs to be merged into `master`, you need to follow the regular 
process and create a Pull Request on GitHub.
diff --git a/contribute/setup-building.md b/contribute/setup-building.md
index 30b948b623d..be78ce5bfa9 100644
--- a/contribute/setup-building.md
+++ b/contribute/setup-building.md
@@ -1,6 +1,6 @@
 ---
 id: setup-building
-title: Setup and Building
+title: Setup and building
 ---
 
 ## Prerequisites
diff --git a/contribute/testing-licenses.md b/contribute/testing-licenses.md
index eef298be99a..bd869411863 100644
--- a/contribute/testing-licenses.md
+++ b/contribute/testing-licenses.md
@@ -1,6 +1,6 @@
 ---
 id: testing-licenses
-title: License Format
+title: License header
 ---
 
 All code contributed to Pulsar will be licensed under [Apache License 
2.0](https://www.apache.org/licenses/LICENSE-2.0). You need to ensure every new 
files you are adding have the right license header. You can add license header 
to your files by running following command:
diff --git a/contribute/validate-release-candidate.md 
b/contribute/validate-release-candidate.md
index 5aae511d721..a81d7b6df2d 100644
--- a/contribute/validate-release-candidate.md
+++ b/contribute/validate-release-candidate.md
@@ -1,6 +1,6 @@
 ---
 id: validate-release-candidate
-title: Validate Release Candidate
+title: Verifying release candidates
 ---
 
 The following are manual instructions for reviewing and validating a release 
candidate.
diff --git a/contribute/version-policy.md b/contribute/version-policy.md
index 09c4df79bc0..945ed500d8a 100644
--- a/contribute/version-policy.md
+++ b/contribute/version-policy.md
@@ -1,6 +1,6 @@
 ---
 id: version-policy
-title: Version Policy
+title: Version policy
 ---
 
 The Pulsar project adheres to [Semantic 
Versioning](http://semver.org/spec/v2.0.0.html). Existing releases can expect
diff --git a/docs/about.md b/docs/about.md
index 6ef50e75471..14ab70fd1eb 100644
--- a/docs/about.md
+++ b/docs/about.md
@@ -55,7 +55,7 @@ You’ll notice an Edit button at the bottom and top of each 
page. Click it to o
 
 :::tip
 
-For how to make contributions to documentation, see [Pulsar Documentation 
Contribution 
Guide](https://github.com/apache/pulsar/blob/master/site2/README.md).
+For how to make contributions to documentation, see [Pulsar Documentation 
Contribution Guide](pathname:///contribute/document-intro).
 
 :::
 
diff --git a/docs/client-libraries.md b/docs/client-libraries.md
index e925bb57065..3d6c72f627c 100644
--- a/docs/client-libraries.md
+++ b/docs/client-libraries.md
@@ -30,7 +30,11 @@ Pulsar client feature matrix for different languages is 
listed on [Pulsar Featur
 
 Besides the officially released clients, multiple projects on developing 
Pulsar clients are available in different languages.
 
-> Want your repository listed here? Just submit a PR to the [pulsar 
repository](https://github.com/apache/pulsar/edit/master/site2/docs/client-libraries.md).
+:::tip
+
+Want your repository listed here? Click the "Edit this page" button at the 
bottom of this page.
+
+:::
 
 ### .NET
 
diff --git a/sidebarsDevelopment.js b/sidebarsDevelopment.js
index 14c1720318f..8a4e71b263b 100644
--- a/sidebarsDevelopment.js
+++ b/sidebarsDevelopment.js
@@ -4,7 +4,7 @@ const sidebars = {
         'about',
         {
             type: "category",
-            label: "Getting Started",
+            label: "Getting started",
             items: [
                 'setup-building',
                 'setup-ide',
@@ -32,8 +32,8 @@ const sidebars = {
             items: [
                 'document-intro',
                 'document-contribution',
-                'document-syntax',
                 'document-preview',
+                'document-syntax',
             ]
         },
         {
diff --git a/src/pages/contributing.md b/src/pages/contributing.md
index d21ccd0e311..9994dbb2869 100644
--- a/src/pages/contributing.md
+++ b/src/pages/contributing.md
@@ -373,16 +373,11 @@ For smaller contributions, however, this is not required. 
In this case, we rely
 
 ### Website
 
-The Pulsar website is in the same [Pulsar Github 
Repo](https://github.com/apache/pulsar). The source files are hosted under 
`site2` directory in `master` branch,
-the static content is generated by CI job and merged into the `asf-site` 
branch.
-
-Follow the 
[README](https://github.com/apache/pulsar-site/tree/main/site2/website-next) 
for making contributions to the website.
-
 #### Updating user logo
 The Apache Pulsar Community welcomes all users to update their company logos 
on Pulsar website. If your team or organization has adopted Pulsar in 
production, you can update your company logos on [Pulsar 
website](https://pulsar.apache.org/en/powered-by/).
 
 To update your company's logo, follow these steps:
-1. Open 
[link](https://github.com/apache/pulsar-site/tree/main/site2/website-next/data/users.js)
 in your browser, then click the **Edit** icon to fork Pulsar repo, create a 
new branch and edit this file.
+1. Open [link](https://github.com/apache/pulsar-site/tree/main/data/users.js) 
in your browser, then click the **Edit** icon to fork Pulsar repo, create a new 
branch and edit this file.
 2. Add your company’s information at the end of file.
 
        Example:
diff --git a/tools/pytools/bin/reference-doc-generator.py 
b/tools/pytools/bin/reference-doc-generator.py
index 03ba2004a3e..59a0e091c41 100755
--- a/tools/pytools/bin/reference-doc-generator.py
+++ b/tools/pytools/bin/reference-doc-generator.py
@@ -55,14 +55,15 @@ if __name__ == '__main__':
         version = args.version
 
     for kind in kinds:
-        match kind:
-            case Kind.config:
-                config_doc_generator.execute(master_path, version)
-            case Kind.admin:
-                pulsar_admin_clidoc_generator.execute(master_path, version)
-            case Kind.pulsar:
-                pulsar_clidoc_generator.execute(master_path, version)
-            case Kind.client:
-                pulsar_client_clidoc_generator.execute(master_path, version)
-            case Kind.perf:
-                pulsar_perf_clidoc_generator.execute(master_path, version)
+        if kind == Kind.config:
+            config_doc_generator.execute(master_path, version)
+        elif kind == Kind.admin:
+            pulsar_admin_clidoc_generator.execute(master_path, version)
+        elif kind == Kind.pulsar:
+            pulsar_clidoc_generator.execute(master_path, version)
+        elif kind == Kind.client:
+            pulsar_client_clidoc_generator.execute(master_path, version)
+        elif kind == Kind.perf:
+            pulsar_perf_clidoc_generator.execute(master_path, version)
+        else:
+            raise Exception(f'Unknown reference kind: {kind}')
diff --git a/versioned_docs/version-2.10.x/security-tls-transport.md 
b/versioned_docs/version-2.10.x/security-tls-transport.md
index 89851d23576..be4e184311a 100644
--- a/versioned_docs/version-2.10.x/security-tls-transport.md
+++ b/versioned_docs/version-2.10.x/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.2.0/security-tls-transport.md 
b/versioned_docs/version-2.2.0/security-tls-transport.md
index 6b289628548..7c3663de151 100644
--- a/versioned_docs/version-2.2.0/security-tls-transport.md
+++ b/versioned_docs/version-2.2.0/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.2.1/security-tls-transport.md 
b/versioned_docs/version-2.2.1/security-tls-transport.md
index b11c01e97b7..4d1de4512df 100644
--- a/versioned_docs/version-2.2.1/security-tls-transport.md
+++ b/versioned_docs/version-2.2.1/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.3.0/security-tls-transport.md 
b/versioned_docs/version-2.3.0/security-tls-transport.md
index b11c01e97b7..4d1de4512df 100644
--- a/versioned_docs/version-2.3.0/security-tls-transport.md
+++ b/versioned_docs/version-2.3.0/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.3.1/security-tls-transport.md 
b/versioned_docs/version-2.3.1/security-tls-transport.md
index b11c01e97b7..4d1de4512df 100644
--- a/versioned_docs/version-2.3.1/security-tls-transport.md
+++ b/versioned_docs/version-2.3.1/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.3.2/security-tls-transport.md 
b/versioned_docs/version-2.3.2/security-tls-transport.md
index b11c01e97b7..4d1de4512df 100644
--- a/versioned_docs/version-2.3.2/security-tls-transport.md
+++ b/versioned_docs/version-2.3.2/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.4.0/security-tls-transport.md 
b/versioned_docs/version-2.4.0/security-tls-transport.md
index b11c01e97b7..4d1de4512df 100644
--- a/versioned_docs/version-2.4.0/security-tls-transport.md
+++ b/versioned_docs/version-2.4.0/security-tls-transport.md
@@ -39,7 +39,7 @@ The following guide is an abridged guide to setting up a 
certificate authority.
 
 The first step is to create the certificate for the CA. The CA will be used to 
sign both the broker and client certificates, in order to ensure that each 
party will trust the others. The CA should be stored in a very secure location 
(ideally completely disconnected from networks, air gapped, and fully 
encrypted).
 
-Create a directory for your CA, and place [this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and directories needed 
for the CA.
+Create a directory for your CA, and place [this openssl configuration 
file](pathname:///examples/openssl.cnf) in the directory. You may want to 
modify the default answers for company name and department in the configuration 
file. Export the location of the CA directory to the environment variable, 
CA_HOME. The configuration file uses this environment variable to find the rest 
of the files and directories needed for the CA.
 
 ```bash
 
diff --git a/versioned_docs/version-2.4.1/security-tls-transport.md 
b/versioned_docs/version-2.4.1/security-tls-transport.md
index b481109c106..f77bcf2cee3 100644
--- a/versioned_docs/version-2.4.1/security-tls-transport.md
+++ b/versioned_docs/version-2.4.1/security-tls-transport.md
@@ -39,7 +39,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.4.2/security-tls-transport.md 
b/versioned_docs/version-2.4.2/security-tls-transport.md
index b481109c106..f77bcf2cee3 100644
--- a/versioned_docs/version-2.4.2/security-tls-transport.md
+++ b/versioned_docs/version-2.4.2/security-tls-transport.md
@@ -39,7 +39,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.5.0/security-tls-transport.md 
b/versioned_docs/version-2.5.0/security-tls-transport.md
index 09b7db688e7..1bf0256a3de 100644
--- a/versioned_docs/version-2.5.0/security-tls-transport.md
+++ b/versioned_docs/version-2.5.0/security-tls-transport.md
@@ -39,7 +39,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.5.1/security-tls-transport.md 
b/versioned_docs/version-2.5.1/security-tls-transport.md
index 45b12501900..172586538d2 100644
--- a/versioned_docs/version-2.5.1/security-tls-transport.md
+++ b/versioned_docs/version-2.5.1/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.5.2/security-tls-transport.md 
b/versioned_docs/version-2.5.2/security-tls-transport.md
index 45b12501900..172586538d2 100644
--- a/versioned_docs/version-2.5.2/security-tls-transport.md
+++ b/versioned_docs/version-2.5.2/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.6.0/security-tls-transport.md 
b/versioned_docs/version-2.6.0/security-tls-transport.md
index 50552c0a820..c409209900e 100644
--- a/versioned_docs/version-2.6.0/security-tls-transport.md
+++ b/versioned_docs/version-2.6.0/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.6.1/security-tls-transport.md 
b/versioned_docs/version-2.6.1/security-tls-transport.md
index 50552c0a820..c409209900e 100644
--- a/versioned_docs/version-2.6.1/security-tls-transport.md
+++ b/versioned_docs/version-2.6.1/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.6.2/security-tls-transport.md 
b/versioned_docs/version-2.6.2/security-tls-transport.md
index 50552c0a820..c409209900e 100644
--- a/versioned_docs/version-2.6.2/security-tls-transport.md
+++ b/versioned_docs/version-2.6.2/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.6.3/security-tls-transport.md 
b/versioned_docs/version-2.6.3/security-tls-transport.md
index 50552c0a820..c409209900e 100644
--- a/versioned_docs/version-2.6.3/security-tls-transport.md
+++ b/versioned_docs/version-2.6.3/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.6.4/security-tls-transport.md 
b/versioned_docs/version-2.6.4/security-tls-transport.md
index 50552c0a820..c409209900e 100644
--- a/versioned_docs/version-2.6.4/security-tls-transport.md
+++ b/versioned_docs/version-2.6.4/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.0/security-tls-transport.md 
b/versioned_docs/version-2.7.0/security-tls-transport.md
index 57a84ebadb6..9e5633178ff 100644
--- a/versioned_docs/version-2.7.0/security-tls-transport.md
+++ b/versioned_docs/version-2.7.0/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.1/security-tls-transport.md 
b/versioned_docs/version-2.7.1/security-tls-transport.md
index 57a84ebadb6..9e5633178ff 100644
--- a/versioned_docs/version-2.7.1/security-tls-transport.md
+++ b/versioned_docs/version-2.7.1/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.2/security-tls-transport.md 
b/versioned_docs/version-2.7.2/security-tls-transport.md
index 57a84ebadb6..9e5633178ff 100644
--- a/versioned_docs/version-2.7.2/security-tls-transport.md
+++ b/versioned_docs/version-2.7.2/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.3/security-tls-transport.md 
b/versioned_docs/version-2.7.3/security-tls-transport.md
index db8f840d5bc..a107c30d700 100644
--- a/versioned_docs/version-2.7.3/security-tls-transport.md
+++ b/versioned_docs/version-2.7.3/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.4/security-tls-transport.md 
b/versioned_docs/version-2.7.4/security-tls-transport.md
index db8f840d5bc..a107c30d700 100644
--- a/versioned_docs/version-2.7.4/security-tls-transport.md
+++ b/versioned_docs/version-2.7.4/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.7.5/security-tls-transport.md 
b/versioned_docs/version-2.7.5/security-tls-transport.md
index db8f840d5bc..a107c30d700 100644
--- a/versioned_docs/version-2.7.5/security-tls-transport.md
+++ b/versioned_docs/version-2.7.5/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.8.x/security-tls-transport.md 
b/versioned_docs/version-2.8.x/security-tls-transport.md
index 127ef2b0018..ecc0d7b13d8 100644
--- a/versioned_docs/version-2.8.x/security-tls-transport.md
+++ b/versioned_docs/version-2.8.x/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 
diff --git a/versioned_docs/version-2.9.x/security-tls-transport.md 
b/versioned_docs/version-2.9.x/security-tls-transport.md
index 127ef2b0018..ecc0d7b13d8 100644
--- a/versioned_docs/version-2.9.x/security-tls-transport.md
+++ b/versioned_docs/version-2.9.x/security-tls-transport.md
@@ -41,7 +41,7 @@ Follow the guide below to set up a certificate authority. You 
can also refer to
 
 1. Create the certificate for the CA. You can use CA to sign both the broker 
and client certificates. This ensures that each party will trust the others. 
You should store CA in a very secure location (ideally completely disconnected 
from networks, air gapped, and fully encrypted).
 
-2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration 
file](https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf)
 in the directory. You may want to modify the default answers for company name 
and department in the configuration file. Export the location of the CA 
directory to the environment variable, CA_HOME. The configuration file uses 
this environment variable to find the rest of the files and direc [...]
+2. Entering the following command to create a directory for your CA, and place 
[this openssl configuration file](pathname:///examples/openssl.cnf) in the 
directory. You may want to modify the default answers for company name and 
department in the configuration file. Export the location of the CA directory 
to the environment variable, CA_HOME. The configuration file uses this 
environment variable to find the rest of the files and directories that the CA 
needs.
 
 ```bash
 

Reply via email to