generated from coulomb/repo-seed
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.
This commit is contained in:
2
SCOPE.md
2
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 |
|
||||
|
||||
23
research/260608-c2-wiki-origins/README.md
Normal file
23
research/260608-c2-wiki-origins/README.md
Normal file
@@ -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.
|
||||
327
research/260608-c2-wiki-origins/findings.md
Normal file
327
research/260608-c2-wiki-origins/findings.md
Normal file
@@ -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?
|
||||
@@ -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 |
|
||||
| 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 |
|
||||
Reference in New Issue
Block a user