Skip to content

Migrate every remaining pattern to the new author system#143

Open
RichardLitt wants to merge 3 commits into
authors-as-pages-issue-89from
bulk-migrate-authors
Open

Migrate every remaining pattern to the new author system#143
RichardLitt wants to merge 3 commits into
authors-as-pages-issue-89from
bulk-migrate-authors

Conversation

@RichardLitt
Copy link
Copy Markdown
Member

Builds on top of #141. Closes the migration work it started.

What this changes

#141 introduced the new author system but only migrated two patterns as proof-of-concept. This PR finishes the job — every remaining pattern that lists contributors now uses the new system, and every contributor has their own page on the site.

What you'll see after this merges

  • A page for every contributor — not just the 9 from the proof-of-concept patterns. There are now 37 contributor pages in total. Each one lists the contributor's affiliation, ORCID (if they have one), and every pattern they've contributed to.
  • Every pattern's Contributors section is now generated from frontmatter — the names, affiliations, and ORCIDs are no longer typed at the bottom of each pattern by hand. They come from a single authors.yml file at the root of the repo.
  • Author chips link to author pages — clicking a contributor's name on a pattern takes you to their page.
  • Acknowledgement prose is preserved — places where a pattern said something like "A note on AI use…", "Special thanks to Jeffrey Young…", or "Thanks to Megan Forbes for sharing this pattern…" still appear under the Contributors heading. The contributor list above them is what's auto-generated; the prose below stays.

What contributors do going forward

Same flow as #141 described: add yourself once to authors.yml, then list your slug in any pattern you contribute to. CONTRIBUTING.md already has the instructions.

How this PR is organised

Three commits, each independently reviewable:

  1. Normalize bullet markers to dashes — adds MD004: { style: dash } to .markdownlint.yaml and runs npm run lint-fix. Every unordered list across the repo now uses -. Pure marker-character change, no other edits.
  2. Normalize edge cases in Contributors sections — five small hand-fixes for patterns where the Contributors section didn't fit the standard "bulleted list of authors" shape. Details in the commit message. No semantic changes.
  3. Migrate remaining patterns to frontmatter authors — the actual migration. 41 patterns gain authors: frontmatter; 28 new contributors get added to authors.yml; the legacy contributor bullet lists are removed (the hook re-renders them at build time).

