Files
shard-wiki/research/260608-c2-wiki-origins/findings.md
tegwick 64b77f30c1 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.
2026-06-08 14:05:59 +02:00

327 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 1990s2000s) |
| **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?