This is an automated email from the ASF dual-hosted git repository.
tuhaihe pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry-site.git
The following commit(s) were added to refs/heads/main by this push:
new 7615323c81 Docs: add Project History page
7615323c81 is described below
commit 7615323c81bc0e341d155bf1c724d8df0b3d7a01
Author: Dianjin Wang <[email protected]>
AuthorDate: Tue Jul 14 17:47:10 2026 +0800
Docs: add Project History page
- Add docs/introduction/cloudberry-history.md with 7 milestones (2022-2026)
- Create reusable Timeline component (src/components/common/Timeline/)
- Supports reversed order (newest first), optional reference links
- Berry Orange brand design, light/dark mode, responsive, reduced-motion
Assisted-by: Deepseek
---
docs/introduction/cloudberry-history.md | 85 +++++++++++
sidebars.ts | 2 +-
src/components/common/Timeline/index.tsx | 78 ++++++++++
src/components/common/Timeline/styles.module.scss | 165 +++++++++++++++++++++
.../version-2.x/introduction/cloudberry-history.md | 85 +++++++++++
versioned_sidebars/version-2.x-sidebars.json | 3 +-
6 files changed, 416 insertions(+), 2 deletions(-)
diff --git a/docs/introduction/cloudberry-history.md
b/docs/introduction/cloudberry-history.md
new file mode 100644
index 0000000000..d730befe59
--- /dev/null
+++ b/docs/introduction/cloudberry-history.md
@@ -0,0 +1,85 @@
+---
+title: Project History
+---
+
+import Timeline from "@site/src/components/common/Timeline";
+
+# Apache Cloudberry Project History
+
+This page chronicles the key milestones in the development of Apache
Cloudberry, from its origins to the present day.
+
+## Timeline
+
+export const history = [
+ {
+ date: "May 2026",
+ title: "PostgreSQL 16.9 Kernel Upgrade",
+ description:
+ "The main branch upgraded the PostgreSQL kernel from 14.4 to PostgreSQL
16.9, bringing the modern PostgreSQL features, performance improvements, and
security fixes to the MPP platform.",
+ links: [
+ { label: "Announcement", url:
"/blog/postgresql16-for-apache-cloudberry-202606" },
+ ],
+ },
+ {
+ date: "April 2026",
+ title: "Apache Cloudberry (Incubating) 2.1.0 Released",
+ description:
+ "Version 2.1.0 was released, continuing the release momentum within the
Apache Incubator with further enhancements and community contributions.",
+ links: [
+ { label: "2.1 Preview", url: "/blog/apache-cloudberry-2.1.0-preview" },
+ { label: "Announcement", url: "/blog/announce-apache-cloudberry-2.1.0" },
+ { label: "Changelog", url: "/releases/2.1.0-incubating" },
+ ],
+ },
+ {
+ date: "July 2025",
+ title: "First Apache Release — v2.0.0",
+ description:
+ "Apache Cloudberry (Incubating) 2.0.0 was released, marking the first
official Apache Release and establishing the project's release process under
Apache governance.",
+ links: [
+ { label: "2.0 Preview", url:
"/blog/apache-cloudberry-2.0-preview-key-features-and-improvements-ahead" },
+ { label: "Announcement", url: "/blog/announce-apache-cloudberry-2.0.0" },
+ { label: "What's New", url: "/blog/whats-new-in-apache-cloudberry-2.0.0"
},
+ { label: "Changelog", url: "/releases/2.0.0-incubating" },
+ ],
+ },
+ {
+ date: "October 2024",
+ title: "Joined the Apache Incubator",
+ description:
+ "Cloudberry Database was voted into the Apache Incubator, rebranded as
Apache Cloudberry, and began its incubation journey under the umbrella of the
Apache Software Foundation Incubator.",
+ links: [
+ { label: "Announcement", url:
"/blog/cloudberry-database-enters-the-apache-incubator" },
+ ],
+ },
+ {
+ date: "May 2024",
+ title: "Greenplum Database Went Closed-Source",
+ description:
+ "Greenplum Database archived its GitHub repository and went
closed-source. This event cemented Apache Cloudberry's role as the open-source
successor continuing the PostgreSQL-based MPP database lineage.",
+ },
+ {
+ date: "June 2023",
+ title: "Cloudberry Database Open-Sourced",
+ description:
+ "Cloudberry Database was officially open-sourced, inviting the global
developer community to participate, contribute, and build together.",
+ },
+ {
+ date: "June 2022",
+ title: "Project Launched",
+ description:
+ "HashData launched the Cloudberry Database project, derived from
Greenplum Database 7. The team upgraded the PostgreSQL kernel from 12.x to
14.4, laying a modern foundation for the future.",
+ },
+];
+
+<Timeline items={history} reversed />
+
+## Incubation Reports
+
+Apache Cloudberry submits regular incubation reports to the Apache Incubator
PMC. These reports provide detailed updates on community growth, release
progress, and project maturity.
+
+- [May 2026](/blog/apache-cloudberry-incubation-report-202605)
+- [February 2026](/blog/apache-cloudberry-incubation-report-202602)
+- [November 2025](/blog/apache-cloudberry-incubation-report-202511)
+- [August 2025](/blog/apache-cloudberry-incubation-report-202508)
+- [May 2025](/blog/apache-cloudberry-incubation-report-202505)
diff --git a/sidebars.ts b/sidebars.ts
index 935fe8dbc5..90c9eef1aa 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -16,7 +16,7 @@ const sidebars: SidebarsConfig = {
{
type: 'category',
label: 'Introduction',
- items: ['introduction/cbdb-overview', 'introduction/cbdb-architecture',
'introduction/cbdb-scenarios', 'introduction/cbdb-vs-gp-features']
+ items: ['introduction/cbdb-overview', 'introduction/cbdb-architecture',
'introduction/cbdb-scenarios', 'introduction/cbdb-vs-gp-features',
'introduction/cloudberry-history']
},
{
diff --git a/src/components/common/Timeline/index.tsx
b/src/components/common/Timeline/index.tsx
new file mode 100644
index 0000000000..0a35c6e3e3
--- /dev/null
+++ b/src/components/common/Timeline/index.tsx
@@ -0,0 +1,78 @@
+import React from "react";
+import styles from "./styles.module.scss";
+
+export interface TimelineLink {
+ /** Link label shown to the user */
+ label: string;
+ /** Target URL (internal path like /blog/... or full URL) */
+ url: string;
+}
+
+export interface TimelineItem {
+ /** Display date, e.g. "June 2022" */
+ date: string;
+ /** Event title */
+ title: string;
+ /** Short description */
+ description: string;
+ /** Optional reference links shown below the description */
+ links?: TimelineLink[];
+}
+
+interface TimelineProps {
+ items: TimelineItem[];
+ /** When true, the first item is treated as the latest (pulse animation).
+ * Default: last item is latest (chronological order). */
+ reversed?: boolean;
+}
+
+export default function Timeline({ items, reversed }: TimelineProps) {
+ if (!items || items.length === 0) {
+ return null;
+ }
+
+ const lastIndex = items.length - 1;
+
+ return (
+ <div className={styles.timeline}>
+ {items.map((item, index) => {
+ const isLast = index === lastIndex;
+ const isLatest = reversed ? index === 0 : index === lastIndex;
+
+ return (
+ <div key={index} className={styles.item}>
+ {/* Marker column: dot + connecting line */}
+ <div className={styles.marker}>
+ <div
+ className={`${styles.dot} ${isLatest ? styles.dotLatest : ""}`}
+ />
+ {!isLast && <div className={styles.line} />}
+ </div>
+
+ {/* Content column */}
+ <div className={styles.content}>
+ <time className={styles.date}>{item.date}</time>
+ <h3 className={styles.title}>{item.title}</h3>
+ <p className={styles.desc}>{item.description}</p>
+ {item.links && item.links.length > 0 && (
+ <div className={styles.links}>
+ {item.links.map((link, li) => (
+ <a
+ key={li}
+ href={link.url}
+ className={styles.link}
+ target="_blank"
+ rel="noopener noreferrer"
+ >
+ {link.label}
+ </a>
+ ))}
+ </div>
+ )}
+ </div>
+ </div>
+ );
+ })}
+ </div>
+ );
+}
diff --git a/src/components/common/Timeline/styles.module.scss
b/src/components/common/Timeline/styles.module.scss
new file mode 100644
index 0000000000..a19a5ae614
--- /dev/null
+++ b/src/components/common/Timeline/styles.module.scss
@@ -0,0 +1,165 @@
+/* ------------------------------------------------------------------ */
+/* Timeline — vertical milestone timeline */
+/* ------------------------------------------------------------------ */
+
+.timeline {
+ margin: 2.5rem 0;
+}
+
+/* ---- Row: marker + content -------------------------------------- */
+.item {
+ display: flex;
+ gap: 28px;
+
+ &:hover .dot {
+ transform: scale(1.35);
+ box-shadow: 0 0 0 6px rgba(255, 89, 0, 0.18);
+ }
+}
+
+/* ---- Marker (dot + line) ---------------------------------------- */
+.marker {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 20px;
+ flex-shrink: 0;
+}
+
+.dot {
+ width: 16px;
+ height: 16px;
+ border-radius: 50%;
+ background: var(--brand-orange-deep);
+ border: 3px solid var(--color-bg);
+ flex-shrink: 0;
+ margin-top: 5px;
+ z-index: 1;
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+}
+
+.dotLatest {
+ animation: dotPulse 2.2s ease-in-out infinite;
+ box-shadow: 0 0 0 0 rgba(255, 89, 0, 0.45);
+}
+
+@keyframes dotPulse {
+ 0% {
+ box-shadow: 0 0 0 0 rgba(255, 89, 0, 0.45);
+ }
+ 70% {
+ box-shadow: 0 0 0 10px rgba(255, 89, 0, 0);
+ }
+ 100% {
+ box-shadow: 0 0 0 0 rgba(255, 89, 0, 0);
+ }
+}
+
+.line {
+ width: 2px;
+ flex: 1;
+ min-height: 28px;
+ background: linear-gradient(
+ to bottom,
+ var(--brand-orange-deep) 0%,
+ var(--color-border) 20%
+ );
+ margin-top: 6px;
+ border-radius: 1px;
+}
+
+/* ---- Content ---------------------------------------------------- */
+.content {
+ flex: 1;
+ padding-bottom: 40px;
+}
+
+.date {
+ display: inline-block;
+ font-family: var(--font-family-mono);
+ font-size: 0.8125rem;
+ font-weight: 600;
+ color: var(--color-accent);
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ margin-bottom: 6px;
+}
+
+.title {
+ font-family: var(--font-family-display);
+ font-size: 1.125rem;
+ font-weight: 700;
+ line-height: 1.35;
+ color: var(--color-text);
+ margin: 0 0 8px 0;
+}
+
+.desc {
+ font-size: 0.9375rem;
+ line-height: 1.7;
+ color: var(--color-text-muted);
+ margin: 0;
+ max-width: 640px;
+}
+
+/* ---- Reference links ------------------------------------------- */
+.links {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 12px;
+ margin-top: 12px;
+}
+
+.link {
+ font-size: 0.8125rem;
+ font-weight: 500;
+ color: var(--color-accent);
+ text-decoration: underline;
+ text-decoration-thickness: 1px;
+ text-underline-offset: 2px;
+ transition: color var(--motion-fast);
+
+ &:hover {
+ color: var(--color-accent-hover);
+ text-decoration-thickness: 2px;
+ }
+}
+
+/* ---- Dark-mode overrides --------------------------------------- */
+html[data-theme="dark"] {
+ .dot {
+ /* Match the surface color so the border ring blends in */
+ border-color: var(--color-bg);
+ }
+}
+
+/* ---- Accessibility: reduce motion ------------------------------ */
+@media (prefers-reduced-motion: reduce) {
+ .dot {
+ transition: none;
+ }
+
+ .dotLatest {
+ animation: none;
+ box-shadow: 0 0 0 4px rgba(255, 89, 0, 0.25);
+ }
+}
+
+/* ---- Responsive ------------------------------------------------- */
+@media (max-width: 768px) {
+ .item {
+ gap: 18px;
+ }
+
+ .content {
+ padding-bottom: 28px;
+ }
+
+ .title {
+ font-size: 1rem;
+ }
+
+ .desc {
+ font-size: 0.875rem;
+ }
+}
diff --git a/versioned_docs/version-2.x/introduction/cloudberry-history.md
b/versioned_docs/version-2.x/introduction/cloudberry-history.md
new file mode 100644
index 0000000000..d730befe59
--- /dev/null
+++ b/versioned_docs/version-2.x/introduction/cloudberry-history.md
@@ -0,0 +1,85 @@
+---
+title: Project History
+---
+
+import Timeline from "@site/src/components/common/Timeline";
+
+# Apache Cloudberry Project History
+
+This page chronicles the key milestones in the development of Apache
Cloudberry, from its origins to the present day.
+
+## Timeline
+
+export const history = [
+ {
+ date: "May 2026",
+ title: "PostgreSQL 16.9 Kernel Upgrade",
+ description:
+ "The main branch upgraded the PostgreSQL kernel from 14.4 to PostgreSQL
16.9, bringing the modern PostgreSQL features, performance improvements, and
security fixes to the MPP platform.",
+ links: [
+ { label: "Announcement", url:
"/blog/postgresql16-for-apache-cloudberry-202606" },
+ ],
+ },
+ {
+ date: "April 2026",
+ title: "Apache Cloudberry (Incubating) 2.1.0 Released",
+ description:
+ "Version 2.1.0 was released, continuing the release momentum within the
Apache Incubator with further enhancements and community contributions.",
+ links: [
+ { label: "2.1 Preview", url: "/blog/apache-cloudberry-2.1.0-preview" },
+ { label: "Announcement", url: "/blog/announce-apache-cloudberry-2.1.0" },
+ { label: "Changelog", url: "/releases/2.1.0-incubating" },
+ ],
+ },
+ {
+ date: "July 2025",
+ title: "First Apache Release — v2.0.0",
+ description:
+ "Apache Cloudberry (Incubating) 2.0.0 was released, marking the first
official Apache Release and establishing the project's release process under
Apache governance.",
+ links: [
+ { label: "2.0 Preview", url:
"/blog/apache-cloudberry-2.0-preview-key-features-and-improvements-ahead" },
+ { label: "Announcement", url: "/blog/announce-apache-cloudberry-2.0.0" },
+ { label: "What's New", url: "/blog/whats-new-in-apache-cloudberry-2.0.0"
},
+ { label: "Changelog", url: "/releases/2.0.0-incubating" },
+ ],
+ },
+ {
+ date: "October 2024",
+ title: "Joined the Apache Incubator",
+ description:
+ "Cloudberry Database was voted into the Apache Incubator, rebranded as
Apache Cloudberry, and began its incubation journey under the umbrella of the
Apache Software Foundation Incubator.",
+ links: [
+ { label: "Announcement", url:
"/blog/cloudberry-database-enters-the-apache-incubator" },
+ ],
+ },
+ {
+ date: "May 2024",
+ title: "Greenplum Database Went Closed-Source",
+ description:
+ "Greenplum Database archived its GitHub repository and went
closed-source. This event cemented Apache Cloudberry's role as the open-source
successor continuing the PostgreSQL-based MPP database lineage.",
+ },
+ {
+ date: "June 2023",
+ title: "Cloudberry Database Open-Sourced",
+ description:
+ "Cloudberry Database was officially open-sourced, inviting the global
developer community to participate, contribute, and build together.",
+ },
+ {
+ date: "June 2022",
+ title: "Project Launched",
+ description:
+ "HashData launched the Cloudberry Database project, derived from
Greenplum Database 7. The team upgraded the PostgreSQL kernel from 12.x to
14.4, laying a modern foundation for the future.",
+ },
+];
+
+<Timeline items={history} reversed />
+
+## Incubation Reports
+
+Apache Cloudberry submits regular incubation reports to the Apache Incubator
PMC. These reports provide detailed updates on community growth, release
progress, and project maturity.
+
+- [May 2026](/blog/apache-cloudberry-incubation-report-202605)
+- [February 2026](/blog/apache-cloudberry-incubation-report-202602)
+- [November 2025](/blog/apache-cloudberry-incubation-report-202511)
+- [August 2025](/blog/apache-cloudberry-incubation-report-202508)
+- [May 2025](/blog/apache-cloudberry-incubation-report-202505)
diff --git a/versioned_sidebars/version-2.x-sidebars.json
b/versioned_sidebars/version-2.x-sidebars.json
index 5de22a6e9b..8f225ac35a 100644
--- a/versioned_sidebars/version-2.x-sidebars.json
+++ b/versioned_sidebars/version-2.x-sidebars.json
@@ -7,7 +7,8 @@
"introduction/cbdb-overview",
"introduction/cbdb-architecture",
"introduction/cbdb-scenarios",
- "introduction/cbdb-vs-gp-features"
+ "introduction/cbdb-vs-gp-features",
+ "introduction/cloudberry-history"
]
},
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]