What to click on the preview site

  • /authors/ — the index now lists all 37 contributors.
  • /authors/ciara-flanagan/ — Ciara appears on 36 patterns; her page now shows all of them.
  • /authors/david-perez-suarez/ — note the diacritic handling: the slug is david-perez-suarez and the displayed name has the accents.
  • /individual-consultations-office-hours/ — Contributors section ends with "Thanks to Duane O'Brien for consulting on the design…" (this paragraph used to be a misplaced bullet; it's now preserved as proper prose).
  • /source-industry-mentors-for-the-icorps-program/ — similarly preserves the "Special thanks to Jeffrey Young…" paragraph.
  • Any pattern that previously had a "Contributors & Acknowledgement" section — the author bullets are now clickable links to the authors' pages.

What's intentionally left alone

Nine patterns have no Contributors section at all (no authors listed yet). They build cleanly under the new system — the hook simply leaves them as-is, with no Contributors section rendered. Those patterns are: framework-managing-university-oss, lunch-and-learn, open-research-community-accelerator, open-source-catalog, open-source-software-prize, open-source-survey, oss-tutorials-using-authoring-tools, summer-internship-program, integrating-oss-into-institutional-software-pathways.

Stacking

This PR is stacked on top of #141 — merge that one first. Once #141 is in, GitHub will auto-rebase this onto main. Independent of #142 (the ORCID icons PR); the two can merge in either order.

🤖 Generated with Claude Code

Tighten .markdownlint.yaml to require `style: dash` for the
markdownlint MD004 (ul-style) rule, then run `npm run lint-fix`
to normalize all existing patterns to use `-` as the unordered
list marker (previously a mix of `-`, `*`, and `+`).

Pure auto-fix — no content changes, no whitespace changes beyond
the bullet character itself. Confirmed `npm run lint` passes
afterwards.

Prep for the upcoming bulk authors migration; consistent bullet
markers make the Contributors-section parser much simpler.
Hand-fix four patterns whose Contributors sections didn't fit the
standard "bullet list of authors followed by optional prose" shape,
so the upcoming bulk migration can parse them consistently.

- event-tabling.md, ospo-student-ambassador-program.md: contributor
  entries were paragraph-form rather than a bulleted list. Convert
  each line to a `-` bullet. Also strip the `my-orcid?orcid=` query
  prefix from the Nouha Elyazidi ORCID URL so it matches the
  canonical `https://orcid.org/<id>` form.
- source-industry-mentors-for-the-icorps-program.md: the Zach Chandler
  line had a stray `](<https://orcid.org/...>` fragment left over
  from a half-applied markdown link. Remove the trailing junk so
  only the canonical ORCID URL remains.
- template-for-1-1-campus-consultations.md: a bullet read
  "Duane O'Brien consulted on the design of the CMU OSPO project
  consultation template", which is acknowledgement prose rather than
  a structured contributor entry. Move it out of the bullet list and
  into a "Thanks to Duane O'Brien…" sentence below the list.

No semantic changes — same people credited, same ORCIDs, same prose.
Convert all remaining patterns' Contributors sections to the
authors.yml + frontmatter model introduced in #141. Adds 28 new
authors to authors.yml (the 9 seeded in #141 stay unchanged) and
populates the `authors:` frontmatter on 41 patterns.

Migration was driven by a one-off Python script (not committed)
that:

- Parses each pattern's `## Contributors & Acknowledgement` /
  `Acknowledgements` section, skipping any "in alphabetical order"
  preamble.
- Extracts (name, affiliation, orcid) from each bullet using
  regex-based ORCID detection and a name/affiliation parser that
  handles both `Name, Affiliation, <orcid>` and `Name (Affiliation),
  <orcid>` shapes.
- Strips academic titles (Dr./Prof./etc.) before slug generation
  and before name-based deduplication, so "Dr. Angela Newell" maps
  to the existing `angela-newell` slug instead of creating a
  duplicate.
- Folds diacritics for slug generation via unicodedata.normalize
  (NFKD + combining-character strip), so "David Pérez-Suárez"
  becomes `david-perez-suarez` rather than `david-p-rez-su-rez`.
- Dedupes by ORCID first, then by case-insensitive name; backfills
  missing ORCID or affiliation on existing records when a later
  pattern provides one.
- Preserves any trailing prose under the Contributors heading
  (e.g. AI-use disclaimers, "Special thanks to X for ..." notes).

Skipped (no Contributors section, intentionally left untouched):
framework-managing-university-oss.md, lunch-and-learn.md,
open-research-community-accelerator.md, open-source-catalog.md,
open-source-software-prize.md, open-source-survey.md,
oss-tutorials-using-authoring-tools.md, summer-internship-program.md,
integrating-oss-into-institutional-software-pathways.md.

Verified:
- `mkdocs build --strict --site-dir /tmp/patterns_site` clean.
- All 37 author pages generate; each lists the patterns the author
  contributed to.
- Preserved prose still renders on
  individual-consultations-office-hours.md (Duane O'Brien thanks),
  source-industry-mentors-for-the-icorps-program.md (Jeffrey Young
  thanks), project-rolodex.md (Megan Forbes thanks), and the
  several patterns with "A note on AI use" paragraphs.
- `npm run lint` passes (one MD012 stray blank line in
  project-rolodex.md auto-fixed by `lint-fix`).
@RichardLitt RichardLitt force-pushed the bulk-migrate-authors branch from ee1b07b to 4780eb6 Compare May 27, 2026 00:46
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.

1 participant