You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by rb...@apache.org on 2026/10/19 15:56:08 UTC
(comdev-site) branch rbowen-alc-2 created (now b5c73d9e)
This is an automated email from the ASF dual-hosted git repository.
rbowen pushed a change to branch rbowen-alc-2
in repository https://gitbox.apache.org/repos/asf/comdev-site.git
at b5c73d9e Render ALC chapters on one page; flag dormant chapters
This branch includes the following new commits:
new b5c73d9e Render ALC chapters on one page; flag dormant chapters
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(comdev-site) 01/01: Render ALC chapters on one page; flag dormant chapters
Posted by rb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rbowen pushed a commit to branch rbowen-alc-2
in repository https://gitbox.apache.org/repos/asf/comdev-site.git
commit b5c73d9e191d414fa8205c705d11c941c38d4354
Author: Rich Bowen <rb...@rcbowen.com>
AuthorDate: Mon Oct 19 11:55:41 2026 -0400
Render ALC chapters on one page; flag dormant chapters
Following discussion on dev@community
(https://lists.apache.org/thread.html/xvgz10zq05rlt52rwq99963v11rjz0tc),
keep one Markdown data file per chapter but stop generating a standalone
page for each. Chapters are now listed inline on a single /alc/chapters/
page and link out to their wiki page; a chapter can graduate to its own
page later by setting build.render=always.
- chapters/_index.md: cascade build options (list: local, render: never)
make chapters headless — enumerable in local collections but not
rendered as separate pages.
- alc_chapter_list.html: enumerate the chapters section's .Pages (not
.Site.RegularPages, which drops headless pages) and render each chapter
inline (title, location, status, body), linking to its own page when
rendered, otherwise its wiki/proposal link.
- alc_map.html: same .Pages source; marker links point at a chapter's
page when rendered, else the wiki (external links open in a new tab,
empty links degrade to plain text).
Add a last_activity date to each chapter's front matter to track
staleness. A chapter inactive for over a year is marked dormant: a
distinct blue marker and legend entry on the map (kept, not hidden, so it
can be revived) and a badge in the list. Seeded all current chapters with
a placeholder last_activity of 2026-10-19, to be reconciled against the
wiki over time.
Update start-a-chapter.md and source/alc/README.md: corrected
front-matter template (drop organizers, add last_activity) and document
the single-page model, headless build options, the render=always opt-in,
and the dormancy rule.
---
layouts/shortcodes/alc_chapter_list.html | 53 +++++++++++++++++++---
layouts/shortcodes/alc_map.html | 52 ++++++++++++++++-----
source/alc/README.md | 77 +++++++++++++++++++++++++++-----
source/alc/chapters/_index.md | 18 +++++++-
source/alc/chapters/bangalore.md | 1 +
source/alc/chapters/beijing.md | 1 +
source/alc/chapters/budapest.md | 1 +
source/alc/chapters/florianopolis.md | 1 +
source/alc/chapters/ghana.md | 1 +
source/alc/chapters/hangzhou.md | 1 +
source/alc/chapters/indore.md | 1 +
source/alc/chapters/islamabad.md | 1 +
source/alc/chapters/lagos.md | 1 +
source/alc/chapters/shanghai.md | 1 +
source/alc/chapters/shenzhen.md | 1 +
source/alc/chapters/taipei.md | 1 +
source/alc/chapters/warsaw.md | 1 +
source/alc/chapters/xian.md | 1 +
source/alc/start-a-chapter.md | 14 +++++-
19 files changed, 195 insertions(+), 33 deletions(-)
diff --git a/layouts/shortcodes/alc_chapter_list.html b/layouts/shortcodes/alc_chapter_list.html
index 0eb1a292..a29724ac 100644
--- a/layouts/shortcodes/alc_chapter_list.html
+++ b/layouts/shortcodes/alc_chapter_list.html
@@ -1,20 +1,59 @@
-{{/* Text list of ALC chapters, grouped by status, from /alc/chapters/ */}}
-{{- $chapters := where (where .Site.RegularPages "Section" "alc") "Params.lat" "!=" nil }}
+{{/* Entries for every ALC chapter, grouped by status, rendered inline on
+ the single /alc/chapters/ page.
+
+ Chapters are headless pages (see source/alc/chapters/_index.md): one
+ Markdown data file each, but no standalone page is generated unless a
+ chapter opts in with `build: { render: always }` in its own front
+ matter. So we enumerate the chapters section's LOCAL `.Pages`
+ collection (which includes headless pages) rather than
+ `.Site.RegularPages` (which excludes them).
+
+ Each entry links to the chapter's own page when one is rendered,
+ otherwise to its wiki page (or proposal thread) — so there are no
+ links to 404 headless URLs. */}}
+
+{{- $section := .Site.GetPage "/alc/chapters" }}
+{{- $chapters := where $section.Pages "Params.lat" "!=" nil }}
{{- $byStatus := $chapters.GroupByParam "status" }}
{{- $order := slice "active" "proposed" "dissolved" }}
-<ul class="alc-chapters">
+{{/* A chapter with no activity for over a year is flagged "dormant". The
+ map hides dormant chapters; the list keeps them but marks them so the
+ staleness is visible. Threshold: one year before now. */}}
+{{- $dormantBefore := now.AddDate -1 0 0 }}
+
+<dl class="alc-chapters">
{{- range $order }}
{{- $status := . }}
{{- range $byStatus }}
{{- if eq .Key $status }}
{{- range .Pages.ByTitle }}
- <li>
- <a href="{{ .RelPermalink }}">{{ .Title }}</a>
+ {{/* Does this chapter render its own page? Only then is its
+ RelPermalink a real, non-404 URL. */}}
+ {{- $rendered := false }}
+ {{- with .Params.build }}{{ if eq (.render | default "never") "always" }}{{ $rendered = true }}{{ end }}{{- end }}
+ {{- $dormant := false }}
+ {{- with .Params.last_activity }}{{ if (time .).Before $dormantBefore }}{{ $dormant = true }}{{ end }}{{- end }}
+ {{- $wiki := "" }}
+ {{- with .Params.links }}
+ {{- $wiki = or (index . "wiki") (index . "proposal") (index . "website") }}
+ {{- end }}
+ {{- $href := cond $rendered .RelPermalink ($wiki | default "") }}
+ <dt>
+ {{- if $href }}
+ <a href="{{ $href }}"{{ if not $rendered }} rel="noopener"{{ end }}>{{ .Title }}</a>
+ {{- else }}
+ {{ .Title }}
+ {{- end }}
{{- with .Params.country }} — {{ . }}{{ end }}
{{- if ne $status "active" }} <span class="badge badge-secondary">{{ $status }}</span>{{ end }}
- </li>
+ {{- if $dormant }} <span class="badge badge-warning alc-dormant" title="No recorded activity in over a year">dormant</span>{{ end }}
+ {{- if and $href (not $rendered) }} <span class="alc-ext">(wiki)</span>{{ end }}
+ </dt>
+ <dd>
+ {{- with .Content }}{{ . }}{{ else }}{{ with $.Params.summary }}<p>{{ . }}</p>{{ end }}{{ end }}
+ </dd>
{{- end }}
{{- end }}
{{- end }}
{{- end }}
-</ul>
+</dl>
diff --git a/layouts/shortcodes/alc_map.html b/layouts/shortcodes/alc_map.html
index d4b2aa34..000666ad 100644
--- a/layouts/shortcodes/alc_map.html
+++ b/layouts/shortcodes/alc_map.html
@@ -61,7 +61,26 @@
var COOKIE = "alc_map_consent";
{{- $chapters := slice }}
- {{- range (where (where .Site.RegularPages "Section" "alc") "Params.lat" "!=" nil) }}
+ {{/* Chapters are headless pages (render: never) with one data file each,
+ so enumerate the chapters section's LOCAL .Pages — .Site.RegularPages
+ excludes headless pages. Link each marker to the chapter's own page
+ only when one is actually rendered; otherwise to its wiki/proposal
+ link, so no popup links to a 404 headless URL. */}}
+ {{/* Staleness: a chapter with no activity for over a year is marked
+ DORMANT — kept on the map but shown in a distinct color (so someone
+ might revive it) rather than hidden. "activity" is the
+ `last_activity` date in front matter; a chapter without one is
+ treated as current so it is not flagged by accident. */}}
+ {{- $dormantBefore := now.AddDate -1 0 0 }}
+ {{- $section := .Site.GetPage "/alc/chapters" }}
+ {{- range (where $section.Pages "Params.lat" "!=" nil) }}
+ {{- $rendered := false }}
+ {{- with .Params.build }}{{ if eq (.render | default "never") "always" }}{{ $rendered = true }}{{ end }}{{- end }}
+ {{- $dormant := false }}
+ {{- with .Params.last_activity }}{{ if (time .).Before $dormantBefore }}{{ $dormant = true }}{{ end }}{{- end }}
+ {{- $wiki := "" }}
+ {{- with .Params.links }}{{ $wiki = or (index . "wiki") (index . "proposal") (index . "website") }}{{- end }}
+ {{- $url := cond $rendered .RelPermalink ($wiki | default "") }}
{{- $chapters = $chapters | append (dict
"name" .Title
"city" (.Params.city | default .Title)
@@ -69,7 +88,8 @@
"lat" .Params.lat
"lon" .Params.lon
"status" (.Params.status | default "active")
- "url" .RelPermalink
+ "dormant" $dormant
+ "url" $url
) }}
{{- end }}
var chapters = {{ $chapters | jsonify | safeJS }};
@@ -118,7 +138,7 @@
}
function buildMap() {
- var colors = { active: "#4caf50", proposed: "#ff9800", dissolved: "#9e9e9e" };
+ var colors = { active: "#4caf50", proposed: "#ff9800", dissolved: "#9e9e9e", dormant: "#2196f3" };
var map = L.map('alc-map').setView([20, 10], 2);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18,
@@ -127,7 +147,9 @@
var bounds = [];
chapters.forEach(function (c) {
- var color = colors[c.status] || "#4caf50";
+ // Dormant takes visual precedence so stale chapters stand out and
+ // invite someone to revive them.
+ var color = c.dormant ? colors.dormant : (colors[c.status] || "#4caf50");
var marker = L.circleMarker([c.lat, c.lon], {
radius: 8, color: "#fff", weight: 2, fillColor: color, fillOpacity: 0.9
}).addTo(map);
@@ -139,16 +161,25 @@
// following the href.)
var container = document.createElement("div");
var heading = document.createElement("strong");
- var link = document.createElement("a");
- link.href = c.url;
- link.textContent = c.name;
- heading.appendChild(link);
+ if (c.url) {
+ var link = document.createElement("a");
+ link.href = c.url;
+ link.textContent = c.name;
+ // Wiki/proposal links are off-site; open them in a new tab.
+ if (/^https?:\/\//.test(c.url)) {
+ link.target = "_blank";
+ link.rel = "noopener";
+ }
+ heading.appendChild(link);
+ } else {
+ heading.textContent = c.name;
+ }
container.appendChild(heading);
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode(label));
container.appendChild(document.createElement("br"));
var em = document.createElement("em");
- em.textContent = c.status;
+ em.textContent = c.dormant ? (c.status + " \u00b7 dormant") : c.status;
container.appendChild(em);
marker.bindPopup(container);
@@ -168,7 +199,8 @@
var items = [
["active", "Active"],
["proposed", "Proposed"],
- ["dissolved", "Dissolved"]
+ ["dissolved", "Dissolved"],
+ ["dormant", "Dormant (inactive 1+ yr)"]
];
var html = "";
items.forEach(function (it) {
diff --git a/source/alc/README.md b/source/alc/README.md
index 4bbe8dc8..c1aa657a 100644
--- a/source/alc/README.md
+++ b/source/alc/README.md
@@ -2,7 +2,10 @@
This directory implements the **Apache Local Community (ALC)** section of
the ComDev website: a landing page with an interactive map of chapters, a
-per-chapter page model, a "start a chapter" guide, and an organizer guide.
+single chapters page that lists every chapter inline, a "start a chapter"
+guide, and an organizer guide. Each chapter is one Markdown data file, but
+by default no standalone page is generated for it (see "Chapter page
+model" below).
## What each file is
@@ -20,8 +23,10 @@ source/alc/
│ events, finding speakers, reporting, resources).
└── chapters/
├── _index.md Chapter list page. URL: /alc/chapters/
- └── <city>.md One file per chapter. Front matter drives the
- map + list; body is the chapter blurb.
+ └── <city>.md One file per chapter (the data model). Front
+ matter drives the map + list; body is the blurb
+ shown inline on the chapters page. Headless by
+ default — no standalone page (see below).
```
Supporting layout files (in `layouts/shortcodes/`):
@@ -39,7 +44,52 @@ Supporting layout files (in `layouts/shortcodes/`):
`baseof.html` is untouched and the ALC page itself makes no third-party
request until the visitor clicks "Load the map".
- `alc_chapter_list.html` — renders a text list of chapters grouped by
- status, from the same front matter.
+ status, from the same front matter. Each chapter is rendered inline
+ (title, location, status, body) and links to its own page only if one is
+ rendered, otherwise to its wiki page.
+
+## Chapter page model (single page, per-chapter data files)
+
+Each chapter is one Markdown file under `chapters/` — a good, reviewable
+data model — but we do **not** generate a standalone page per chapter.
+Instead every chapter is rendered inline on the single `/alc/chapters/`
+page, and links out to its wiki page for organizers, events, and reports.
+
+This uses Hugo's build options (the "glossary" pattern). `chapters/_index.md`
+carries a cascade:
+
+```yaml
+cascade:
+ - build:
+ list: local # keep chapters in LOCAL page collections (.Pages)
+ render: never # but don't render a standalone page for each
+```
+
+Because `render: never` also removes pages from `.Site.RegularPages`, both
+shortcodes enumerate the chapters section via
+`.Site.GetPage "/alc/chapters"` then `.Pages` (the local collection, which
+still includes headless pages) rather than `.Site.RegularPages`.
+
+**Graduating a chapter to its own page:** when a chapter has enough content
+to warrant a dedicated page, add `build: {render: always}` to *that
+chapter's* front matter. It overrides the cascade, Hugo renders the page,
+and the list and map automatically link to the page instead of the wiki.
+
+## Dormancy / staleness
+
+Each chapter carries a `last_activity: YYYY-MM-DD` field. A chapter whose
+`last_activity` is more than **one year** before build time is flagged
+**dormant**:
+
+- On the **map** it is kept (not hidden) but drawn in a distinct color
+ (blue) with a "Dormant" legend entry, so someone might revive it.
+- In the **list** it keeps its place with a `dormant` badge.
+
+A chapter with no `last_activity` is treated as current (never
+auto-flagged). The one-year threshold is `now.AddDate -1 0 0` in both
+shortcodes. The current `last_activity` dates were set to 2026-10-19 as
+placeholders and should be reconciled against each chapter's wiki page over
+time.
## Map consent (OpenStreetMap)
@@ -97,7 +147,7 @@ lat: 00.0000 # decimal degrees; drives the map
lon: 00.0000
status: active # active | proposed | dissolved
started: 2026
-organizers: "Name(s) or team"
+last_activity: 2026-01-01 # YYYY-MM-DD; >1 yr old ⇒ flagged "dormant"
links:
website: https://example.org/
slack: "#alc-cityname"
@@ -106,16 +156,19 @@ tags: ["alc"]
---
```
-Adding a chapter = adding one Markdown file here. The map and both list
-pages regenerate from it automatically; there is no separate data source.
+Adding a chapter = adding one Markdown file here. The map and the chapters
+page regenerate from it automatically; there is no separate data source.
+Organizer names are intentionally NOT stored here — they live on the
+chapter's wiki page, which each entry links to.
## How the map works
-`alc_map.html` uses Hugo's `where .Site.RegularPages "Section" "alc"`
-filtered to pages with a non-nil `lat`, so only chapter files appear on
-the map (the landing/guide pages are excluded). Marker color is keyed off
-`status`. The map auto-fits to the markers' bounds. Built against Hugo
-v0.111.3 (the version in the Jenkinsfile).
+`alc_map.html` enumerates the chapters section (`.Site.GetPage
+"/alc/chapters"` → `.Pages`) filtered to pages with a non-nil `lat`, so
+only chapter data files appear on the map. Marker color is keyed off
+`status`, with dormant chapters overridden to blue. The map auto-fits to
+the markers' bounds. Built against the Hugo version in the Jenkinsfile
+(0.152.2).
## Navigation wiring
diff --git a/source/alc/chapters/_index.md b/source/alc/chapters/_index.md
index 98920d96..7c790453 100644
--- a/source/alc/chapters/_index.md
+++ b/source/alc/chapters/_index.md
@@ -2,11 +2,25 @@
title: ALC Chapters
url: /alc/chapters/
tags: ["alc"]
+# Keep one Markdown file per chapter as the data model, but do NOT generate
+# a standalone page for each one. The cascade makes every chapter headless
+# (render: never) while still listable in LOCAL collections (list: local),
+# so this page's `.Pages` can render them inline and the map/list shortcodes
+# can enumerate them. A chapter that outgrows the wiki and wants its own page
+# simply sets `build: { render: always }` in its own front matter, which
+# overrides this cascade; the list and map then link to that page instead of
+# the wiki. (Hugo "glossary" build-options pattern.)
+cascade:
+ - build:
+ list: local
+ render: never
---
Below are the current [Apache Local Community](/alc/) chapters. Each
-chapter is one Markdown file in this directory; the
-[map and list on the ALC landing page](/alc/) are generated from them.
+chapter is one Markdown file in this directory. For now, most chapters
+link out to their wiki page for organizers, events, and reports; a chapter
+can graduate to its own page here when there's enough content to warrant
+one.
{{< alc_chapter_list >}}
diff --git a/source/alc/chapters/bangalore.md b/source/alc/chapters/bangalore.md
index 2c3cf1b1..88a96cc4 100644
--- a/source/alc/chapters/bangalore.md
+++ b/source/alc/chapters/bangalore.md
@@ -5,6 +5,7 @@ country: India
lat: 12.9716
lon: 77.5946
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Bangalore
tags: ["alc"]
diff --git a/source/alc/chapters/beijing.md b/source/alc/chapters/beijing.md
index aba6af96..d9b9be51 100644
--- a/source/alc/chapters/beijing.md
+++ b/source/alc/chapters/beijing.md
@@ -5,6 +5,7 @@ country: China
lat: 39.9042
lon: 116.4074
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Beijing
tags: ["alc"]
diff --git a/source/alc/chapters/budapest.md b/source/alc/chapters/budapest.md
index e614ccdf..96c3822a 100644
--- a/source/alc/chapters/budapest.md
+++ b/source/alc/chapters/budapest.md
@@ -5,6 +5,7 @@ country: Hungary
lat: 47.4979
lon: 19.0402
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Budapest
tags: ["alc"]
diff --git a/source/alc/chapters/florianopolis.md b/source/alc/chapters/florianopolis.md
index e3cab720..d30e0bb4 100644
--- a/source/alc/chapters/florianopolis.md
+++ b/source/alc/chapters/florianopolis.md
@@ -5,6 +5,7 @@ country: Brazil
lat: -27.5954
lon: -48.548
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/spaces/COMDEV/pages/399278973/ALC+Florian%C3%B3polis
tags: ["alc"]
diff --git a/source/alc/chapters/ghana.md b/source/alc/chapters/ghana.md
index ff40cda7..b71ab897 100644
--- a/source/alc/chapters/ghana.md
+++ b/source/alc/chapters/ghana.md
@@ -5,6 +5,7 @@ country: Ghana
lat: 10.0607
lon: -2.5099
status: proposed
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
started: 2026
links:
proposal: https://lists.apache.org/thread/1m3yjxmtqrqcy6ntnhop95hjf9odoy85
diff --git a/source/alc/chapters/hangzhou.md b/source/alc/chapters/hangzhou.md
index c2e0ae4d..6a2bf5bd 100644
--- a/source/alc/chapters/hangzhou.md
+++ b/source/alc/chapters/hangzhou.md
@@ -5,6 +5,7 @@ country: China
lat: 30.2741
lon: 120.1551
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Hangzhou
tags: ["alc"]
diff --git a/source/alc/chapters/indore.md b/source/alc/chapters/indore.md
index 3d34a152..16620d62 100644
--- a/source/alc/chapters/indore.md
+++ b/source/alc/chapters/indore.md
@@ -5,6 +5,7 @@ country: India
lat: 22.7196
lon: 75.8577
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Indore
tags: ["alc"]
diff --git a/source/alc/chapters/islamabad.md b/source/alc/chapters/islamabad.md
index 1a0d2754..383b2f28 100644
--- a/source/alc/chapters/islamabad.md
+++ b/source/alc/chapters/islamabad.md
@@ -5,6 +5,7 @@ country: Pakistan
lat: 33.6844
lon: 73.0479
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
started: 2026
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Islamabad
diff --git a/source/alc/chapters/lagos.md b/source/alc/chapters/lagos.md
index 65d938e3..c2d3423e 100644
--- a/source/alc/chapters/lagos.md
+++ b/source/alc/chapters/lagos.md
@@ -5,6 +5,7 @@ country: Nigeria
lat: 6.5244
lon: 3.3792
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Lagos
tags: ["alc"]
diff --git a/source/alc/chapters/shanghai.md b/source/alc/chapters/shanghai.md
index a2c410c0..96675eb4 100644
--- a/source/alc/chapters/shanghai.md
+++ b/source/alc/chapters/shanghai.md
@@ -5,6 +5,7 @@ country: China
lat: 31.2304
lon: 121.4737
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Shanghai
tags: ["alc"]
diff --git a/source/alc/chapters/shenzhen.md b/source/alc/chapters/shenzhen.md
index 642b6c1d..7aca87e1 100644
--- a/source/alc/chapters/shenzhen.md
+++ b/source/alc/chapters/shenzhen.md
@@ -5,6 +5,7 @@ country: China
lat: 22.5431
lon: 114.0579
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Shenzhen
tags: ["alc"]
diff --git a/source/alc/chapters/taipei.md b/source/alc/chapters/taipei.md
index 44613ea8..22118910 100644
--- a/source/alc/chapters/taipei.md
+++ b/source/alc/chapters/taipei.md
@@ -5,6 +5,7 @@ country: Taiwan
lat: 25.033
lon: 121.5654
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Taipei
tags: ["alc"]
diff --git a/source/alc/chapters/warsaw.md b/source/alc/chapters/warsaw.md
index 7645a974..35d5fb8a 100644
--- a/source/alc/chapters/warsaw.md
+++ b/source/alc/chapters/warsaw.md
@@ -5,6 +5,7 @@ country: Poland
lat: 52.2297
lon: 21.0122
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/display/COMDEV/ALC+Warsaw
tags: ["alc"]
diff --git a/source/alc/chapters/xian.md b/source/alc/chapters/xian.md
index 64377357..811d81ea 100644
--- a/source/alc/chapters/xian.md
+++ b/source/alc/chapters/xian.md
@@ -5,6 +5,7 @@ country: China
lat: 34.3416
lon: 108.9398
status: active
+last_activity: 2026-10-19 # YYYY-MM-DD; placeholder set 2026-10-19, verify against the chapter's wiki page
links:
wiki: https://cwiki.apache.org/confluence/spaces/COMDEV/pages/263429100/ALC+Xi+an
tags: ["alc"]
diff --git a/source/alc/start-a-chapter.md b/source/alc/start-a-chapter.md
index d1a1690e..82329d4b 100644
--- a/source/alc/start-a-chapter.md
+++ b/source/alc/start-a-chapter.md
@@ -70,7 +70,12 @@ lat: 00.0000
lon: 00.0000
status: active # active | proposed | dissolved
started: 2026
-organizers: "Name(s) or team"
+last_activity: 2026-01-01 # YYYY-MM-DD of the chapter's most recent
+ # activity. A chapter with no activity for over
+ # a year is marked "dormant" — a distinct color
+ # on the map and a badge in the list (not hidden,
+ # so it can be revived). Organizer names are NOT
+ # listed here — they live on the wiki page.
links:
website: https://example.org/
slack: "#alc-cityname"
@@ -81,4 +86,9 @@ A short paragraph about the chapter, its focus, and how to get involved.
```
The map and the chapter list are generated automatically from these
-files, so a pull request adding one Markdown file is all it takes.
+files, so a pull request adding one Markdown file is all it takes. By
+default a chapter does **not** get its own page — all chapters are listed
+together on the [chapters page](/alc/chapters/), each linking to its wiki
+page. When a chapter has enough content to warrant a dedicated page, add
+`build: {render: always}` to its front matter and the list and map will
+link to that page instead of the wiki.