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

kparisa pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iggy-website.git


The following commit(s) were added to refs/heads/main by this push:
     new 503e116b Gradutation readiness checklist Resolves #50
503e116b is described below

commit 503e116b54c5d4b8ff9c81d842a87b707811efa0
Author: kparisa <[email protected]>
AuthorDate: Fri Jul 31 23:02:44 2026 -0700

    Gradutation readiness checklist
    Resolves #50
---
 .../community/_components/community-layout.tsx     |  21 +-
 .../(site)/community/graduation-checklist/page.tsx | 436 +++++++++++++++++++++
 src/components/community-dropdown.tsx              |   1 +
 3 files changed, 450 insertions(+), 8 deletions(-)

diff --git a/src/app/(site)/community/_components/community-layout.tsx 
b/src/app/(site)/community/_components/community-layout.tsx
index 205eced6..c5da76d9 100644
--- a/src/app/(site)/community/_components/community-layout.tsx
+++ b/src/app/(site)/community/_components/community-layout.tsx
@@ -26,25 +26,30 @@ export const communityPages = [
     description: "Meet the people stewarding Apache Iggy.",
   },
   {
-    title: "Brand Kit",
-    href: "/community/brand-kit",
-    description: "Use Apache Iggy names and marks correctly.",
+    title: "How to Contribute",
+    href: "/community/how-to-contribute",
+    description: "Find the right first issue, discussion or doc task.",
   },
   {
     title: "Become a Committer",
     href: "/community/become-a-committer",
     description: "Understand the path from contributor to committer.",
   },
-  {
-    title: "How to Contribute",
-    href: "/community/how-to-contribute",
-    description: "Find the right first issue, discussion or doc task.",
-  },
   {
     title: "How to Release",
     href: "/community/how-to-release",
     description: "Follow the release-manager checklist.",
   },
