Skip to content

Update of Team Site#98

Merged
mawiesne merged 3 commits into
mainfrom
team-site-update
May 5, 2026
Merged

Update of Team Site#98
mawiesne merged 3 commits into
mainfrom
team-site-update

Conversation

@rzo1

@rzo1 rzo1 commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Hi,

here is a draft for the thing we discussed. Details of the mechanics against GH and Whsimy are described in the README.

image

rzo1 added 3 commits April 30, 2026 14:20
Replaces the hand-maintained bullet list on team.ad with three TomEE-style
card grids — Active, Emeritus, Wall of Fame — populated at build time from
the OpenNLP committer/PMC roster (Whimsy LDAP) joined with live contributor
activity across apache/opennlp{,-site,-addons,-sandbox}. Identity merging
(login + apache-id + email + normalized-name) and bot filtering are ported
from the opennlp-stats reference tool.

Build:
- Bumps Java target to 21 and switches packaging to jar.
- Drops jbake-maven-plugin in favour of an exec-maven-plugin step that runs
  the new org.apache.opennlp.website.Site driver. The driver fetches roster
  + activity, stages the JBake source tree with the team page populated,
  then bakes via Oven programmatically. Responses are TTL-cached on disk
  under target/contrib-cache/.
- mvn compile -Pserve enables a live-dev mode: bake once, serve the output
  on http://localhost:\${jbake.port}/ (default 8080), watch src/main/jbake/
  recursively and re-bake on change. Contributor data is fetched once and
  reused across re-bakes.

Team page:
- Active vs Emeritus is derived from a 2-year activity window, with
  optional manual overrides in src/main/resources/team-overrides.properties
  (per-apache-id .gh, .status, .chair flags). Multiple GH logins per person
  supported as semicolon-separated values.
- Cards show initials on a deterministic color, the name, and role pills
  (C, C-P, Chair). PMC chair pill is OpenNLP brand orange.
- A "Last updated: <UTC timestamp>" line plus a legend pill row sit at the
  top of the page (next to each other).
- All sections are sorted deterministically by "lastname firstname".
- Card grid styling lives in custom-style.css with a matching dark-mode
  override block in scheme-dark.css.
The team page build can now skip the live GitHub + Whimsy retrieval entirely,
for offline/restricted environments where api.github.com or whimsy.apache.org
is unreachable. Triggered three ways:

  mvn compile -Pno-fetch                # Maven profile
  ... -DopennlpSiteNoFetch ...          # n/a; use the env var or profile
  OPENNLP_SITE_NO_FETCH=1 mvn compile   # env var
  Site ... --no-fetch                   # CLI flag

When set, Contributors.empty() returns three empty section lists instead of
calling out to the network; the team page renders with "No contributors to
show." placeholders, and the rest of the site builds normally.

README also gains a "Manual roster overrides" subsection documenting the
src/main/resources/team-overrides.properties keys (.gh, .status, .chair),
including an example, plus a "Skipping the live fetch" subsection covering
the new -Pno-fetch profile and the env var equivalent.
The validation workflow on GH Actions hits api.github.com from a shared
runner egress pool, which is regularly already over the 60 req/h anon
budget by the time our build starts. That doesn't fail the build (the
fetcher swallows individual errors) but it makes the rendered Active /
Emeritus / Wall-of-Fame counts inconsistent across PRs and noisy in
logs.

CI doesn't publish anything anyway — its job is to validate that the
site builds and the per-version doc directories exist. The actual live
team-page data is generated by the ASF BuildBot when it deploys to
asf-site, so skipping the fetch here is purely a CI hygiene win.
@rzo1 rzo1 requested review from atarora, jzonthemtn and mawiesne April 30, 2026 12:24
@mawiesne

Copy link
Copy Markdown
Contributor

Excellent @rzo1

@mawiesne mawiesne merged commit b22b7bb into main May 5, 2026
1 check passed
@mawiesne mawiesne deleted the team-site-update branch May 5, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants