From 7e6711ffb2b37108da42c85b0586625cb52d7344 Mon Sep 17 00:00:00 2001 From: castrojo Date: Wed, 16 Sep 2026 10:38:06 -0400 Subject: [PATCH] docs: record CNCF org transfer decision in ADR 0001 and project plans (issue #46) Signed-off-by: castrojo --- .github/workflows/deploy-gh-pages.yml | 2 +- LAUNCH.md | 13 ++-- MAINTAINERS.md | 2 +- README.md | 16 ++-- ROADMAP.md | 15 ++-- adr/0001-site-ownership-and-cutover-path.md | 82 +++++++++------------ adr/0001-stakeholder-outreach-draft.md | 21 ++---- adr/README.md | 2 +- docusaurus.config.js | 6 +- package.json | 2 +- 10 files changed, 72 insertions(+), 89 deletions(-) diff --git a/.github/workflows/deploy-gh-pages.yml b/.github/workflows/deploy-gh-pages.yml index ce827d07..9a57524a 100644 --- a/.github/workflows/deploy-gh-pages.yml +++ b/.github/workflows/deploy-gh-pages.yml @@ -52,7 +52,7 @@ jobs: # Open Graph URLs point to the production domain. - name: Build website env: - SITE_URL: https://castrojo.github.io + SITE_URL: https://cncf.github.io BASE_URL: /endusers/ run: npm run build:production diff --git a/LAUNCH.md b/LAUNCH.md index f598ac8b..3dbad029 100644 --- a/LAUNCH.md +++ b/LAUNCH.md @@ -17,7 +17,7 @@ Salt Lake City. **Today (2026-08-08) is 13 weeks out — launch Monday is labeled, CONTRIBUTING path verified by a non-author, maintainer bus factor > 1. 3. Have the ownership question (ADR 0001, issue #46) decided before launch so - the announcement points at the site's permanent home. + the announcement points at the site's permanent home (settled: transferred to `cncf/endusers`). ## Non-goals @@ -30,7 +30,7 @@ Salt Lake City. **Today (2026-08-08) is 13 weeks out — launch Monday is | Week | Date | Milestone | |------|------|-----------| | W-13 | 2026-08-11 | Merge LICENSE (#40) and close Phase 0; create the four GitHub milestones (#78) so every launch task is tagged | -| W-12 | 2026-08-17 | ADR 0001 ownership decision made (#46/#99) — this gates the announcement target and DNS work | +| W-12 | 2026-08-17 | ADR 0001 ownership decision made (#46/#99) — completed late on 2026-09-16: transferred to `cncf/endusers` (Option A Accepted) | | W-11 | 2026-08-24 | Metrics refresh workflow landed (#74); events page lists KubeCon NA 2026 co-located end-user events (#75) | | W-10 | 2026-08-31 | Awards list verified complete against cncf.io announcements (#77) | | W-9 | 2026-09-07 | Architectures freshness indicator on-page (#80); community/TAB staleness signal (#79) | @@ -59,10 +59,11 @@ Baselines are as of 2026-08-08; capture the W-6 baseline snapshot in #100. ## Dependencies and risks -- **Ownership decision (ADR 0001)** is the critical path: without it the - announcement can't say where the site lives permanently. If undecided by - W-9, launch announces the current URL with an explicit "permanent home - pending" note rather than slipping the date. +- **Ownership decision (ADR 0001)**: resolved via transfer to `cncf/endusers`. + The canonical home is established under the CNCF org. Remaining operational + dependency before launch is DNS cutover to `endusers.cncf.io` (Phase 3); + if DNS is still propagating or pending at launch, the announcement links + `cncf.github.io/endusers`. - **Merge throughput** (#58): the plan assumes the human merge gate keeps its current burst cadence; the W-13 and W-12 items are all merge-gated, not work-gated. diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 874bd1d1..4c47d4ac 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -10,7 +10,7 @@ trust for a site that presents itself as a CNCF community property (see issue | Name | GitHub | Role | | --- | --- | --- | -| Jorge Castro | [@castrojo](https://github.com/castrojo) | Maintainer (repo owner) | +| Jorge Castro | [@castrojo](https://github.com/castrojo) | Maintainer | This list intentionally starts with one person. The goal of this document is the process below, not the roster above. diff --git a/README.md b/README.md index 3dcadbd9..475f7d4a 100644 --- a/README.md +++ b/README.md @@ -45,14 +45,14 @@ npm run docusaurus start -- --host 0.0.0.0 --port 3000 --poll 10000 ## Deployment -The site deploys to [endusers.cncf.io](https://endusers.cncf.io/). Site configuration: - -- `url: 'https://endusers.cncf.io'` -- `baseUrl: '/'` - -The source repository is [castrojo/endusers](https://github.com/castrojo/endusers). The -long-term ownership and CNCF-org cutover path for this site is not yet decided; see -[ADR 0001](./adr/0001-site-ownership-and-cutover-path.md). +The live site currently deploys to GitHub Pages at +[https://cncf.github.io/endusers/](https://cncf.github.io/endusers/). +DNS cutover to the production domain [endusers.cncf.io](https://endusers.cncf.io/) +is pending completion of Phase 3. + +The canonical source repository is [cncf/endusers](https://github.com/cncf/endusers). +The repository was transferred to the CNCF organization in September 2026 (see +[ADR 0001](./adr/0001-site-ownership-and-cutover-path.md)). ## Metrics data diff --git a/ROADMAP.md b/ROADMAP.md index ebc580e4..a699e70b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -56,10 +56,10 @@ shipped silently. Content completeness alone is not a launch plan. human contributors immediately before announcing, so launch impact is measurable rather than assumed. As of 2026-08-08 the baseline is 0 stars, 0 watchers, 1 fork. -- [ ] **DNS cutover dependency**: cutover to `endusers.cncf.io` is gated on the - Phase 2 ownership decision (issue #46, ADR 0001). If undecided by launch, - the announcement links the current GitHub Pages URL instead of slipping - the date. +- [ ] **DNS cutover dependency**: repository ownership is settled under `cncf/endusers` + (ADR 0001 Accepted); remaining cutover to `endusers.cncf.io` is tracked in Phase 3. + If DNS cutover is pending at launch, the announcement links the GitHub Pages staging URL + (`cncf.github.io/endusers`) instead of slipping the date. - [ ] **30-day check-in**: compare stars/watchers/forks/contributors against the baseline snapshot and record whether the launch moved the needle. @@ -73,15 +73,14 @@ Goal: the project can outlive any single maintainer. - [x] MAINTAINERS.md with an explicit process for adding maintainers (#55) - [x] Governance note describing review/merge expectations, including agent-automation policy (GOVERNANCE.md, #60) - [ ] Good-first-issue curation to recruit human contributors -- [ ] Decide the long-term home of the site (issue #46, ADR 0001): transfer to a CNCF org, - remain a personal staging site, or merge into an existing CNCF property. Decision deadline: 2026-08-17 - (see `adr/0001-site-ownership-and-cutover-path.md` for the documented options and path) +- [x] Decide the long-term home of the site (issue #46, ADR 0001): transferred to the + CNCF organization as `cncf/endusers` (Option A Accepted). Remaining DNS cutover tracked in Phase 3. ## Phase 3 — Ecosystem integration Goal: endusers.cncf.io becomes the authoritative end-user destination. -- [ ] DNS cutover to endusers.cncf.io (depends on Phase 2 ownership decision) +- [ ] DNS cutover to endusers.cncf.io (Phase 2 ownership settled under `cncf/endusers`) - [ ] Cross-linking with contribute.cncf.io and cncf.io (clear audience boundaries) - [ ] Public feedback loop: content-issue templates and a visible changelog diff --git a/adr/0001-site-ownership-and-cutover-path.md b/adr/0001-site-ownership-and-cutover-path.md index f5015be3..4a40f35d 100644 --- a/adr/0001-site-ownership-and-cutover-path.md +++ b/adr/0001-site-ownership-and-cutover-path.md @@ -1,28 +1,27 @@ # ADR 0001: Site ownership and cutover path for endusers.cncf.io -- **Status**: Proposed +- **Status**: Accepted - **Date**: 2026-08-08 -- **Decision deadline**: 2026-08-17 (LAUNCH.md week W-12; see "Decision" below) -- **Tracking issue**: [#46](https://github.com/castrojo/endusers/issues/46) +- **Decision date**: 2026-09-16 +- **Decision deadline**: 2026-08-17 (Missed/superseded by transfer to `cncf` org on 2026-09-16) +- **Tracking issue**: [#46](https://github.com/cncf/endusers/issues/46) ## Context The README describes this site as "the home of the CNCF End User Community" and -the build deploys content branded `endusers.cncf.io`. In practice today: - -- The source repository lives in a personal account (`castrojo/endusers`), not a - CNCF-owned GitHub org. -- The repository's GitHub Pages homepage is `castrojo.github.io/endusers`, not - the `endusers.cncf.io` domain. -- Content is derived from authoritative CNCF sources (cncf/architecture, - cncf/landscape, cncf/tab), so alignment with CNCF is already a stated - requirement (see `AGENTS.md`), but there is no CNCF org ownership, no DNS - cutover, and no documented governance decision. - -Until this is resolved, every investment in content, SEO, and metrics -accumulates in a property whose long-term home is undecided. This is a -strategic risk for adoption and for contributor recruitment, and it blocks -Phase 2/3 of the roadmap (see `ROADMAP.md`, PR #50). +the build deploys content branded `endusers.cncf.io`. + +Originally, the source repository lived in a personal account (`castrojo/endusers`) +with GitHub Pages deployed to `castrojo.github.io/endusers`. +In September 2026, Option A was enacted: the canonical repository was transferred +to the CNCF organization as [cncf/endusers](https://github.com/cncf/endusers), +with staging GitHub Pages deployed to `cncf.github.io/endusers`. + +With CNCF organization ownership established, the project is officially housed +under CNCF infrastructure. The remaining operational milestone is Phase 3: +the DNS cutover to `endusers.cncf.io`. +Resolving ownership removes the strategic risk around repo longevity and contributor +recruitment, fulfilling the Phase 2 milestone (see `ROADMAP.md`). ## Decision drivers @@ -73,44 +72,33 @@ contributor-site or cncf.io) instead of standing up a new one. information architecture. ## Decision +**Accepted (Option A: Transfer to the `cncf` GitHub org).** -Not yet made. This ADR exists to record the options and their tradeoffs so -that CNCF end-user/TAB stakeholders and the repo owner can make an informed -decision. The decision itself belongs to the owner and CNCF stakeholders, not -to automated tooling. +The repository has been transferred to the CNCF organization as +`cncf/endusers` (canonical non-fork repository), and `castrojo/endusers` has +become a personal fork. The default GitHub Pages staging host is now +`cncf.github.io/endusers`. -To keep this from stalling silently (see issue #99), a decision deadline is -recorded above: **2026-08-17**. This date is not a default answer — it is the -point by which the owner and CNCF stakeholders should have picked among -Options A, B, and C (or explicitly extended the deadline in a follow-up PR to -this ADR). `LAUNCH.md` treats this ADR's decision as its W-12 gating -milestone, since the announcement plan cannot name the site's permanent home -until this is resolved. +This resolves the strategic ownership question raised in issue #46: the site +is officially an upstream CNCF property, enabling broader community maintainership +and governance under the CNCF umbrella. -If the deadline passes without a decision, the fallback is Option B (stay -personal) by default, purely to avoid blocking Phase 1/2 content work — this -default does not close the ADR or set Status to Accepted, it just documents -what "no decision yet" means operationally for downstream work. +Remaining work is operational and tracked under Phase 3: +1. DNS cutover to `endusers.cncf.io`. +2. Updating GitHub Pages custom domain / CNAME once DNS verification is complete. ## Proposed next step -1. Open a discussion with CNCF end-user community and TAB stakeholders on the - intended long-term home for this content (see options above). A - ready-to-send outreach draft, with suggested venues and stakeholders, is - available at [0001-stakeholder-outreach-draft.md](./0001-stakeholder-outreach-draft.md) - (proposed in PR #113). -2. Land the prerequisites shared by every option regardless of outcome: - LICENSE (done: #32 / PR #40) and a governance/MAINTAINERS note (#47). -3. By the decision deadline above, update this ADR's Status and Decision - sections, link the outcome from `ROADMAP.md` Phase 2, and open the - follow-up issues/PRs needed to execute it (org transfer, DNS cutover, or - content merge). +1. Transfer to `cncf` org: **Completed**. Canonical repository is `cncf/endusers`. +2. Prerequisites: LICENSE (done: #32 / PR #40) and governance/MAINTAINERS (done: #47, #55, #60). +3. Next: Execute Phase 3 DNS cutover to `endusers.cncf.io` and configure custom domain in Pages. +4. Stakeholder outreach draft (`0001-stakeholder-outreach-draft.md`) is archived/retained for historical context. ## Consequences -- Until a decision is recorded here, roadmap items that depend on ownership - (DNS cutover, cross-linking with contribute.cncf.io/cncf.io) remain blocked - by design. +- Repository ownership is settled under `cncf/endusers`. +- Phase 2 ownership gating milestone is complete. +- Phase 3 (DNS cutover to `endusers.cncf.io` and cross-linking with CNCF properties) is unblocked. - This ADR should be superseded (not silently edited into a different decision) if the chosen path changes after being recorded, so the history of the decision stays auditable. diff --git a/adr/0001-stakeholder-outreach-draft.md b/adr/0001-stakeholder-outreach-draft.md index e9745ae3..6efe1db7 100644 --- a/adr/0001-stakeholder-outreach-draft.md +++ b/adr/0001-stakeholder-outreach-draft.md @@ -1,11 +1,10 @@ -# Stakeholder outreach draft for ADR 0001 +# Historical: Stakeholder outreach draft for ADR 0001 -This is a ready-to-send draft supporting [ADR 0001](./0001-site-ownership-and-cutover-path.md) -"Proposed next step" #1: opening a discussion with CNCF end-user/TAB -stakeholders on the long-term home for this site. It exists so a maintainer -can act on that step without first having to draft the outreach themselves. -Nothing here commits the project to an option — the decision still belongs to -the repo owner and CNCF stakeholders (see ADR 0001, "Decision"). +> **Historical Document**: This outreach draft was prepared prior to the repository's +> transfer to the CNCF organization. On 2026-09-16, Option A (transfer to the `cncf` +> GitHub org) was enacted, establishing `cncf/endusers` as the canonical upstream +> repository and fulfilling ADR 0001 (Accepted). This draft is preserved solely as a +> historical record of the options evaluated during the transition. ## Who to loop in @@ -58,9 +57,5 @@ Thanks, ## After the conversation -1. Record the outcome in ADR 0001's "Decision" section (update Status from - "Proposed" to "Accepted", with the chosen option and date). -2. Update `ROADMAP.md` Phase 2/3 to reflect the decision and unblock the - dependent items (DNS cutover, cross-linking, or content-merge plan). -3. Delete or trim this file once the outreach has happened — it is a - one-time aid, not a living document. +*(Historical Note: The transfer was completed on 2026-09-16. +ADR 0001 was updated to Accepted with Option A, and ROADMAP.md Phase 2 was updated.)* diff --git a/adr/README.md b/adr/README.md index 78e7f412..ccd28de5 100644 --- a/adr/README.md +++ b/adr/README.md @@ -9,4 +9,4 @@ still pending) so future contributors understand why, not just what. | ADR | Title | Status | | --- | --- | --- | -| [0001](./0001-site-ownership-and-cutover-path.md) | Site ownership and cutover path for endusers.cncf.io | Proposed | +| [0001](./0001-site-ownership-and-cutover-path.md) | Site ownership and cutover path for endusers.cncf.io | Accepted | diff --git a/docusaurus.config.js b/docusaurus.config.js index ee656bc6..911f1c09 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -24,7 +24,7 @@ const config = { // Set the production url of your site here. // Override with SITE_URL/BASE_URL for non-production deployments such as - // GitHub Pages previews (e.g. SITE_URL=https://castrojo.github.io BASE_URL=/endusers/). + // GitHub Pages previews (e.g. SITE_URL=https://cncf.github.io BASE_URL=/endusers/). url: siteUrl, baseUrl, @@ -97,7 +97,7 @@ const config = { docs: { routeBasePath: '/', // Serve the docs at the site's root sidebarPath: './sidebars.js', - editUrl: 'https://github.com/castrojo/endusers/tree/main', + editUrl: 'https://github.com/cncf/endusers/tree/main', }, blog: { showReadingTime: true, @@ -105,7 +105,7 @@ const config = { type: ['rss', 'atom'], xslt: true, }, - editUrl: 'https://github.com/castrojo/endusers/tree/main/', + editUrl: 'https://github.com/cncf/endusers/tree/main/', // Useful options to enforce blogging best practices onInlineTags: 'warn', onInlineAuthors: 'warn', diff --git a/package.json b/package.json index fe829770..00f7050e 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/castrojo/endusers.git" + "url": "git+https://github.com/cncf/endusers.git" }, "author": "CNCF", "license": "CC-BY-4.0",