+  {
+    title: "Graduation Checklist",
+    href: "/community/graduation-checklist",
+    description: "Track Apache Iggy's maturity assessment for graduation.",
+  },
+  {
+    title: "Brand Kit",
+    href: "/community/brand-kit",
+    description: "Use Apache Iggy names and marks correctly.",
+  },
 ];
 
 export function CommunityLayout({
diff --git a/src/app/(site)/community/graduation-checklist/page.tsx 
b/src/app/(site)/community/graduation-checklist/page.tsx
new file mode 100644
index 00000000..0df19bc0
--- /dev/null
+++ b/src/app/(site)/community/graduation-checklist/page.tsx
@@ -0,0 +1,436 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "Graduation Checklist",
+  description:
+    "Apache Iggy maturity assessment and graduation checklist for the Apache 
Incubator.",
+};
+
+const checklist = [
+  {
+    category: "Code",
+    items: [
+      {
+        id: "CD10",
+        description:
+          "The project produces open source software for distribution to the 
public at no charge.",
+        status:
+          "YES. Apache Iggy source code is distributed under the Apache 
License, Version 2.0.",
+      },
+      {
+        id: "CD20",
+        description: "Anyone can easily discover and access the project's 
code.",
+        status:
+          "YES. Source code is linked from the website and hosted in Apache 
repositories mirrored on GitHub.",
+      },
+      {
+        id: "CD30",
+        description:
+          "Anyone using standard, widely available tools can build the code in 
a reproducible way.",
+        status:
+          "YES. All details and instructions are documented in the README.md 
file of Iggy's Git repo",
+      },
+      {
+        id: "CD40",
+        description:
+          "The full history of the project's code is available through source 
control.",
+        status:
+          "YES. Apache Iggy uses Git, with release tags available for 
published source releases.",
+      },
+      {
+        id: "CD50",
+        description:
+          "The source control system establishes reliable code provenance.",
+        status:
+          "YES. Apache-managed Git repositories and pull request history 
provide provenance for committed work.",
+      },
+    ],
+  },
+  {
+    category: "Licenses and Copyright",
+    items: [
+      {
+        id: "LC10",
+        description:
+          "The Apache License, Version 2.0, covers the released code.",
+        status:
+          "YES. The project includes license files and Apache license 
headers.",
+      },
+      {
+        id: "LC20",
+        description:
+          "Mandatory dependencies do not create restrictions beyond the Apache 
License.",
+        status:
+          "YES. All dependencies are listed.",
+      },
+      {
+        id: "LC30",
+        description:
+          "Mandatory dependencies are available as open source software.",
+        status:
+          "YES. All dependencies are listed are available as Open Source 
software",
+      },
+      {
+        id: "LC40",
+        description:
+          "Committers are bound by an Apache Individual Contributor License 
Agreement.",
+        status:
+          "YES. All committers have filed their respecrive ICLAs.",
+      },
+      {
+        id: "LC50",
+        description:
+          "Copyright ownership of project outputs is clearly defined and 
documented.",
+        status:
+          "YES. And all source files are with APLv2 header",
+      },
+    ],
+  },
+  {
+    category: "Releases",
+    items: [
+      {
+        id: "RE10",
+        description:
+          "Releases consist of source code distributed using standard archive 
formats.",
+        status:
+          "YES. Source release is distributed via dist.apache.org and linked 
from Downloads page on iggy.apache.org website.",
+      },
+      {
+        id: "RE20",
+        description:
+          "The PPMC and Incubator approve releases as acts of the Foundation.",
+        status:
+          "YES. All releases have been voted at [email protected] and 
[email protected], and have at least 3 PPMC member votes.",
+      },
+      {
+        id: "RE30",
+        description:
+          "Releases are signed or distributed with digests for validation.",
+        status:
+          "YES. Downloads include signatures, SHA-512 checksums and KEYS 
guidance.",
+      },
+      {
+        id: "RE40",
+        description:
+          "Convenience binaries are clearly distinguished from Apache 
releases.",
+        status:
+          "YES. Users can easily build binaries from source code, and we do 
not provide binaries as Apache Releases.",
+      },
+      {
+        id: "RE50",
+        description:
+          "The release process is documented and repeatable by a new release 
manager.",
+        status:
+          "YES. The How to Release page under Community section on 
iggy.apache.org website described the steps.",
+      },
+    ],
+  },
+  {
+    category: "Quality",
+    items: [
+      {
+        id: "QU10",
+        description:
+          "The project is open and honest about code quality and module 
maturity.",
+        status:
+          "YES. We encourage users to report issues on GitHub.",
+      },
+      {
+        id: "QU20",
+        description: "The project puts a high priority on secure software.",
+        status:
+          "YES. Security-sensitive work should continue to be handled with 
high priority.",
+      },
+      {
+        id: "QU30",
+        description:
+          "The project provides a documented channel for reporting security 
issues.",
+        status:
+          "YES. We encourage users to report issues on GitHub and Security 
page link provided under ASF menu on the website iggy.apache.org",
+      },
+      {
+        id: "QU40",
+        description:
+          "The project prioritizes backward compatibility and documents 
incompatible changes.",
+        status:
+          "YES. We follow semantic versions. As long as it's within one major 
version, it's backward compatible. And when any breaking changes added, we 
provide clear communication and upgrade guides when applicable.",
+      },
+      {
+        id: "QU50",
+        description:
+          "The project strives to respond to documented bug reports in a 
timely manner.",
+        status:
+          "YES. As of July 31, 2026, The project has resolved ~1000 issues and 
2500+ pull requests so far, with very prompt response. The community is very 
active on the Discord channel as well.",
+      },
+    ],
+  },
+  {
+    category: "Community",
+    items: [
+      {
+        id: "CO10",
+        description:
+          "The project homepage points to the information required by the 
maturity model.",
+        status:
+          "YES. The official website and README.md file in the Git repo 
includes all information that the users need to run Apache Iggy.",
+      },
+      {
+        id: "CO20",
+        description:
+          "The community welcomes good-faith contributions that add value.",
+        status:
+          "YES. We have 100+ contributors. Contribution paths are documented 
and public discussion channels are available.",
+      },
+      {
+        id: "CO30",
+        description:
+          "Contributions include code, documentation, bug reports, discussions 
and other project value.",
+        status:
+          "YES. All good contributions including code and non-code are 
welcomed.",
+      },
+      {
+        id: "CO40",
+        description:
+          "The community is meritocratic and grants more responsibility over 
time.",
+        status:
+          "YES. The community has elected 5 new committers since joining 
Apache Incubator, with a total of 19 Committers.",
+      },
+      {
+        id: "CO50",
+        description:
+          "The project documents how contributors can earn commit access or 
decision power.",
+        status:
+          "YES. The community has clear docs on nominating committers.",
+      },
+      {
+        id: "CO60",
+        description:
+          "The community operates by consensus among members with decision 
power.",
+        status:
+          "YES. All decisions are made after vote by community members.",
+      },
+      {
+        id: "CO70",
+        description: "The project strives to answer user questions promptly.",
+        status:
+          "YES. We use [email protected], GitHub issues and GitHub 
discussions to do this in a timely manner. We're also active on the Discord 
channel.",
+      },
+    ],
+  },
+  {
+    category: "Consensus Building",
+    items: [
+      {
+        id: "CS10",
+        description:
+          "The project maintains a public list of contributors with decision 
power.",
+        status:
+          "YES. The Team page links to the canonical Apache roster and lists 
PPMC members, mentors and committers.",
+      },
+      {
+        id: "CS20",
+        description:
+          "Decisions are made by consensus and documented on the main 
communication channel.",
+        status:
+          "YES. All decisions are made by votes on [email protected], and 
with at least 3 +1 votes from PPMC.",
+      },
+      {
+        id: "CS30",
+        description:
+          "Documented voting rules are used when discussion is not 
sufficient.",
+        status:
+          "YES. The project uses the standard ASF voting rules.",
+      },
+      {
+        id: "CS40",
+        description:
+          "Vetoes are limited to code commits and justified with technical 
explanations.",
+        status:
+          "YES. Continue following ASF voting and veto expectations.",
+      },
+      {
+        id: "CS50",
+        description:
+          "Important discussions happen asynchronously in written form.",
+        status:
+          "YES. All important discussions and conclusions are recorded in 
written form on GitHub issues and discussions.",
+      },
+    ],
+  },
+  {
+    category: "Independence",
+    items: [
+      {
+        id: "IN10",
+        description:
+          "The project is independent from corporate or organizational 
influence.",
+        status:
+          "YES. The current PPMC includes long-time Apache committers and PMC 
members, along with engineers from LaserData, Inc., the company that donated 
Iggy to the Apache Software Foundation in February 2025. There are many 
Committers outside this company, who are on the path to become PPMC/PMC 
members.",
+      },
+      {
+        id: "IN20",
+        description:
+          "Contributors act as themselves, not as representatives of employers 
or organizations.",
+        status:
+          "YES. Continue reinforcing individual participation in votes, 
reviews and decisions.",
+      },
+    ],
+  },
+  {
+    category: "Trademark and Branding",
+    items: [
+      {
+        id: "TB10",
+        description:
+          "The project uses the Apache project name consistently with 
trademark attribution.",
+        status:
+          "YES. Continue using Apache Iggy (Incubating) in formal contexts 
until graduation.",
+      },
+      {
+        id: "TB20",
+        description:
+          "The primary homepage is at an apache.org domain and non-apache.org 
domains are ASF-owned when used.",
+        status:
+          "YES. The public websites are served from iggy.apache.org and 
benchmarks.iggy.apache.org. No non-apache.org domain names are used.",
+      },
+      {
+        id: "TB30",
+        description:
+          "The ASF has trademark rights to the project name, logo and major 
branding elements.",
+        status:
+          "YES. As an incubating project, Apache Iggy is not yet on the ASF 
page https://www.apache.org/foundation/marks/list/, but the ASF holds common 
law trademark rights through the incubation process. The project name, logo, 
and all branding assets are hosted exclusively on ASF infrastructure 
(iggy.apache.org). Formal trademark registration is typically pursued upon 
graduation.",
+      },
+      {
+        id: "TB40",
+        description:
+          "The project monitors major brand misuse and reports potential 
misuse to ASF Brand Management.",
+        status:
+          "YES. No major misuses of the Apache Iggy brand have been identified 
to date. The PPMC should continue monitoring public use of Apache Iggy marks.",
+      },
+    ],
+  },
+];
+
+const nextSteps = [
+  "Create or link an umbrella graduation issue for open checklist items.",
+  "Confirm podling status-file tasks are complete and signed off.",
+  "Refresh dependency, license, security and release-process checks.",
+  "Document community diversity and recent committer or PPMC growth.",
+  "Review branding, trademark attribution and website readiness.",
+];
+
+export default function GraduationChecklistPage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="Graduation Checklist"
+        description="A working maturity assessment for Apache Iggy as it 
prepares for eventual graduation from the Apache Incubator."
+      />
+      <section className="mb-10 rounded-xl border border-fd-border bg-fd-card 
p-5">
+
+        <h2 className="mb-3 text-2xl font-bold text-fd-foreground">
+          Overview
+        </h2>
+        <p className="text-base leading-relaxed text-fd-muted-foreground">
+          This checklist is based on the{" "}
+          <ExternalLink 
href="https://community.apache.org/apache-way/apache-project-maturity-model.html";>
+            Apache Project Maturity Model
+          </ExternalLink>{" "}
+          and the{" "}
+          <ExternalLink 
href="https://incubator.apache.org/guides/graduation.html";>
+            Apache Incubator graduation guide
+          </ExternalLink>
+          . It is intended to help mentors, the PPMC and the community track 
the
+          remaining work before proposing graduation.
+        </p>
+      </section>
+
+      <section className="mb-12">
+        <h2 className="mb-4 text-2xl font-bold text-fd-foreground">
+          Next Steps
+        </h2>
+        <ul className="list-disc space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+          {nextSteps.map((step) => (
+            <li key={step}>{step}</li>
+          ))}
+        </ul>
+      </section>
+
+      <section>
+        <h2 className="mb-6 text-2xl font-bold text-fd-foreground">
+          Maturity Model Assessment
+        </h2>
+        <p>Last Updated: July 31, 2026.</p><br/>
+        <div className="space-y-10">
+          {checklist.map((section) => (
+            <div key={section.category}>
+              <h3 className="mb-4 text-xl font-bold text-fd-foreground">
+                {section.category}
+              </h3>
+              <div className="overflow-x-auto rounded-xl border 
border-fd-border">
+                <table className="w-full text-left text-sm text-fd-foreground">
+                  <thead>
+                    <tr className="bg-fd-accent/60">
+                      <th className="w-24 border-b border-fd-border px-5 
py-3.5 text-xs font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                        ID
+                      </th>
+                      <th className="border-b border-fd-border px-5 py-3.5 
text-xs font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                        Description
+                      </th>
+                      <th className="border-b border-fd-border px-5 py-3.5 
text-xs font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                        Status
+                      </th>
+                    </tr>
+                  </thead>
+                  <tbody>
+                    {section.items.map((item) => (
+                      <tr
+                        key={item.id}
+                        className="border-b border-fd-border/50 
last:border-b-0 hover:bg-fd-accent/30"
+                      >
+                        <td className="px-5 py-4 font-semibold 
text-fd-primary">
+                          {item.id}
+                        </td>
+                        <td className="min-w-[18rem] px-5 py-4 
text-fd-muted-foreground">
+                          {item.description}
+                        </td>
+                        <td className="min-w-[20rem] px-5 py-4 
text-fd-muted-foreground">
+                          {item.status}
+                        </td>
+                      </tr>
+                    ))}
+                  </tbody>
+                </table>
+              </div>
+            </div>
+          ))}
+        </div>
+      </section>
+    </CommunityLayout>
+  );
+}
diff --git a/src/components/community-dropdown.tsx 
b/src/components/community-dropdown.tsx
index 944435d1..b0bb2200 100644
--- a/src/components/community-dropdown.tsx
+++ b/src/components/community-dropdown.tsx
@@ -27,6 +27,7 @@ export const communityLinks = [
   { text: "How to Contribute", url: "/community/how-to-contribute" },
   { text: "Become a Committer", url: "/community/become-a-committer" },
   { text: "How to Release", url: "/community/how-to-release" },
+  { text: "Graduation Checklist", url: "/community/graduation-checklist" },
   { text: "Brand Kit", url: "/community/brand-kit" },
 ];
 

Reply via email to