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 [...]
-
-
-
-### 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]