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 2cc0f7834e7 Migrate Contributing page (#357)
2cc0f7834e7 is described below

commit 2cc0f7834e795a07df96b9da259f89e46c22fc3e
Author: tison <[email protected]>
AuthorDate: Sun Jan 1 20:56:35 2023 +0800

    Migrate Contributing page (#357)
    
    Signed-off-by: tison <[email protected]>
---
 contribute/about.md       |  30 ++-
 src/pages/community.js    | 576 ---------------------------------------------
 src/pages/community.tsx   | 581 ++++++++++++++++++++++++++++++++++++++++++++++
 src/pages/contributing.md | 450 -----------------------------------
 static/.htaccess          |   3 +-
 5 files changed, 608 insertions(+), 1032 deletions(-)

diff --git a/contribute/about.md b/contribute/about.md
index c1c9673d316..d0bcbb5eade 100644
--- a/contribute/about.md
+++ b/contribute/about.md
@@ -8,10 +8,30 @@ sidebar_position: 2
 
 The Apache Pulsar community welcomes contributions from anyone with a passion 
for distributed systems! Pulsar has many opportunities for contributions: write 
new examples/tutorials, add new user-facing libraries, write new Pulsar IO 
connectors, or participate on the documentation effort.
 
-## Quick Links
+## Channels
 
-Here are some links that you probably will reference frequently while 
contributing to Pulsar:
+To engage the Pulsar developers community, you can join the following 
channels. 
 
-* [Issue tracker](https://github.com/apache/pulsar/issues)
-* [Developer mailing list](mailto:[email protected]) 
([subscribe](mailto:[email protected]))
-* [#contributors channel on Pulsar 
Slack](https://apache-pulsar.slack.com/channels/contributors) 
([join](https://pulsar.apache.org/community#section-discussions))
+### Mailing lists
+
+Pulsar developers discuss design and implementation issues on the 
[email protected] mailing list, which is archived 
[here](https://lists.apache.org/[email protected]). Join the 
list by emailing [email protected].
+
+### GitHub issues
+
+Pulsar developers use [GitHub issues](https://github.com/apache/pulsar/issues) 
for issue tracking and project management, as well as a way to communicate 
among a very diverse and distributed set of contributors. To be able to gather 
feedback, avoid frustration, and avoid duplicated efforts all Pulsar related 
work are being tracked there.
+
+If you do not already have a GitHub account, sign up 
[here](https://github.com/join).
+
+If a quick [search](https://github.com/apache/pulsar/issues) doesn't turn up 
an existing GitHub issue for the work you want to contribute, create it. Please 
discuss your idea with a committer on GitHub or, alternatively, on the 
developer mailing list.
+
+If there’s an existing GitHub issue for your intended contribution, please 
comment about your intended work. Once the work is understood, a committer will 
assign the issue to you. If an issue is currently assigned, please check with 
the current assignee before reassigning.
+
+For moderate or large contributions, you should not start coding or writing a 
design document unless there is a corresponding GitHub issue assigned to you 
for that work. Simple changes, like fixing typos, do not require an associated 
issue.
+
+### Online discussions
+
+Pulsar users and developers use [Apache Pulsar Slack 
channel](https://apache-pulsar.slack.com/) for online discussions. You can 
self-invite yourself by accessing [this 
link](https://communityinviter.com/apps/apache-pulsar/apache-pulsar).
+
+Slack channels are great for quick questions or discussions on specialized 
topics. Remember that it's strongly encouraged to communicate via the mailing 
lists, and you should prefer to discuss more complex subjects by email. 
+
+Developers should be careful to move or duplicate all the official or useful 
discussions on GitHub or the dev mailing list.
diff --git a/src/pages/community.js b/src/pages/community.js
deleted file mode 100644
index 2ef053de813..00000000000
--- a/src/pages/community.js
+++ /dev/null
@@ -1,576 +0,0 @@
-import React, { useEffect, componentDidMount } from "react";
-import Layout from "@theme/Layout";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import TeamTable from "../components/TeamTable";
-import PromoCallout from "../components/PromoCallout";
-import PillButton from "../components/PillButton";
-import GroupsIcon from "@mui/icons-material/Groups";
-import WavySeparatorFive from "@site/static/img/separator-5.svg";
-import WavySeparatorSix from "@site/static/img/separator-6.svg";
-import { pageUrl } from "@site/src/utils/index";
-const teamObj = require("../../data/team.js");
-export default function Community(props) {
-  // Images in this array are used in the carousel
-  const slidesArr = [
-    {
-      img: useBaseUrl("/img/community-photo-small.jpg"),
-      alt: "community photo",
-    },
-    {
-      img: useBaseUrl("/img/community-image-2.jpg"),
-      alt: "community photo 2",
-    },
-    {
-      img: useBaseUrl("/img/community-image-3.jpg"),
-      alt: "community photo 3",
-    },
-  ];
-
-  useEffect(d => {
-    // used to scroll to anchor on the page
-    if (location.hash) {
-      let hash = location.hash;
-      let id = hash.split("-")[1];
-      let target = document.getElementById(id);
-      if (target) {
-        target.scrollIntoView({
-          behavior: "smooth", // smooth scroll
-          block: "start", // the upper border of the element will be aligned 
at the top of the visible part of the window of the scrollable area.
-        });
-      }
-    }
-
-    // highlights the link in the navigation when that section is in the 
viewport
-    const sections = document.querySelectorAll(".scrollable");
-    const links = document.querySelectorAll(".scroll-link");
-    var observer = new IntersectionObserver(
-      function (entries) {
-        if (entries[0].isIntersecting === true) {
-          let id = entries[0].target.id;
-          let target = "scroll-" + id;
-          links.forEach(l => {
-            l.classList.remove("active-section");
-          });
-          let finalTarget = document.getElementById(target);
-          if (finalTarget) {
-            finalTarget.classList.add("active-section");
-          }
-        }
-      },
-      { threshold: [0.5] }
-    );
-    sections.forEach(s => {
-      observer.observe(document.getElementById(s.id));
-    });
-
-    // This code runs the image carousel
-    const slides = document.querySelectorAll(".slide-image");
-    const allDots = document.getElementsByClassName("dot");
-    const firstSlide = document.getElementById("slide-0");
-    const firstDot = document.getElementById("dot-0");
-    firstSlide.classList.add("active-slide");
-    firstDot.classList.add("active-dot");
-    const dots = document.querySelectorAll(".dot");
-    const slideCount = slides.length;
-    const intervalTime = 4000;
-    let interval;
-    let counter = 0;
-    function cycleSlides() {
-      var active = document.querySelector(".active-slide");
-      var activeDot = document.querySelector(".active-dot");
-      active.classList.remove("active-slide");
-      activeDot.classList.remove("active-dot");
-      if (counter === slideCount - 1) {
-        slides[0].classList.add("active-slide");
-        dots[0].classList.add("active-dot");
-        counter = 0;
-      } else {
-        var next = counter++;
-        slides[next].nextElementSibling.classList.add("active-slide");
-        dots[next].nextElementSibling.classList.add("active-dot");
-        counter + 1;
-      }
-    }
-    var slideInterval = function () {
-      interval = setInterval(function () {
-        cycleSlides();
-      }, intervalTime);
-    };
-
-    slideInterval();
-
-    // if you click on  on a pagination dot
-    var showSlide = function () {
-      let id = this.getAttribute("id");
-      let slideId = id.replace("dot", "slide");
-      let target = document.getElementById(slideId);
-      var active = document.querySelector(".active-slide");
-      var activeDot = document.querySelector(".active-dot");
-      active.classList.remove("active-slide");
-      activeDot.classList.remove("active-dot");
-      this.classList.add("active-dot");
-      target.classList.add("active-slide");
-      // stops the interval when someone clicks on a dot.
-      clearInterval(interval);
-    };
-    for (var i = 0; i < allDots.length; i++) {
-      allDots[i].addEventListener("click", showSlide, false);
-    }
-
-    // cleanup required or interval will continue to run, even on other pages
-    return function cleanup() {
-      clearInterval(interval);
-    };
-  });
-
-  return (
-    <Layout
-      title={`Community`}
-      description="Learn about the basics of using Apache Pulsar"
-    >
-      <div className="page-wrap tailwind">
-        <div className="hero-bg absolute z-0">
-          <img
-            className="relative"
-            src={useBaseUrl("/img/community-hero-bg.jpg")}
-          />
-        </div>
-        <section
-          id="welcome"
-          className="scrollable hero hero--welcome pt-24 relative"
-        >
-          <div className="inner cf">
-            <h1>Welcome to the Pulsar Community</h1>
-            <div className="cf">
-              <div className="md:w-2/3 md:float-left">
-                <p className="text-lg">
-                  The Apache Pulsar community includes people from around the
-                  globe who are developing and using the messaging and 
streaming
-                  platform for real-time workloads. We welcome contributions
-                  from anyone with a passion for distributed systems.
-                </p>
-              </div>
-            </div>
-          </div>
-        </section>
-
-        <section id="team" className="main-content relative">
-          <div className="inner pb-0 cf">
-            <div className="cf flex flex-col md:items-center md:flex-row">
-              <div className="md:w-1/2 md:pr-12">
-                <h2>About the Community</h2>
-                <p>
-                  The Pulsar community is composed of members of the Project
-                  Management Committee (PMC), committers, and contributors.
-                  Committers have direct access to the source of a project and
-                  actively evolve the codebase. Contributors improve the 
project
-                  through submission of patches and suggestions to be reviewed
-                  by the committers. The number of committers and contributors
-                  to the project is unbounded.{" "}
-                </p>
-              </div>
-              <div className="image-bg-container p-8 md:w-1/2">
-                <div id="slider" className="relative">
-                  {/*
-                      NOTE: add images to the slidesArr array above to include 
the in the image carousel.
-                    */}
-                  {slidesArr.map((s, i) => {
-                    return (
-                      <img
-                        id={`slide-${i}`}
-                        key={i}
-                        className="slide-image"
-                        src={s.img}
-                        alt={s.alt}
-                      />
-                    );
-                  })}
-                </div>
-                <div className="pagination">
-                  {slidesArr.map((d, i) => {
-                    return <div id={`dot-${i}`} key={i} className="dot"></div>;
-                  })}
-                </div>
-              </div>
-            </div>
-            <div className="cf py-12 flex flex-col sm:flex-row">
-              <div className="sm:w-1/3">
-                <h3>
-                  A successful project requires many people to play many roles.
-                </h3>
-              </div>
-              <div className="sm:w-2/3 sm:pl-8">
-                <p>
-                  Some write code or documentation, while others are valuable 
as
-                  testers, submitting patches, and suggestions. Get involved
-                  today! All contributions to the project are greatly
-                  appreciated.
-                </p>
-                <p>
-                  Read the{" "}
-                  <a
-                    href="https://www.apache.org/foundation/policies/conduct";
-                    className="secondary-cta"
-                    target="_blank"
-                  >
-                    Apache Code of Conduct
-                  </a>{" "}
-                  and{" "}
-                  <a
-                    
href="https://www.apache.org/foundation/policies/conduct#reporting-guidelines";
-                    className="secondary-cta"
-                    target="_blank"
-                  >
-                    Reporting Guidelines
-                  </a>
-                  .
-                </p>
-              </div>
-            </div>
-          </div>
-        </section>
-        <WavySeparatorFive></WavySeparatorFive>
-        <section id="discussions" className="scrollable">
-          <div className="inner pt-12">
-            <h2 className="text--center">Discussions</h2>
-            <div className="cf py-12 flex flex-col md:flex-row">
-              <div className="md:w-1/3 md:flex md:flex-center md:p-12">
-                <img src={useBaseUrl("/img/mailing-list.svg")} />
-              </div>
-              <div className="md:w-2/3">
-                <h3>Mailing Lists</h3>
-                <p>
-                  The primary place for discussions is on the Pulsar mailing
-                  lists.
-                </p>
-                <div className="flex flex-col md:flex-row">
-                  <div className="discussion-box md:w-1/2 md:pr-2">
-                    <h4>User List</h4>
-                    <p>General mailing list for user-related discussions.</p>
-
-                    <PillButton
-                      variant=""
-                      target=""
-                      href="mailto:[email protected]";
-                    >
-                      Subscribe
-                    </PillButton>
-                    <PillButton
-                      variant="grey"
-                      target="_blank"
-                      href="mailto:[email protected]";
-                    >
-                      Unsubscribe
-                    </PillButton>
-                    <p>
-                      <strong>
-                        Access the{" "}
-                        <a
-                          className="secondary-cta"
-                          
href="https://lists.apache.org/[email protected]";
-                          target="_blank"
-                        >
-                          User List Archives
-                        </a>
-                        .
-                      </strong>
-                    </p>
-                  </div>
-                  <div className="discussion-box md:w-1/2 md:pr-2">
-                    <h4>Developer List</h4>
-                    <p>
-                      Questions and discussions related to Pulsar development.
-                    </p>
-
-                    <PillButton
-                      variant=""
-                      target=""
-                      href="mailto:[email protected]";
-                    >
-                      Subscribe
-                    </PillButton>
-                    <PillButton
-                      variant="grey"
-                      target="_blank"
-                      href="mailto:[email protected]";
-                    >
-                      Unsubscribe
-                    </PillButton>
-
-                    <p>
-                      <strong>
-                        Access the{" "}
-                        <a
-                          className="secondary-cta"
-                          
href="https://lists.apache.org/[email protected]";
-                        >
-                          Developer List Archives
-                        </a>
-                        .
-                      </strong>
-                    </p>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div className="cf flex flex-col md:flex-row py-12">
-              <div className="md:w-1/3">
-                <img src={useBaseUrl("/img/Slack_Mark.svg")} />
-              </div>
-              <div className="md:w-2/3">
-                <h3>Slack</h3>
-                <div className="">
-                  <p>
-                    The Pulsar community maintains its own Slack instance
-                    (separate from ASF Slack) used for informal discussions for
-                    developers and users.{" "}
-                  </p>
-                  <p>
-                    Slack channels are great for quick questions or discussions
-                    on specialized topics. Remember that we strongly encourage
-                    communication via the mailing lists, and we prefer to
-                    discuss more complex subjects by email. Developers should 
be
-                    careful to move or duplicate all official or useful
-                    discussions to the issue tracking system and/or the dev
-                    mailing list.
-                  </p>
-                  <p>Not signed up? Use our Slack App to self-register </p>
-                  <PillButton
-                    variant=""
-                    target="_blank"
-                    href="https://apache-pulsar.slack.com/";
-                  >
-                    PULSAR SLACK
-                  </PillButton>
-                  <PillButton
-                    variant="grey"
-                    target="_blank"
-                    
href="https://communityinviter.com/apps/apache-pulsar/apache-pulsar";
-                  >
-                    PULSAR SLACK SIGN-UP
-                  </PillButton>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div className="inner pt-12">
-            <div className="text--center md:text-left md:grid md:grid-cols-3 
md:gap-x-4 md:gap-y-4">
-              <div className="discussion-box">
-                <div className="icon-wrap text--center md:text-left md:flex 
md:items-center">
-                  <img
-                    className="mx-auto md:m-0"
-                    src={useBaseUrl("/img/logo-stackoverflow.svg")}
-                  />
-                </div>
-                <h3>Stack Overflow</h3>
-                <p>
-                  For technical questions, we ask that you post them to{" "}
-                  <a
-                    href="https://stackoverflow.com/tags/apache-pulsar";
-                    target="_blank"
-                  >
-                    Stack Overflow
-                  </a>{" "}
-                  using the tag “apache-pulsar”.
-                </p>
-              </div>
-              <div className="discussion-box">
-                <div className="icon-wrap flex items-center">
-                  <img
-                    className="mx-auto md:m-0"
-                    src={useBaseUrl("/img/wechat-logo.svg")}
-                  />
-                </div>
-
-                <h3>WeChat</h3>
-                <p>
-                  Welcome to subscribe to the Apache Pulsar WeChat Official
-                  Account! The account ID is ApachePulsar.
-                </p>
-              </div>
-              <div className="discussion-box">
-                <div className="icon-wrap text-2xl flex items-center">
-                  <GroupsIcon className="icon-wrap-icon mx-auto md:m-0" />
-                </div>
-                <h3>Community Meetings</h3>
-                <p>
-                  The community meeting occurs biweekly on Tuesdays and
-                  Thursdays to discuss new proposals, open pull requests, and
-                  host open discussions. Details and how to join{" "}
-                  <a
-                    
href="https://github.com/apache/pulsar/wiki/Community-Meetings";
-                    target="_blank"
-                  >
-                    here.
-                  </a>
-                </p>
-              </div>
-            </div>
-          </div>
-        </section>
-        <WavySeparatorSix></WavySeparatorSix>
-        <section id="governance" className="py-12 scrollable">
-          <div className="inner">
-            <h2>Project Governance</h2>
-            <p>
-              Apache Pulsar is independently managed by its Project Management
-              Committee (PMC)—the governing body tasked with project management
-              including technical direction, voting on new committers and PMC
-              members, setting policies, and formally voting on software 
product
-              releases.
-            </p>
-            <PillButton
-              variant=""
-              target="_blank"
-              href="https://community.apache.org/projectIndependence";
-            >
-              ASF PROJECT INDEPENDENCE OVERVIEW
-            </PillButton>
-            <PillButton
-              variant="grey"
-              target="_blank"
-              href="https://www.apache.org/foundation/governance/pmcs.html";
-            >
-              ASF PMC OVERVIEW
-            </PillButton>
-            <PillButton
-              variant=""
-              target="_blank"
-              href="https://www.apache.org/theapacheway/index.html";
-            >
-              THE APACHE WAY
-            </PillButton>
-          </div>
-        </section>
-        <section id="contribute" className="py-12 scrollable">
-          <div className="inner">
-            <h2 className="text-center sm:text-left">How to Contribute</h2>
-            <div className="">
-              <div className="flex flex-col  sm:flex-row items-center py-12">
-                <div className="sm:w-1/3 section-icon px-12">
-                  <img src={useBaseUrl("/img/contribute.svg")} />
-                </div>
-                <div className="sm:w-2/3">
-                  <h3>Contributing to the Project</h3>
-                  <p>
-                    Pulsar has many different opportunities for contributions 
--
-                    you can write new examples/tutorials, add new user-facing
-                    libraries, write new Pulsar IO connectors, participate in
-                    documentation, and more.{" "}
-                  </p>
-                  <PillButton
-                    variant=""
-                    target=""
-                    href={pageUrl("contributing")}
-                  >
-                    Contributor Guide
-                  </PillButton>
-                  <PillButton
-                    variant="grey"
-                    target=""
-                    href={pageUrl("coding-guide")}
-                  >
-                    Coding Guide
-                  </PillButton>
-                </div>
-              </div>
-              <div className="flex flex-col  sm:flex-row items-center  py-12">
-                <div className="sm:w-1/3 section-icon px-12">
-                  <img src={useBaseUrl("/img/report-bugs.svg")} />
-                </div>
-                <div className="sm:w-2/3 ">
-                  <h3>Reporting Bugs</h3>
-                  <p>
-                    If you encounter a problem with Pulsar, the first places to
-                    ask for help are the user mailing list or Stack Overflow.
-                  </p>
-                  <p>
-                    If, after having asked for help, you suspect that you have
-                    found a bug in Pulsar, you should report it to the 
developer
-                    mailing list or by opening GitHub Issue. Please provide as
-                    much detail as you can on your problem. Don’t forget to
-                    indicate which version of Pulsar you are running and on
-                    which environment.
-                  </p>
-                </div>
-              </div>
-              <div className="flex flex-col  sm:flex-row items-center py-12">
-                <div className="sm:w-1/3 section-icon  px-12">
-                  <img src={useBaseUrl("/img/report-vulnerabillity.svg")} />
-                </div>
-                <div className="sm:w-2/3">
-                  <h3>Reporting a Vulnerability</h3>
-                  <p>
-                    To report a vulnerability for Pulsar, contact the{" "}
-                    <a
-                      className="secondary-cta"
-                      href="https://www.apache.org/security/projects.html";
-                      target="_blank"
-                    >
-                      Apache Security Team
-                    </a>
-                    .
-                  </p>
-                    <p>The process for reporting a vulnerability is outlined
-                        <a className="secondary-cta" 
href="https://www.apache.org/security/"; target="_blank">here</a>
-                      . When reporting a vulnerability to
-                      <a className="secondary-cta" 
href="mailto:[email protected]"; target="_blank">[email protected]</a>
-                      , you can copy your email to
-                      <a className="secondary-cta" 
href="mailto:[email protected]"; 
target="_blank">[email protected]</a>
-                      to send your report to the Apache Pulsar Project 
Management Committee. This is a private mailing list.
-                    </p>
-                </div>
-              </div>
-            </div>
-          </div>
-        </section>
-        <WavySeparatorSix></WavySeparatorSix>
-        <section id="community" className="py-12 scrollable">
-          <div className="inner">
-            <h2 className="text--center">Meet the Community</h2>
-            <p>Pulsar community consists of PMC members, committers and 
contributors. </p>
-            <p>
-              For the complete and up-to-date list, see{" "}
-              <a
-                className="secondary-cta"
-                href="https://projects.apache.org/committee.html?pulsar";
-                target="_blank"
-              >
-                Apache Pulsar Committee
-              </a>
-              .
-            </p>
-            <h3 className="text--center">PMC</h3>
-            <div className="md:grid md:grid-cols-2 md:gap-x-4">
-              <TeamTable
-                data={teamObj.pmc.slice(0, (teamObj.pmc.length + 1) / 2)}
-              />
-              <TeamTable
-                data={teamObj.pmc.slice((teamObj.pmc.length + 1) / 2)}
-              />
-            </div>
-            <h3 className="text--center">Committers</h3>
-            <div className="md:grid md:grid-cols-2 md:gap-x-4">
-              <TeamTable
-                data={teamObj.committers.slice(0, (teamObj.committers.length + 
1) / 2)}
-              />
-              <TeamTable
-                data={teamObj.committers.slice((teamObj.committers.length + 1) 
/ 2)}
-              />
-            </div>
-            <div className="md:grid md:grid-cols-2 md:gap-x-4">
-              <img 
src="https://contributor-overtime-api.git-contributor.com/contributors-svg?chart=contributorOverTime&repo=apache/pulsar";
 />
-              <img 
src="https://contributor-overtime-api.git-contributor.com/contributors-svg?chart=contributorMonthlyActivity&repo=apache/pulsar";
 />
-            </div>
-          </div>
-        </section>
-        <PromoCallout
-          url="/blog"
-          linkText="Read Now"
-          text="Get up-to-date Pulsar insights on the blog"
-        />
-      </div>
-    </Layout>
-  );
-}
diff --git a/src/pages/community.tsx b/src/pages/community.tsx
new file mode 100644
index 00000000000..af9eea30b5b
--- /dev/null
+++ b/src/pages/community.tsx
@@ -0,0 +1,581 @@
+import React, {useEffect} from "react";
+import Layout from "@theme/Layout";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+import TeamTable from "@site/src/components/TeamTable";
+import PromoCallout from "@site/src/components/PromoCallout";
+import PillButton from "@site/src/components/PillButton";
+import GroupsIcon from "@mui/icons-material/Groups";
+import WavySeparatorFive from "@site/static/img/separator-5.svg";
+import WavySeparatorSix from "@site/static/img/separator-6.svg";
+import {pageUrl} from "@site/src/utils";
+import team from "@site/data/team"
+
+export default function Community(): JSX.Element {
+    // Images in this array are used in the carousel
+    const slidesArr = [
+        {
+            img: useBaseUrl("/img/community-photo-small.jpg"),
+            alt: "community photo",
+        },
+        {
+            img: useBaseUrl("/img/community-image-2.jpg"),
+            alt: "community photo 2",
+        },
+        {
+            img: useBaseUrl("/img/community-image-3.jpg"),
+            alt: "community photo 3",
+        },
+    ];
+
+    useEffect(() => {
+        // used to scroll to anchor on the page
+        if (location.hash) {
+            let hash = location.hash;
+            let id = hash.split("-")[1];
+            let target = document.getElementById(id);
+            if (target) {
+                target.scrollIntoView({
+                    behavior: "smooth", // smooth scroll
+                    block: "start", // the upper border of the element will be 
aligned at the top of the visible part of the window of the scrollable area.
+                });
+            }
+        }
+
+        // highlights the link in the navigation when that section is in the 
viewport
+        const sections = document.querySelectorAll(".scrollable");
+        const links = document.querySelectorAll(".scroll-link");
+        var observer = new IntersectionObserver(
+            function (entries) {
+                if (entries[0].isIntersecting === true) {
+                    let id = entries[0].target.id;
+                    let target = "scroll-" + id;
+                    links.forEach(l => {
+                        l.classList.remove("active-section");
+                    });
+                    let finalTarget = document.getElementById(target);
+                    if (finalTarget) {
+                        finalTarget.classList.add("active-section");
+                    }
+                }
+            },
+            { threshold: [0.5] }
+        );
+        sections.forEach(s => {
+            observer.observe(document.getElementById(s.id));
+        });
+
+        // This code runs the image carousel
+        const slides = document.querySelectorAll(".slide-image");
+        const allDots = document.getElementsByClassName("dot");
+        const firstSlide = document.getElementById("slide-0");
+        const firstDot = document.getElementById("dot-0");
+        firstSlide.classList.add("active-slide");
+        firstDot.classList.add("active-dot");
+        const dots = document.querySelectorAll(".dot");
+        const slideCount = slides.length;
+        const intervalTime = 4000;
+        let interval;
+        let counter = 0;
+        function cycleSlides() {
+            const active = document.querySelector(".active-slide");
+            const activeDot = document.querySelector(".active-dot");
+            active.classList.remove("active-slide");
+            activeDot.classList.remove("active-dot");
+            if (counter === slideCount - 1) {
+                slides[0].classList.add("active-slide");
+                dots[0].classList.add("active-dot");
+                counter = 0;
+            } else {
+                const next = counter++;
+                slides[next].nextElementSibling.classList.add("active-slide");
+                dots[next].nextElementSibling.classList.add("active-dot");
+                counter += 1;
+            }
+        }
+        const slideInterval = function () {
+            interval = setInterval(function () {
+                cycleSlides();
+            }, intervalTime);
+        };
+
+        slideInterval();
+
+        // if you click on  on a pagination dot
+        const showSlide = function () {
+            let id = this.getAttribute("id");
+            let slideId = id.replace("dot", "slide");
+            let target = document.getElementById(slideId);
+            const active = document.querySelector(".active-slide");
+            const activeDot = document.querySelector(".active-dot");
+            active.classList.remove("active-slide");
+            activeDot.classList.remove("active-dot");
+            this.classList.add("active-dot");
+            target.classList.add("active-slide");
+            // stops the interval when someone clicks on a dot.
+            clearInterval(interval);
+        };
+        for (let i = 0; i < allDots.length; i++) {
+            allDots[i].addEventListener("click", showSlide, false);
+        }
+
+        // cleanup required or interval will continue to run, even on other 
pages
+        return function cleanup() {
+            clearInterval(interval);
+        };
+    });
+
+    return (
+        <Layout
+            title={"Community"}
+            description={"Learn about the basics of using Apache Pulsar"}
+        >
+            <div className="page-wrap tailwind">
+                <div className="hero-bg absolute z-0">
+                    <img
+                        className="relative"
+                        src={useBaseUrl("/img/community-hero-bg.jpg")}
+                        alt={'Community Hero'}/>
+                </div>
+                <section
+                    id="welcome"
+                    className="scrollable hero hero--welcome pt-24 relative"
+                >
+                    <div className="inner cf">
+                        <h1>Welcome to the Pulsar Community</h1>
+                        <div className="cf">
+                            <div className="md:w-2/3 md:float-left">
+                                <p className="text-lg">
+                                    The Apache Pulsar community includes 
people from around the
+                                    globe who are developing and using the 
messaging and streaming
+                                    platform for real-time workloads. We 
welcome contributions
+                                    from anyone with a passion for distributed 
systems.
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+
+                <section id="team" className="main-content relative">
+                    <div className="inner pb-0 cf">
+                        <div className="cf flex flex-col md:items-center 
md:flex-row">
+                            <div className="md:w-1/2 md:pr-12">
+                                <h2>About the Community</h2>
+                                <p>
+                                    The Pulsar community is composed of 
members of the Project
+                                    Management Committee (PMC), committers, 
and contributors.
+                                    Committers have direct access to the 
source of a project and
+                                    actively evolve the codebase. Contributors 
improve the project
+                                    through submission of patches and 
suggestions to be reviewed
+                                    by the committers. The number of 
committers and contributors
+                                    to the project is unbounded.{" "}
+                                </p>
+                            </div>
+                            <div className="image-bg-container p-8 md:w-1/2">
+                                <div id="slider" className="relative">
+                                    {/*
+                      NOTE: add images to the slidesArr array above to include 
the in the image carousel.
+                    */}
+                                    {slidesArr.map((s, i) => {
+                                        return (
+                                            <img
+                                                id={`slide-${i}`}
+                                                key={i}
+                                                className="slide-image"
+                                                src={s.img}
+                                                alt={s.alt}
+                                            />
+                                        );
+                                    })}
+                                </div>
+                                <div className="pagination">
+                                    {slidesArr.map((d, i) => {
+                                        return <div id={`dot-${i}`} key={i} 
className="dot"></div>;
+                                    })}
+                                </div>
+                            </div>
+                        </div>
+                        <div className="cf py-12 flex flex-col sm:flex-row">
+                            <div className="sm:w-1/3">
+                                <h3>
+                                    A successful project requires many people 
to play many roles.
+                                </h3>
+                            </div>
+                            <div className="sm:w-2/3 sm:pl-8">
+                                <p>
+                                    Some write code or documentation, while 
others are valuable as
+                                    testers, submitting patches, and 
suggestions. Get involved
+                                    today! All contributions to the project 
are greatly
+                                    appreciated.
+                                </p>
+                                <p>
+                                    Read the{" "}
+                                    <a
+                                        
href="https://www.apache.org/foundation/policies/conduct";
+                                        className="secondary-cta"
+                                        target="_blank"
+                                    >
+                                        Apache Code of Conduct
+                                    </a>{" "}
+                                    and{" "}
+                                    <a
+                                        
href="https://www.apache.org/foundation/policies/conduct#reporting-guidelines";
+                                        className="secondary-cta"
+                                        target="_blank"
+                                    >
+                                        Reporting Guidelines
+                                    </a>
+                                    .
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+                <WavySeparatorFive></WavySeparatorFive>
+                <section id="discussions" className="scrollable">
+                    <div className="inner pt-12">
+                        <h2 className="text--center">Discussions</h2>
+                        <div className="cf py-12 flex flex-col md:flex-row">
+                            <div className="md:w-1/3 md:flex md:flex-center 
md:p-12">
+                                <img src={useBaseUrl("/img/mailing-list.svg")} 
/>
+                            </div>
+                            <div className="md:w-2/3">
+                                <h3>Mailing Lists</h3>
+                                <p>
+                                    The primary place for discussions is on 
the Pulsar mailing
+                                    lists.
+                                </p>
+                                <div className="flex flex-col md:flex-row">
+                                    <div className="discussion-box md:w-1/2 
md:pr-2">
+                                        <h4>User List</h4>
+                                        <p>General mailing list for 
user-related discussions.</p>
+
+                                        <PillButton
+                                            variant=""
+                                            target=""
+                                            
href="mailto:[email protected]";
+                                        >
+                                            Subscribe
+                                        </PillButton>
+                                        <PillButton
+                                            variant="grey"
+                                            target="_blank"
+                                            
href="mailto:[email protected]";
+                                        >
+                                            Unsubscribe
+                                        </PillButton>
+                                        <p>
+                                            <strong>
+                                                Access the{" "}
+                                                <a
+                                                    className="secondary-cta"
+                                                    
href="https://lists.apache.org/[email protected]";
+                                                    target="_blank"
+                                                >
+                                                    User List Archives
+                                                </a>
+                                                .
+                                            </strong>
+                                        </p>
+                                    </div>
+                                    <div className="discussion-box md:w-1/2 
md:pr-2">
+                                        <h4>Developer List</h4>
+                                        <p>
+                                            Questions and discussions related 
to Pulsar development.
+                                        </p>
+
+                                        <PillButton
+                                            variant=""
+                                            target=""
+                                            
href="mailto:[email protected]";
+                                        >
+                                            Subscribe
+                                        </PillButton>
+                                        <PillButton
+                                            variant="grey"
+                                            target="_blank"
+                                            
href="mailto:[email protected]";
+                                        >
+                                            Unsubscribe
+                                        </PillButton>
+
+                                        <p>
+                                            <strong>
+                                                Access the{" "}
+                                                <a
+                                                    className="secondary-cta"
+                                                    
href="https://lists.apache.org/[email protected]";
+                                                >
+                                                    Developer List Archives
+                                                </a>
+                                                .
+                                            </strong>
+                                        </p>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div className="cf flex flex-col md:flex-row py-12">
+                            <div className="md:w-1/3">
+                                <img src={useBaseUrl("/img/Slack_Mark.svg")} />
+                            </div>
+                            <div className="md:w-2/3">
+                                <h3>Slack</h3>
+                                <div className="">
+                                    <p>
+                                        The Pulsar community maintains its own 
Slack instance
+                                        (separate from ASF Slack) used for 
informal discussions for
+                                        developers and users.{" "}
+                                    </p>
+                                    <p>
+                                        Slack channels are great for quick 
questions or discussions
+                                        on specialized topics. Remember that 
we strongly encourage
+                                        communication via the mailing lists, 
and we prefer to
+                                        discuss more complex subjects by 
email. Developers should be
+                                        careful to move or duplicate all 
official or useful
+                                        discussions to the issue tracking 
system and/or the dev
+                                        mailing list.
+                                    </p>
+                                    <p>Not signed up? Use our Slack App to 
self-register </p>
+                                    <PillButton
+                                        variant=""
+                                        target="_blank"
+                                        href="https://apache-pulsar.slack.com/";
+                                    >
+                                        PULSAR SLACK
+                                    </PillButton>
+                                    <PillButton
+                                        variant="grey"
+                                        target="_blank"
+                                        
href="https://communityinviter.com/apps/apache-pulsar/apache-pulsar";
+                                    >
+                                        PULSAR SLACK SIGN-UP
+                                    </PillButton>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div className="inner pt-12">
+                        <div className="text--center md:text-left md:grid 
md:grid-cols-3 md:gap-x-4 md:gap-y-4">
+                            <div className="discussion-box">
+                                <div className="icon-wrap text--center 
md:text-left md:flex md:items-center">
+                                    <img
+                                        className="mx-auto md:m-0"
+                                        
src={useBaseUrl("/img/logo-stackoverflow.svg")}
+                                    />
+                                </div>
+                                <h3>Stack Overflow</h3>
+                                <p>
+                                    For technical questions, we ask that you 
post them to{" "}
+                                    <a
+                                        
href="https://stackoverflow.com/tags/apache-pulsar";
+                                        target="_blank"
+                                    >
+                                        Stack Overflow
+                                    </a>{" "}
+                                    using the tag “apache-pulsar”.
+                                </p>
+                            </div>
+                            <div className="discussion-box">
+                                <div className="icon-wrap flex items-center">
+                                    <img
+                                        className="mx-auto md:m-0"
+                                        
src={useBaseUrl("/img/wechat-logo.svg")}
+                                    />
+                                </div>
+
+                                <h3>WeChat</h3>
+                                <p>
+                                    Welcome to subscribe to the Apache Pulsar 
WeChat Official
+                                    Account! The account ID is ApachePulsar.
+                                </p>
+                            </div>
+                            <div className="discussion-box">
+                                <div className="icon-wrap text-2xl flex 
items-center">
+                                    <GroupsIcon className="icon-wrap-icon 
mx-auto md:m-0" />
+                                </div>
+                                <h3>Community Meetings</h3>
+                                <p>
+                                    The community meeting occurs biweekly on 
Tuesdays and
+                                    Thursdays to discuss new proposals, open 
pull requests, and
+                                    host open discussions. Details and how to 
join{" "}
+                                    <a
+                                        
href="https://github.com/apache/pulsar/wiki/Community-Meetings";
+                                        target="_blank"
+                                    >
+                                        here.
+                                    </a>
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+                <WavySeparatorSix></WavySeparatorSix>
+                <section id="governance" className="py-12 scrollable">
+                    <div className="inner">
+                        <h2>Project Governance</h2>
+                        <p>
+                            Apache Pulsar is independently managed by its 
Project Management
+                            Committee (PMC)—the governing body tasked with 
project management
+                            including technical direction, voting on new 
committers and PMC
+                            members, setting policies, and formally voting on 
software product
+                            releases.
+                        </p>
+                        <PillButton
+                            variant=""
+                            target="_blank"
+                            
href="https://community.apache.org/projectIndependence";
+                        >
+                            ASF PROJECT INDEPENDENCE OVERVIEW
+                        </PillButton>
+                        <PillButton
+                            variant="grey"
+                            target="_blank"
+                            
href="https://www.apache.org/foundation/governance/pmcs.html";
+                        >
+                            ASF PMC OVERVIEW
+                        </PillButton>
+                        <PillButton
+                            variant=""
+                            target="_blank"
+                            
href="https://www.apache.org/theapacheway/index.html";
+                        >
+                            THE APACHE WAY
+                        </PillButton>
+                    </div>
+                </section>
+                <section id="contribute" className="py-12 scrollable">
+                    <div className="inner">
+                        <h2 className="text-center sm:text-left">How to 
Contribute</h2>
+                        <div className="">
+                            <div className="flex flex-col  sm:flex-row 
items-center py-12">
+                                <div className="sm:w-1/3 section-icon px-12">
+                                    <img 
src={useBaseUrl("/img/contribute.svg")} />
+                                </div>
+                                <div className="sm:w-2/3">
+                                    <h3>Contributing to the Project</h3>
+                                    <p>
+                                        Pulsar has many different 
opportunities for contributions --
+                                        you can write new examples/tutorials, 
add new user-facing
+                                        libraries, write new Pulsar IO 
connectors, participate in
+                                        documentation, and more.{" "}
+                                    </p>
+                                    <PillButton
+                                        variant=""
+                                        target=""
+                                        href={useBaseUrl("contribute")}
+                                    >
+                                        Contribution Guide
+                                    </PillButton>
+                                    <PillButton
+                                        variant="grey"
+                                        target=""
+                                        
href={useBaseUrl("contribute/develop-coding-conventions")}
+                                    >
+                                        Coding Conventions
+                                    </PillButton>
+                                </div>
+                            </div>
+                            <div className="flex flex-col  sm:flex-row 
items-center  py-12">
+                                <div className="sm:w-1/3 section-icon px-12">
+                                    <img 
src={useBaseUrl("/img/report-bugs.svg")} alt={'Report bugs'} />
+                                </div>
+                                <div className="sm:w-2/3 ">
+                                    <h3>Reporting Bugs</h3>
+                                    <p>
+                                        If you encounter a problem with 
Pulsar, the first places to
+                                        ask for help are the user mailing list 
or Stack Overflow.
+                                    </p>
+                                    <p>
+                                        If, after having asked for help, you 
suspect that you have
+                                        found a bug in Pulsar, you should 
report it to the developer
+                                        mailing list or by opening GitHub 
Issue. Please provide as
+                                        much detail as you can on your 
problem. Don’t forget to
+                                        indicate which version of Pulsar you 
are running and on
+                                        which environment.
+                                    </p>
+                                </div>
+                            </div>
+                            <div className="flex flex-col  sm:flex-row 
items-center py-12">
+                                <div className="sm:w-1/3 section-icon  px-12">
+                                    <img 
src={useBaseUrl("/img/report-vulnerabillity.svg")} />
+                                </div>
+                                <div className="sm:w-2/3">
+                                    <h3>Reporting a Vulnerability</h3>
+                                    <p>
+                                        To report a vulnerability for Pulsar, 
contact the{" "}
+                                        <a
+                                            className="secondary-cta"
+                                            
href="https://www.apache.org/security/projects.html";
+                                            target="_blank"
+                                        >
+                                            Apache Security Team
+                                        </a>
+                                        .
+                                    </p>
+                                    <p>The process for reporting a 
vulnerability is outlined
+                                        <a className="secondary-cta" 
href="https://www.apache.org/security/"; target="_blank">here</a>
+                                        . When reporting a vulnerability to
+                                        <a className="secondary-cta" 
href="mailto:[email protected]"; target="_blank">[email protected]</a>
+                                        , you can copy your email to
+                                        <a className="secondary-cta" 
href="mailto:[email protected]"; 
target="_blank">[email protected]</a>
+                                        to send your report to the Apache 
Pulsar Project Management Committee. This is a private mailing list.
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+                <WavySeparatorSix></WavySeparatorSix>
+                <section id="community" className="py-12 scrollable">
+                    <div className="inner">
+                        <h2 className="text--center">Meet the Community</h2>
+                        <p>Pulsar community consists of PMC members, 
committers and contributors. </p>
+                        <p>
+                            For the complete and up-to-date list, see{" "}
+                            <a
+                                className="secondary-cta"
+                                
href="https://projects.apache.org/committee.html?pulsar";
+                                target="_blank"
+                            >
+                                Apache Pulsar Committee
+                            </a>
+                            .
+                        </p>
+                        <h3 className="text--center">PMC</h3>
+                        <div className="md:grid md:grid-cols-2 md:gap-x-4">
+                            <TeamTable
+                                data={team.pmc.slice(0, (team.pmc.length + 1) 
/ 2)}
+                            />
+                            <TeamTable
+                                data={team.pmc.slice((team.pmc.length + 1) / 
2)}
+                            />
+                        </div>
+                        <h3 className="text--center">Committers</h3>
+                        <div className="md:grid md:grid-cols-2 md:gap-x-4">
+                            <TeamTable
+                                data={team.committers.slice(0, 
(team.committers.length + 1) / 2)}
+                            />
+                            <TeamTable
+                                
data={team.committers.slice((team.committers.length + 1) / 2)}
+                            />
+                        </div>
+                        <div className="md:grid md:grid-cols-2 md:gap-x-4">
+                            <img
+                                
src="https://contributor-overtime-api.git-contributor.com/contributors-svg?chart=contributorOverTime&repo=apache/pulsar";
+                                alt={'Contributors over time'}/>
+                            <img
+                                
src="https://contributor-overtime-api.git-contributor.com/contributors-svg?chart=contributorMonthlyActivity&repo=apache/pulsar";
+                                alt={'Active contributors monthly'}
+                            />
+                        </div>
+                    </div>
+                </section>
+                <PromoCallout
+                    url="/blog"
+                    linkText="Read Now"
+                    text="Get up-to-date Pulsar insights on the blog"
+                />
+            </div>
+        </Layout>
+    );
+}
diff --git a/src/pages/contributing.md b/src/pages/contributing.md
deleted file mode 100644
index 9994dbb2869..00000000000
--- a/src/pages/contributing.md
+++ /dev/null
@@ -1,450 +0,0 @@
----
-id: head-metadata
-title: Contributing
-description: Learn how to contribute to Pulsar
-hide_table_of_contents: true
----
-# Contribute
-
-The Apache Pulsar community welcomes contributions from anyone with a passion 
for distributed systems! Pulsar has many different opportunities for 
contributions --
-write new examples/tutorials, add new user-facing libraries, write new Pulsar 
IO connectors, or participate on the documentation effort.
-
-We use a review-then-commit workflow in Pulsar for all contributions.
-
-**For larger contributions or those that affect multiple components:**
-
-1. **Engage**: We encourage you to work with the Pulsar community on the
-   [Github Issues](https://github.com/apache/pulsar/issues) and
-   [developer’s mailing list](/contact) to identify
-   good areas for contribution.
-1. **Design:** More complicated contributions will likely benefit from some 
early discussion in
-   order to scope and design them well.
-
-**For all contributions:**
-
-1. **Code:** code changes are always welcomed.
-2. **Doc**: it is worth taking the time to make users know your code changes. 
Pulsar's long-term success rests on its ease of use, maintainability, etc.
-
-:::tip
-
-For how to make contributions to Pulsar documentation, see [Pulsar 
Documentation Contribution 
Guide](https://docs.google.com/document/d/11DTnNPpvcPrebLkMAFcDEIFlD8ARD-k6F-LXoIwdD9Y/edit#).
-
-:::
-
-3. **Review:** Submit a pull request with your contribution to our
-   [GitHub Repo](https://github.com/apache/pulsar). Work with a committer to 
review and
-   iterate on the code, if needed.
-4. **Commit:** Once at least 2 Pulsar committers have approved the pull 
request, a Pulsar committer
-    will merge it into the master branch (and potentially backport to stable 
branches in case of
-    bug fixes).
-
-We look forward to working with you!
-
-## Engage
-
-### Mailing list(s)
-
-We discuss design and implementation issues on the 
[[email protected]](mailto:[email protected])
-mailing list, which is archived 
[here](https://lists.apache.org/[email protected]).
-Join by emailing 
[`[email protected]`](mailto:[email protected]).
-
-If interested, you can also join the other [mailing lists](/contact).
-
-### Github Issues
-
-We are using [Github Issues](https://github.com/apache/pulsar/issues) as the 
issue tracking
-and project management tool, as well as a way to communicate among a very 
diverse and distributed set
-of contributors. To be able to gather feedback, avoid frustration, and avoid 
duplicated efforts all
-Pulsar related work are being tracked there.
-
-If you do not already have an Github account, sign up 
[here](https://github.com/join).
-
-If a quick [search](https://github.com/apache/pulsar/issues) doesn’t turn up 
an existing
-Github issue for the work you want to contribute, create it. Please discuss 
your idea with a
-committer in Github or, alternatively, on the developer mailing list.
-
-If there’s an existing Github issue for your intended contribution, please 
comment about your intended
-work. Once the work is understood, a committer will assign the issue to you. 
If an issue is currently
-assigned, please check with the current assignee before reassigning.
-
-For moderate or large contributions, you should not start coding or writing a 
design document unless
-there is a corresponding Github issue assigned to you for that work. Simple 
changes, like fixing typos,
-do not require an associated issue.
-
-### Online discussions
-
-We are using [Apache Pulsar Slack channel](https://apache-pulsar.slack.com/) 
for online discussions.
-You can self-invite yourself by accessing [this 
link](https://communityinviter.com/apps/apache-pulsar/apache-pulsar).
-
-Slack channels are great for quick questions or discussions on specialized 
topics. Remember that we
-strongly encourage communication via the mailing lists, and we prefer to 
discuss more complex subjects
-by email. Developers should be careful to move or duplicate all the official 
or useful discussions to
-the issue tracking system and/or the dev mailing list.
-
-## Design
-
-To avoid potential frustration during the code review cycle, we encourage you 
to clearly scope and
-design non-trivial contributions with the Pulsar community before you start 
coding.
-
-We are using "Pulsar Improvement Proposals" (or "PIP") for managing major 
changes to Pulsar. The
-list of all PIPs is maintained in the Pulsar wiki at 
https://github.com/apache/pulsar/wiki.
-
-## Code
-
-To contribute code to Apache Pulsar, you’ll have to do a few administrative 
steps once, and then
-follow the [Coding Guide](../coding-guide).
-
-### One-time Setup
-
-#### [Optionally] Submit Contributor License Agreement
-
-Apache Software Foundation (ASF) desires that all contributors of ideas, code, 
or documentation to the Apache projects complete, sign, and submit an 
[Individual Contributor License 
Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA). The purpose of 
this agreement is to clearly define the terms under which intellectual property 
has been contributed to the ASF and thereby allow us to defend the project 
should there be a legal dispute regarding the software at some future time.
-
-We require you to have an ICLA on file with the Apache Secretary for larger 
contributions only. For smaller ones, however, we rely on [clause 
five](http://www.apache.org/licenses/LICENSE-2.0#contributions) of the Apache 
License, Version 2.0, describing licensing of intentionally submitted 
contributions and do not require an ICLA in that case.
-
-#### Obtain a GitHub account
-
-We use GitHub’s pull request functionality to review proposed code changes.
-
-If you do not already have a personal GitHub account, sign up 
[here](https://github.com/join).
-
-#### Fork the repository on GitHub
-
-Go to the [Pulsar GitHub Repo](https://github.com/apache/pulsar/) and fork the 
repository
-to your own private account. This will be your private workspace for staging 
changes.
-
-#### Clone the repository locally
-
-You are now ready to create the development environment on your local machine. 
Feel free to repeat
-these steps on all machines that you want to use for development.
-
-We assume you are using SSH-based authentication with GitHub. If necessary, 
exchange SSH keys with
-GitHub by following [their 
instructions](https://help.github.com/articles/generating-an-ssh-key/).
-
-Clone your personal Pulsar’s GitHub fork.
-
-    $ git clone https://github.com/<Github_user>/pulsar.git
-    $ cd pulsar
-
-Add Apache Repo as additional Git remotes, where you can sync the changes (for 
committers, you need
-these two remotes for pushing changes).
-
-       $ git remote add apache https://github.com/apache/pulsar
-
-You are now ready to start developing!
-
-#### IDE Setup
-
-For how to set up IDE, see 
[here](https://github.com/apache/pulsar/blob/master/README.md#setting-up-your-ide).
-
-
-### Create a branch in your fork
-
-You’ll work on your contribution in a branch in your own (forked) repository. 
Create a local branch, initialized with the state of the branch you expect your 
changes to be merged into. Keep in mind that we use several branches, including 
`master`, feature-specific, and release-specific branches. If you are unsure, 
initialize with the state of the `master` branch.
-
-       $ git fetch apache
-       $ git checkout -b <my-branch> apache/master
-
-At this point, you can start making and committing changes to this branch in a 
standard way.
-
-### Syncing and pushing your branch
-
-Periodically while you work, and certainly before submitting a pull request, 
you should update your branch with the most recent changes to the target branch.
-
-    $ git pull --rebase
-
-Remember to always use `--rebase` parameter to avoid extraneous merge commits.
-
-Then you can push your local, committed changes to your (forked) repository on 
GitHub. Since rebase may change that branch's history, you may need to force 
push. You'll run:
-
-       $ git push <GitHub_user> <my-branch> --force
-
-### Testing
-
-All code should have appropriate unit testing coverage. New code should have 
new tests in the same contribution. Bug fixes should include a regression test 
to prevent the issue from reoccurring.
-
-### CI Testing in your Fork
-
-The following is copied from the
-[thread](https://lists.apache.org/thread/1ofdbd9j1hhj4c0rw3o7vv8y6rbsxrp0) and 
[#15385](https://github.com/apache/pulsar/pull/15385).
-
-
-#### Each PR triggers many CI Jobs
-Since we cannot add more resources to Pulsar CI, we need to find other ways
-to reduce the load on Pulsar CI.
-Every developer can help reduce the load on Pulsar CI.
-Please don't open a PR to apache/pulsar when the work is in very initial
-stages.
-Every push to the pull request branch will trigger a lot of concurrent
-builds (about 25).
-By reducing the amount of PR pushes you can reduce the load on Pulsar CI.
-
-#### Run CI from Fork
-You don't have to stop developing and using CI for getting feedback. There
-is a better way to get CI feedback for early stages of development. The
-secret is that everyone has their personal CI on GitHub!
-Please take use of it when you have large changes which stay in WIP for
-long periods of time, and you push a lot of changes before the actual
-reviews start.
-
-Here are instructions to use your personal CI on GitHub.
-
-1. Push your intended pull request changes to a new branch in your fork
-   (the usual way you do it).
-2. Open a pull request to your own fork.
-
-A.) These are the instructions for CLI:
-
-Install GitHub CLI from https://cli.github.com/ and configure it.
-With GH CLI, there's an easy way to open the PR to your own fork with a
-single command:
-```
-gh pr create --repo=your_github_id/pulsar --base master --head your-pr-branch 
-f
-```
-B.) You can also create a PR to your own fork in the GitHub UI when opening
-a new PR. To do so, first click on "compare across forks" and then choose
-your own fork as both the forked repository and head repository.
-
-#### Stay in-sync with apache/pulsar:master
-
-It's worth keeping your master branch in sync with apache/pulsar's master
-so that the PR diff will be reasonable in your own fork.
-
-Here's one way to sync your fork's master branch with apache/pulsar's
-master branch:
-Let's say you have git remotes called "upstream" for apache/pulsar and
-"forked" for your fork, with these commands,
-you synchronize your fork's remote master branch with apache/pulsar's
-master branch:
-
-- replace "upstream" with the name of the git remote for apache/pulsar
-- replace "forked" with the name of the git remote for your fork of pulsar
-
-```
-git fetch upstream
-git push -f forked upstream/master:master
-```
-
-
-When you finally want to create a PR to apache/pulsar, it can be started
-from the command line (this will open a browser for filling in the PR
-details):
-```
-gh pr create --repo=apache/pulsar --base master --head your-pr-branch --web
-```
-
-#### SSH to CI Jobs
-
-The additional benefit of the "Personal CI" is that you get SSH access to the 
build VMs when the build is running.
-That is handled by this logic in the pulsar-ci.yaml GitHub Actions workflow 
file:
-`pulsar/.github/workflows/pulsar-ci.yaml`
-
-
-```
-- name: Setup ssh access to build runner VM
-  # ssh access is enabled for builds in own forks
-  if: ${{ github.repository != 'apache/pulsar' && 
needs.changed_files_job.outputs.docs_only != 'true' }}
-  uses: ./.github/actions/ssh-access
-  with:
-  limit-access-to-actor: true
-```
-and inline composite action 
[implementation](https://github.com/apache/pulsar/blob/master/.github/actions/ssh-access/action.yml).
-The SSH access is secured with the SSH key registered in GitHub.
-For example, your public keys are https://github.com/horizonzy.keys.
-You will first have to register an SSH public key in GitHub for that to work.
-
-
-### Licensing
-
-All code contributed to Pulsar will be licensed under [Apache License 
V2](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:
-
-```shell
-$ mvn initialize license:format
-```
-
-### Develop C++/Python Client
-
-Currently C++ and Python client are developed under `pulsar-client-cpp` 
directory. You can use following commands to build and test your c++ or python 
code changes.
-
-#### Build C++/Python Client
-
-```
-$ ./pulsar-client-cpp/docker-build.sh
-```
-
-### Run C++/Python Client Tests
-
-```
-$ ./pulsar-client-cpp/docker-test.sh
-```
-
-### Checkstyle
-
-Before you push the C++/Python changes for review, you should format the files 
to apply the checkstyle rule Pulsar is using for C++/Python code.
-
-```
-$ ./pulsar-client-cpp/docker-format.sh
-```
-
-## Review
-
-Once the initial code is complete and the tests pass, it’s time to start the 
code review process. We review and discuss all code, no matter who authors it. 
It’s a great way to build community, since you can learn from other developers, 
and they become familiar with your contribution. It also builds a strong 
project by encouraging a high quality bar and keeping code consistent 
throughout the project.
-
-### Create a pull request
-
-Organize your commits to make a committer’s job easier when reviewing. 
Committers normally prefer multiple small pull requests, instead of a single 
large pull request. Within a pull request, a relatively small number of commits 
that break the problem into logical steps is preferred. For most pull requests, 
you'll squash your changes down to 1 commit. You can use the following command 
to re-order, squash, edit, or change description of individual commits.
-
-    $ git rebase -i apache/master
-
-You'll then push to your branch on GitHub. Note: when updating your commit 
after pull request feedback and use squash to get back to one commit, you will 
need to do a force submit to the branch on your repo.
-
-Navigate to the [Pulsar GitHub Repo](https://github.com/apache/pulsar) to 
create a pull request.
-
-> **Note**
->
-> Vague, boring, and unclear PR titles decrease team efficiency and 
productivity. Good titles speed up the review process and increase search 
efficiency. PR titles should be engaging, easy to understand, and readable. For 
how to **write self​-explanatory PR titles** and **quality PR title examples**, 
see [[Guideline] Pulsar PR Naming 
Convention](https://docs.google.com/document/d/1d8Pw6ZbWk-_pCKdOmdvx9rnhPiyuxwq60_TrD68d7BA/edit#).
-
-In the pull request description, please include:
-
- * Motivation : Why is this change needed? What problem is addressing?
- * Changes: Summary of what this pull request is changing, to help reviewers 
at better understanding
-   the changes.
-
-Please include a descriptive pull request message to help make the committer’s 
job easier when reviewing.
-It’s fine to refer to existing design docs or the contents of the associated 
issue as appropriate.
-
-If the pull request is fixing an issue, include a mention to in the 
description, like:
-
-```
-Fixes #1234
-```
-
-This will automatically change the state on the referenced issues.
-
-If you know a good committer to review your pull request, please make a 
comment like the following. If not, don’t worry -- a committer will pick it up.
-
-       Hi @<GitHub-committer-username>, can you please take a look?
-
-When choosing a committer to review, think about who is the expert on the 
relevant code, who the stakeholders are for this change, and who else would 
benefit from becoming familiar with the code. If you’d appreciate comments from 
additional folks but already have a main committer, you can explicitly cc them 
using `@<GitHub-committer-username>`.
-
-### Code Review and Revision
-
-During the code review process, don’t rebase your branch or otherwise modify 
published commits, since this can remove existing comment history and be 
confusing to the committer when reviewing. When you make a revision, always 
push it in a new commit.
-
-Our GitHub repo automatically provides pre-commit testing coverage using 
Jenkins. Please make sure those tests pass; the contribution cannot be merged 
otherwise.
-
-### LGTM
-
-Once the committer is happy with the change, they’ll approve the pull request 
with an LGTM (“*looks good to me!*”) or a `+1`. At this point, the committer 
will take over, possibly make some additional touch ups, and merge your changes 
into the codebase.
-
-In the case the author is also a committer, either can merge the pull request. 
Just be sure to communicate clearly whose responsibility it is in this 
particular case.
-
-Thank you for your contribution to Pulsar!
-
-### Deleting your branch
-Once the pull request is merged into the Pulsar repository, you can safely 
delete the branch locally and purge it from your forked repository.
-
-From another local branch, run:
-
-       $ git fetch origin
-       $ git branch -d <my-branch>
-       $ git push origin --delete <my-branch>
-
-## Commit (committers only)
-
-Once the code has been peer reviewed by a committer, the next step is for the 
committer to merge it into the Github repo.
-
-Pull requests should not be merged before the review has approved from at 
least 2 committers.
-
-> **Tip**
->
-> Git commit message is not only the best way to communicate context about 
code changes, but also shows whether a developer is a good collaborator. If the 
first commit message of a PR is not clear but the PR description is clear and 
concise, when merging a PR, consider copying the PR description to the commit 
message box or writing a proper one rather than using the default (first) 
commit message (see image below). In this way, others know the changes clearly, 
which is beneficial to cut  [...]
-
-![Submit clear commit message](/img/commit-message.png)
-
-### Contributor License Agreement
-
-If you are merging a larger contribution, please make sure that the 
contributor has an ICLA on file with the Apache Secretary. You can view the 
list of committers 
[here](http://home.apache.org/phonebook.html?unix=committers), as well as 
[ICLA-signers who aren’t yet 
committers](http://home.apache.org/unlistedclas.html).
-
-For smaller contributions, however, this is not required. In this case, we 
rely on [clause five](http://www.apache.org/licenses/LICENSE-2.0#contributions) 
of the Apache License, Version 2.0, describing licensing of intentionally 
submitted contributions.
-
-## Documentation
-
-### 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/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:
-       ```
-       {
-           name: 'My Company's Name',
-           url: 'https://mycompanyname.com/',
-           logo: 'https://mycompanyname.com/logo/myCompanyNamelong.svg',
-           logo_white: true
-       }
-       ```
-
-       :::note
-       The `logo_white` parameter is set to `true` only when your company logo 
is in white color. Otherwise, you only need to add `name`, `url` and `logo`.
-       :::
-
-3. Commit the changes in your account’s repo, publish the branch and create 
pull request.
-4. Update comments, if any. If no more comment, your pull request will be 
approved and merged by reviewers.
-
-## Becoming a committer
-
-Committers are community members that have write access to the project’s
-repositories, i.e. they can modify the code, documentation, and website
-by themselves and also accept other contributions.
-
-There is no strict protocol for becoming a committer. Candidates for new
-committers are typically people that are active contributors and
-community members.
-
-Being an active community member means participating on mailing list
-discussions, helping to answer questions, verifying release candidates,
-being respectful towards others, and following the meritocratic
-principles of community management. Since the
-[Apache Way](https://www.apache.org/foundation/governance/)
-has a strong focus on the project community, this part is very important.
-
-Of course, contributing code and documentation to the project is
-important as well. A good way to start is contributing improvements, new
-features, or bug fixes. You need to show that you take responsibility
-for the code that you contribute, add tests and documentation, and help
-maintaining it.
-
-Every new committer has to be proposed by a current committer and then
-privately discussed and voted in by the members of the Pulsar PMC.
-For details about this process and for candidate requirements see the
-general [Apache guidelines for assessing new candidates for 
committership](https://community.apache.org/newcommitter.html).
-Candidates prepare for their nomination as committer by contributing
-to the Pulsar project and its community, by acting according to the
-[Apache Way](https://www.apache.org/foundation/how-it-works.html),
-and by generally following the path from
-[contributor to committer](https://community.apache.org/contributors/)
-for Apache projects.
-
-If you would like to become a committer, you should engage with the
-community and start contributing to Apache Pulsar in any of the above
-ways. You might also want to talk to other committers and ask for their
-advice and guidance.
-
-## Becoming member of PMC
-
-The PMC is the project governance body. Committers or contributors that
-have demonstrated continued involvement with the community can be
-nominated to become members of the PMC.
-
-PMC members nominate new contributors to the project as either
-committers or as new PMC members, and PMC members cast votes on electing
-new committers or PMC members to the project. PMC members also have
-binding votes on any project matters. Refer to
-[ASF PMCs governance](http://www.apache.org/foundation/governance/pmcs.html)
-for a more detailed explanation of the duties and roles of the PMC.
diff --git a/static/.htaccess b/static/.htaccess
index 27f7cc98c82..4bf2b3bbdd7 100755
--- a/static/.htaccess
+++ b/static/.htaccess
@@ -9,7 +9,7 @@ RewriteRule "^docs/(.+)-incubating/(.+)$" 
"https://pulsar.staged.apache.org/docs
 
 RewriteRule "^pulsar-manager-release-notes(/)?$" "/release-notes" [R=301,DPI,L]
 RewriteRule "^coding-guide(/)?$" "/contribute/develop-coding-conventions/" 
[R=301,DPI,L]
-RewriteRule "^docs/(.+/)?security-policy-and-supported-versions(/)?$" 
"/contribute/version-policy/" [R=301,DPI,L]
+RewriteRule "^contributing(/)?$" "/contribute/" [R=301,DPI,L]
 
 # skip if file exists
 RewriteCond %{REQUEST_FILENAME}\/index\.html -f
@@ -18,3 +18,4 @@ RewriteRule ^ - [L]
 RewriteRule "^docs/(.+/)?develop-binary-protocol(/)?$" 
"/docs/$1developing-binary-protocol" [R=301,DPI,L]
 RewriteRule "^docs/(.+/)?administration-dashboard(/)?$" 
"/docs/$1administration-pulsar-manager" [R=301,DPI,L]
 RewriteRule "^docs/(.+/)?security-tls-keystore(/)?$" 
"/docs/$1security-tls-authentication" [R=301,DPI,L]
+RewriteRule "^docs/(.+/)?security-policy-and-supported-versions(/)?$" 
"/contribute/version-policy/" [R=301,DPI,L]

Reply via email to