A tiered analysis of the PerseusDL/canonical-greekLit
commit record (2013–2026), focused on how short-term staff, interns, and outside
contributors actually get work merged. Built as a Quarto
website and published with GitHub Pages.
- Report —
index.qmd→ the site landing page. - PR template —
perseus-PR-template.md, rendered attemplate.qmd; a copy-and-commit checklist distilled from the same evidence.
Every figure in the report is computed at render time by the Python cells,
running against the four TSVs in data/. Nothing is hard-coded.
.
├── index.qmd # the report (becomes index.html)
├── template.qmd # renders perseus-PR-template.md as a page
├── perseus-PR-template.md # the authoritative checklist artifact
├── data/ # the four exported TSVs the cells read
│ ├── perseus-authors.tsv
│ ├── perseus-editlog.tsv
│ ├── perseus-numstat.tsv
│ └── perseus-merges.tsv
├── _quarto.yml # website + HTML format config
├── requirements.txt # Python deps for cell execution (jupyter)
└── .github/workflows/publish.yml
- Create a new empty GitHub repository and push this tree to the
mainbranch. - In the repo, open Settings → Pages and set Source to GitHub Actions.
- Every push to
mainruns.github/workflows/publish.yml, which installs Quarto + Python, runsquarto render, and deploys_site/. The workflow also runs on demand from the Actions tab (Run workflow). - The site appears at
https://<user>.github.io/<repo>/(or your Pages custom domain).
No gh-pages branch and no committed HTML are needed — the Actions build
produces and deploys the site artifact directly.
Requires Quarto and Python 3.11+.
pip install -r requirements.txt
quarto preview # live-reloading local server while editing
quarto render # one-off build into _site/A PDF of the report can be produced locally without affecting the website:
quarto render index.qmd --to pdf(PDF output needs a LaTeX install; quarto install tinytex provides one.)
The TSVs were exported from a full clone of the analyzed repository:
git log --no-merges --name-status --no-renames --date=short \
--pretty=format:'C%x09%H%x09%an%x09%ae%x09%ad%x09%s' \
-- 'data/**/*.xml' > data/perseus-editlog.tsv
git log --no-merges --date=short \
--pretty=format:'%H%x09%an%x09%ae%x09%ad%x09%s' > data/perseus-authors.tsv
git log --no-merges --numstat --no-renames --date=short \
--pretty=format:'C%x09%H%x09%an%x09%ae%x09%ad%x09%s' \
-- 'data/**/*.xml' > data/perseus-numstat.tsv
git log --merges --date=short \
--pretty=format:'%H%x09%an%x09%ad%x09%s' > data/perseus-merges.tsvThe identity→tier map in the setup cell of index.qmd is the one place to audit:
it is deterministic and identity-based, so adding a newly identified person or
moving someone between tiers is a one-line change that flows through every table.
Contributions to digital editions for the Perseus Digital Library are CC-BY-SA 4.0. This analysis of its contributor commits follows suit.