From 64b77f30c1cac7a523487fb496f7c22c4ef4796b Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 8 Jun 2026 14:05:59 +0200 Subject: [PATCH] Add c2 wiki origins research (Ward Cunningham, terms, use cases) Explores WikiWikiWeb beginnings: design principles, social conventions, navigation vocabulary, and documented use cases. Federation explicitly deferred to a later research track. --- SCOPE.md | 2 +- research/260608-c2-wiki-origins/README.md | 23 ++ research/260608-c2-wiki-origins/findings.md | 327 ++++++++++++++++++++ research/README.md | 3 +- 4 files changed, 353 insertions(+), 2 deletions(-) create mode 100644 research/260608-c2-wiki-origins/README.md create mode 100644 research/260608-c2-wiki-origins/findings.md diff --git a/SCOPE.md b/SCOPE.md index 169466b..847fb42 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -19,7 +19,7 @@ Learnings update both SCOPE and INTENT where necessary. |-------|-------| | Code | Python package scaffold (`src/shard_wiki/`, smoke tests only) | | Intent | `INTENT.md` established; authorization-in-core amendments drafted | -| Research | yawex prior-art exploration (`research/260608-yawex-prior-art/`) | +| Research | yawex prior art; c2 wiki origins (`research/260608-*/`) | | Demand | NetKingdom integration asks captured, not yet negotiated | | Spec | Access/history architecture blueprint drafted; PRD/TSD/UCC scaffolds | | Work | `SHARD-WP-0001` active — 6 design tasks, all todo | diff --git a/research/260608-c2-wiki-origins/README.md b/research/260608-c2-wiki-origins/README.md new file mode 100644 index 0000000..d45428c --- /dev/null +++ b/research/260608-c2-wiki-origins/README.md @@ -0,0 +1,23 @@ +# 260608 — c2 wiki origins (Ward Cunningham) + +Date: 2026-06-08 + +## What this is + +Research into the beginnings of the wiki movement through Ward Cunningham, +the Portland Pattern Repository, and the original **WikiWikiWeb** at c2.com. + +Focus: popular terms, social conventions, and documented use cases from and +about the c2 wiki. **Federation is explicitly out of scope** for this +exploration (separate research planned). + +## Contents + +| Path | Role | +|------|------| +| `findings.md` | Terms glossary, use-case catalog, design principles, sources | + +## Status + +Initial exploration complete. Findings may inform `spec/` and future +workplans; not yet promoted to specification. \ No newline at end of file diff --git a/research/260608-c2-wiki-origins/findings.md b/research/260608-c2-wiki-origins/findings.md new file mode 100644 index 0000000..c9969e8 --- /dev/null +++ b/research/260608-c2-wiki-origins/findings.md @@ -0,0 +1,327 @@ +# Findings — Ward Cunningham, c2 wiki, and wiki movement origins + +Date: 2026-06-08 · Status: research draft + +Scope: beginnings of the wiki movement via the **WikiWikiWeb** (c2.com) and +its creator **Ward Cunningham**. Emphasis on terms and use cases documented +in and about the c2 wiki. **Federation concepts are out of scope here.** + +--- + +## 1. Historical anchor + +| Fact | Detail | +|------|--------| +| First wiki | WikiWikiWeb — launched **25 March 1995** on c2.com | +| Creator | Ward Cunningham (Cunningham & Cunningham, Portland, Oregon) | +| Companion site | [Portland Pattern Repository](http://c2.com/ppr/) (PPR) | +| PPR motto | **"People, Projects & Patterns"** | +| Original software | Perl CGI script named `wiki`; later called **WikiBase** | +| Intellectual roots | HyperCard stacks (late 1980s); pattern languages (Cunningham & Beck, OOPSLA 1987, inspired by Christopher Alexander) | +| Name origin | Hawaiian *wiki* = "quick"; *wiki wiki* = "very quick" — from Honolulu airport Wiki Wiki Shuttle | +| Intended name alternative | "QuickWeb" rejected in favor of **WikiWikiWeb** as more fun to say | +| Capital-W convention | **Wiki** (capital W) = this original site; lowercase *wiki* = the technology genre | + +Ward's stated purpose (WikiHistory, 2002): make exchange of ideas between +programmers easier. The wiki was an **automated supplement** to the Portland +Pattern Repository, not a replacement encyclopedia. + +By 2015 the site went read-only after vandalism; Ward migrated toward +Federated Wiki. That later history is **not** covered here. + +--- + +## 2. What c2 said it was for (primary use cases) + +From **WelcomeVisitors**, **WikiHistory**, and community self-description: + +### Core mission use cases + +1. **Pattern exchange** — publish, discuss, and refine software design patterns + (the PPR mission). +2. **People + projects + patterns** — connect practitioners, project experience, + and reusable design knowledge (`PeopleProjectsAndPatterns`). +3. **Idea exchange among programmers** — fast, lightweight collaborative + writing; "a forum where people share ideas." +4. **Informal history of programming ideas** — accumulated narrative, not a + formal reference work (`InformalHistoryOfProgrammingIdeas`). +5. **Distillation of experience into patterns** — thread discussions refined + into document-mode consensus, sometimes culminating in patterns + (`ThreadMode` → `DocumentMode` → `PatternMode`). + +### Community / onboarding use cases + +6. **First wiki experience** — deliberate onboarding path for newcomers + (`WelcomeVisitors`, `NewUserPages`, `WikiWikiSandbox`). +7. **Sandbox experimentation** — safe place to learn editing mechanics. +8. **Visitor presence** — sign the guest book (`RecentVisitors`). +9. **Culture acclimation** — expect `CultureShock`; learn local conventions + before adding pages. + +### Knowledge maintenance use cases + +10. **Self-indexing** — wiki indexes itself; community maintains structure + (`VolunteerHousekeeper`, categories, road maps). +11. **Activity awareness** — follow what changed (`RecentChanges`, + `QuickChanges`, `RecentChangesJunkie`). +12. **Discovery** — browse by search, categories, random pages, visual tour, + like-pages, starting points. +13. **Refactoring pages** — merge thread into document, split tangents, + improve clarity (`ReFactoring`, `WikiMaster` role). +14. **Work-in-progress knowledge** — all content explicitly provisional + (`WorkInProgress`). + +### What c2 explicitly said it was *not* + +- **Not Wikipedia** — subjective, conversational, not a dedicated reference + site (`WikiIsNotWikipedia`, `WikiPedia` as pointer to the real Wikipedia). +- **Not a polished encyclopedia** — "Most of all, this is a forum where + people share ideas!" + +### Subject areas the community grew into (approximate eras, WikiHistory) + +| Era | Dominant topics on c2 | +|-----|----------------------| +| 1994+ | Patterns, sources, application | +| 1996+ | General design, architecture, methods | +| 1997+ | People and organizational aspects of programming | +| 1998+ | Extreme Programming | +| 2000+ | Wiki itself (meta-discussion) | + +Popular page clusters noted by observers: **DesignPatterns**, **ExtremeProgramming**, **TestDrivenDevelopment**, **AgileManifesto**, **UnitTest**, **AntiPattern**, build tools, languages, organizational culture. + +--- + +## 3. Ward's WikiDesignPrinciples (1995 intent) + +From Ward Cunningham's reconstructed **WikiDesignPrinciples** page: + +| Principle | Meaning | +|-----------|---------| +| **Open** | Incomplete or poorly organized pages may be edited by any reader | +| **Incremental** | Pages cite other pages, including ones not yet written | +| **Organic** | Site structure is editable and evolves like page text | +| **Mundane** | Small number of irregular text conventions for markup | +| **Universal** | Editing and organizing use the same mechanisms as writing | +| **Overt** | Formatted output suggests the input needed to reproduce it | +| **Unified** | Page names from a flat namespace — no extra context to interpret | +| **Precise** | Titles are precise noun phrases to avoid name clashes | +| **Tolerant** | Interpretable behavior preferred over error messages | +| **Observable** | Site activity can be watched and reviewed by any visitor | +| **Convergent** | Duplication discouraged by finding and citing related content | + +Ward later noted additional forced principles (e.g. server robustness) beyond +the original eleven. + +--- + +## 4. Popular terms glossary + +Terms below are **CamelCase page names** as used on c2 unless noted. + +### Wiki mechanics & naming + +| Term | Meaning on c2 | +|------|---------------| +| **Wiki** / **WikiWikiWeb** | The first wiki site; capital-W Wiki = this site specifically | +| **WikiBase** | The Perl wiki engine behind c2 | +| **WikiWord** / **WikiWords** | MixedCase token the engine treats as a hyperlink | +| **WikiName** / **WikiNames** | Page title / link target (often built from WikiWords) | +| **MixedCase** / **CamelCase** | CapitalizedWordsRunTogether → automatic link | +| **TextFormattingRules** | Minimal markup conventions (paragraphs, bold, links) | +| **EditText** / **EditCopy** | Core edit operations | +| **Undefined page** / **red link** | `PageName?` with `?` — page does not exist yet; click to create | +| **Flat namespace** | All page names in one space (no hierarchical paths) | + +### Content modes (social conventions, not software features) + +| Term | Meaning | +|------|---------| +| **DocumentMode** | Third-person, unsigned, community-owned text; consensus artifact | +| **ThreadMode** | Signed, first-person discussion; conversation thread | +| **PatternMode** | Distilled pattern statements from converged discussion | +| **OpeningStatement** | Strong initial claim/question that frames a page | +| **SignedDocumentMode** | Hybrid: document-like but attributed | +| **ThreadModeConsideredHarmful** | Community norm pushing toward document mode | +| **InFavorOfDissertation** | Ward's preference for essay-like pages over dialog | + +### Roles & community behavior + +| Term | Meaning | +|------|---------| +| **WikiMaster** | Person who refactors threads into documents (anyone can be one) | +| **VolunteerHousekeeper** | Community members who maintain indexes and hygiene | +| **RecentChangesJunkie** | Person who obsessively monitors RecentChanges | +| **InvitedAuthors** | Early contributors who bootstrapped site culture | +| **GoodStyle** | Ward's editing advice: factual, concrete, civil, flow over chronology | +| **ReFactoring** / **RefactorMercilessly** | Rewrite pages for clarity; merge/split threads | +| **RefactorDontDelete** | Prefer refactoring over deletion | +| **CultureShock** | Newcomer disorientation from wiki norms | + +### Navigation & derived views + +| Term | Meaning | +|------|---------| +| **RecentChanges** | Chronological edit log — central community nerve center | +| **QuickChanges** | Short-form recent changes | +| **RecentEdits** | Minor edits stream | +| **NotSoRecentChanges** | Older change archives | +| **FindPage** | Search | +| **LikePages** | Similar-title suggestions | +| **RandomPages** | Serendipitous browse | +| **VisualTour** | Graphical browse aid | +| **StartingPoints** | Curated entry paths | +| **WikiCategories** / **RoadMaps** | Community-maintained indexes | +| **PeopleIndex** / **RecentVisitors** | Who participates | +| **BackLinks** | Pages linking here (classic derived view) | +| **AllPages** / **SiteMap** / **SearchPage** | Core derived pages (also present in yawex prior art) | +| **SisterSites** | Links to other wikis | + +### Pattern & programming vocabulary (c2's dominant content) + +| Term | Meaning | +|------|---------| +| **Pattern** / **DesignPatterns** | Reusable design solution in context | +| **AntiPattern** | Common bad solution | +| **ProtoPattern** | Pattern-in-formation | +| **PortlandPatternRepository** | Pattern submission/distribution site | +| **PeopleProjectsAndPatterns** | c2's thematic focus | +| **ExtremeProgramming** / **AgileManifesto** | Major c2 discourse topics (late 1990s–2000s) | +| **CrcCards** | Design technique; also spawned from Ward's HyperCard work | + +### Meta & identity pages + +| Term | Meaning | +|------|---------| +| **WorkInProgress** | Nothing is finished; everything editable | +| **WikiIsNotWikipedia** | Identity boundary vs encyclopedic wikis | +| **WhyWikiWorks** / **WhyWikiWorksNot** | Community theory of success/failure | +| **WikiZen** | Cultural / philosophical reflection | +| **WikiOnWiki** | Meta-discussion about wiki itself (sometimes controversial) | + +--- + +## 5. Documented editing & collaboration patterns + +From **ThreadMode**, **DocumentMode**, **GoodStyle**, **WhyWikiWorks**: + +### ThreadMode contributions (ADD / EDIT / SPLIT / CAPTURE) + +1. **ADD** — append signed comment to continue conversation. +2. **EDIT** — improve flow of others' signed comments (with care). +3. **SPLIT** — separate tangents onto new pages with summary links. +4. **CAPTURE** — distill converging ideas into anonymous pattern paragraphs. + +### DocumentMode lifecycle + +- Page opens with strong **OpeningStatement**. +- Feedback arrives in ThreadMode. +- On consensus, a **WikiMaster** (or anyone) replaces thread with + DocumentMode synthesis. +- Newcomers are expected to **rewrite** unclear passages rather than stack + clarifying replies. + +### WhyWikiWorks (community theory) + +Paradoxical strengths cited on c2: + +- Anyone can delete anything → only meaningful content survives curation. +- Low WYSIWYG appeal → filters out drive-by noise; participants self-select. +- Slow, considered edits → pages evolve over days/weeks. +- Pedantic community → shared professional camaraderie. +- "Insecure, indiscriminate, user-hostile, slow" — yet it worked *because* + other online communities optimized differently. + +--- + +## 6. Technical & formatting conventions (original c2) + +From Ward's etymology correspondence and c2 pages: + +- **Double conventions as formatting clues:** + - double carriage-return → new paragraph + - double single-quote → italic + - double capitalized-word (CamelCase) → hyperlink +- **Flat page namespace** — precise noun-phrase titles. +- **Minimal markup** — "mundane" rules; overt correspondence between input + and rendered output. +- **Optional attribution** — `UserName` (2000+) to attach edits to a name + instead of IP; signing in ThreadMode remained common. +- **Deletion** — supported but culturally discouraged vs refactoring + (`RefactorDontDelete`). + +--- + +## 7. Use-case patterns worth naming (synthesis) + +Grouping c2-documented uses into reusable patterns: + +| ID | Use-case pattern | c2 evidence | +|----|------------------|-------------| +| UC-C2-01 | **Quick idea capture** | Wiki = quick web; incremental linking to unwritten pages | +| UC-C2-02 | **Collaborative glossary** | Flat namespace of precise terms; WikiWords as vocabulary | +| UC-C2-03 | **Discussion → consensus doc** | ThreadMode → DocumentMode refactoring | +| UC-C2-04 | **Pattern mining** | Thread → PatternMode distillation | +| UC-C2-05 | **Community guest book** | RecentVisitors, people pages | +| UC-C2-06 | **Change radar** | RecentChanges / QuickChanges monitoring | +| UC-C2-07 | **Self-curating knowledge base** | Open editing + convergent deduplication | +| UC-C2-08 | **Sandbox learning** | WikiWikiSandbox for safe first edits | +| UC-C2-09 | **Serendipitous browse** | RandomPages, VisualTour, LikePages | +| UC-C2-10 | **Practitioner field notes** | InformalHistoryOfProgrammingIdeas, not encyclopedia | +| UC-C2-11 | **Team memory for methods** | XP, TDD, patterns, tools discourse | +| UC-C2-12 | **Soft creation of missing topics** | Red-link `?` pages created on first write | + +--- + +## 8. Boundaries for shard-wiki (light notes, not federation) + +Items from c2 origins that align with existing `INTENT.md` themes **without** +entering federation design: + +- **Open editing + recoverable history** — c2 trusted the community; shard-wiki + INTENT makes Git history the safety net (stronger than c2's soft norms). +- **WorkInProgress** — matches overlay/provenance/freshness thinking. +- **Mechanism over policy** — c2 used social conventions (DocumentMode, + GoodStyle) rather than hard gates; shard-wiki keeps policy configurable. +- **Not an encyclopedia** — c2's `WikiIsNotWikipedia` parallels shard-wiki not + owning universal ontology. +- **Derived views** — BackLinks, RecentChanges, AllPages, SiteMap, Search were + first-class on c2; already flagged in yawex research as union-view candidates. +- **Flat namespace + CamelCase links** — original c2 model; shard-wiki is + Markdown-first (wikilink extension question remains open). + +**Deferred:** Federated Wiki, sister sites, multi-wiki configuration — separate +research track. + +--- + +## 9. Sources + +| Source | URL / location | +|--------|----------------| +| Ward — WikiHistory | https://wiki.c2.com/?WikiHistory (archive 2002) | +| Ward — WikiDesignPrinciples | https://wiki.c2.com/?WikiDesignPrinciples (archive 2002) | +| Ward — etymology correspondence | https://c2.com/doc/etymology.html | +| WelcomeVisitors | https://wiki.c2.com/?WelcomeVisitors (archive 2002) | +| DocumentMode | https://wiki.c2.com/?DocumentMode (archive 2002) | +| ThreadMode | https://wiki.c2.com/?ThreadMode (archive 2002) | +| GoodStyle | https://wiki.c2.com/?GoodStyle (archive 2002) | +| WhyWikiWorks | https://wiki.c2.com/?WhyWikiWorks (archive 2002) | +| RecentChanges | https://wiki.c2.com/?RecentChanges (archive 2002) | +| Wikipedia — WikiWikiWeb | https://en.wikipedia.org/wiki/WikiWikiWeb | +| Wikipedia — Portland Pattern Repository | https://en.wikipedia.org/wiki/Portland_Pattern_Repository | +| Observer summary — T.J. Maher (2016) | https://www.tjmaher.com/2016/06/time-capsule-ward-cunninghams-wiki-wiki.html | + +--- + +## 10. Open questions (for later spec work) + +1. Which c2 **social conventions** (DocumentMode, GoodStyle, WikiMaster + refactoring) belong in shard-wiki core vs reference UI vs `wiki/` content? +2. How much of the **flat CamelCase namespace** survives in a Markdown-first, + path-oriented federation model? +3. Which **derived views** from c2 are MVP for an orchestrator vs adapter-provided? +4. Does shard-wiki want an explicit **WorkInProgress / WikiIsNotWikipedia** + stance in `spec/ProductRequirementsDocument.md`? +5. How does c2's **open-by-default** community norm relate to shard-wiki's + L0 mode — coincidence of values or intentional lineage? \ No newline at end of file diff --git a/research/README.md b/research/README.md index 3f6b169..2539806 100644 --- a/research/README.md +++ b/research/README.md @@ -10,4 +10,5 @@ when multiple files or sources are involved. Findings here inform `spec/` and | Date | Path | Summary | |------|------|---------| -| 2026-06-08 | `260608-yawex-prior-art/` | yawex 0.7.4 Perl wiki prior art; federation design seeds | \ No newline at end of file +| 2026-06-08 | `260608-yawex-prior-art/` | yawex 0.7.4 Perl wiki prior art; federation design seeds | +| 2026-06-08 | `260608-c2-wiki-origins/` | Ward Cunningham & WikiWikiWeb origins; terms and use cases | \ No newline at end of file