START A BOOK CLUB
Community Philology & Open Source Contribution

Contributing Annotations & Submitting Pull Requests

WinnegansFake is a decentralized scholarly apparatus. Every reader who discovers a multilingual portmanteau, Dublin topographical reference, Viconian cycle, or musical motif is invited to contribute annotations directly through GitHub Pull Requests.

In-Browser 1-Click Pull Request FacilityLive UI Wizard

Save your GitHub Personal Access Token in your browser to fork, branch, commit, and submit PRs with zero command-line tools.

Launch Reader
Create Token on GitHub
Zero-Intermediary Privacy:

Your token never touches any server other than api.github.com directly via your browser. It is solely used to fork tekromancy/WinnegansFake to your account and submit PRs with your name.

How Pull Requests Work

A Pull Request (PR) is the standard collaborative mechanism used across open-source software. When contributing to WinnegansFake, you do not edit the main repository directly. Instead, you:

1. Fork

Create your own personal copy of the repository on your GitHub account.

2. Branch & Edit

Create a feature branch, locate the target page JSON file, and add your annotation item.

3. Validate

Run automated schema and copyright checks locally with pnpm validate.

4. Open PR

Submit your proposed addition on GitHub for peer review and automated CI validation.

For thorough deep-dives into Git version control and GitHub features, consult the official documentation at git-scm.com/doc and docs.github.com/en/pull-requests.

Step-by-Step Git Workflow with Example

Here is the complete sequence of Git terminal commands to contribute an annotation from start to finish:

1Fork the Repository & Clone to Your Laptop

Go to github.com/tekromancy/WinnegansFake and click the Fork button in the top right. Then clone your fork locally:

Clone your personal forkBASH
git clone https://github.com/YOUR-USERNAME/WinnegansFake.git
cd WinnegansFake
pnpm install
2Create a Descriptive Feature Branch

Never commit directly to main. Create a dedicated branch named after the page or topic:

Create branchBASH
git checkout -b annotate-page-003-commodius-vicus
3Locate and Edit the Target Page Annotation File

All annotations are organized cleanly by title, book/part, and chapter/episode:
annotations/<title>/book_<B>/chapter_<C>/page_<PPP>.json

For example, open annotations/finneganswake/book_1/chapter_1/page_003.json in your code editor and add your annotation object to the annotations array:

{
  "id": "003.01-03",
  "line_number": 1,
  "target_phrase": "commodius vicus of recirculation",
  "annotation_text": "Allusion to Giambattista Vico (1668–1744) and his Scienza Nuova, positing the cyclical evolution of human civilization through four recurring ages. Also Latin vicus (lane, hamlet) and Commodore John Barry.",
  "categories": ["viconian-cycles", "etymological-polyglot", "dublin-topography"],
  "cross_references": ["004.18", "628.16"],
  "sources": [
    "McHugh, Roland. Annotations to Finnegans Wake (4th ed.), p. 3",
    "Atherton, James S. The Books at the Wake, pp. 29-34"
  ],
  "contributors": ["your-github-username"]
}
4Validate Your Changes Locally

Before committing, run our validation tool. It checks JSON schema syntax, coordinates, character length safeguards, and line rules:

Run schema and rule validationBASH
pnpm validate
# or validate just your modified file:
node validate.js --path annotations/finneganswake/book_1/chapter_1/page_003.json

You should see: ✅ All annotation file(s) passed validation successfully!

5Stage, Commit, and Push Your Branch

Stage the modified file, write a clear commit message, and push to your GitHub fork:

Git stage, commit, and pushBASH
git add annotations/finneganswake/book_1/chapter_1/page_003.json
git commit -m "feat(annotations): add Vico recirculation gloss for 003.01"
git push -u origin annotate-page-003-commodius-vicus
6Open the Pull Request on GitHub

Visit your fork on GitHub or the upstream repo. You will see a banner saying “Compare & pull request”.

  • Title your PR clearly, e.g. feat(003): add Vico gloss for 003.01
  • In the description, briefly describe the scholarly source or motif reference.
  • Submit! Our GitHub Actions CI will automatically run tests and validate your annotations.

Annotation Rules & Zero-Copyright Constraints

Target Phrase Length Limit

target_phrase must be strictly under 150 characters and contain no newlines. Target only the anchor lemma or phrase, never full copyrighted book passages.

Coordinate & Line Rules

line_number must be an integer between 1 and 40, corresponding to the standard Faber/Viking line count for that page.

Annotation Text Length

annotation_text must be at least 10 characters, providing substantive scholarly commentary, translation, or motif context.

Open License Grant

By contributing, you agree that your annotations are dedicated to the public commons under CC BY-SA 4.0 (Creative Commons Attribution-ShareAlike 4.0 International).