Song of Code and Content

Agile programming and Wiki hypertext emerged together out of a single vision of completing each other's work. Twenty years later we see opportunity to direct this collaboration toward more difficult problems. This is not your father's wiki.

We reexamine fundamental questions about what it means to write and to program. Then we show how Federated Wiki uses both to make a better world.

A free #FutureTalk hosted by New Relic. blog

Presentation by Ward Cunningham.

See this talk develop in Recent Changes.


Code creates the landscape upon which content will emerge. We've adjusted the slope offered by wiki such that a Chorus of Voices can respectfully disagree until a superior harmony is found.

Code itself responds to the staggering diversity of machines all applying a universal mechanism in ever more ingenious ways.

We step beyond a wiki of words to one of algorithm and data through Abstraction of Method carefully designed to harmonize rather than cannibalize the methods of others.

We are especially attracted to the leverage available when an idea is young. A nudge here and there might guide it to greatness overturning the prevailing dogma. The wrong nudge, however, might leave it forgotten or spoiled.

We share infant thought with Incremental Paragraphs on pages that float easily to where they are most appreciated.

We protect ideas as they travel with the supplement of strong code and stable data against which ideas must remain true to flourish.


To code we must encode. Encodings are given meaning by other programs we use. In wiki we call this markup. Elsewhere it is called language. Again staggering diversity obscures the One Hundred Steps to mastering code.

This wiki uses JSON to pass pages to and fro. A few English words carry special meaning in this text. Together they form the JSON Schema within which we can squeeze one hundred programming concepts, and more.

This wiki expects each paragraph, each story item, to be written in markup fit for purpose. The purpose, the type of item, is one more word in the JSON. Type "paragraph" uses [ [ Page Title ] ] to make hyperlinks.

This wiki allows us to slip gracefully from one language to the next favoring the strengths of adjacent paragraphs. We have been Hacking Wiki's Methods as one testbed for this technique.

The Method markup gains refactoring and curation machinery by being situated in wiki. We've not disturbed these features shown in our OSCON 2012 Demo Video.


In 1976 Will Crowther recreated his cave exploration experience in a computer game authored for his children. Will followed the paradigm we promote here by interweaving code and content to tell a story. play

We will tell Will's story. This is not the story he gave his children, a story of exploring. This will be the story of how he told that story, a story of admiration. We use wiki to make his methods plain. wikipedia

Will's program starts with a file describing Colossal Cave. A second file, a fortran program, reads the first file and presents it as a game. We skip play preferring to just summarize: Rooms (dump).

Will's program tracks his children through the cave by storing the room number in a variable. Will also keeps numbered hints in the data file which he will occasionally speak: Help (dump).

Will's program, like the cave, has numbered sections corresponding to different parts of the game. The part that explains to the children where they are starts with Statement 71 which we abbreviate as s71. This progresses to the lines that do the explaining.


We've added links to code and content to link the two webs together. Try starting in Room 3, then xyzzy; pit; down; to see how your fate depends on the logic of s25.

Don Woods finished Will's game a year later and distributed widely on the young internet founding the genre of Interactive Fiction and the game industry that followed.

Michael Mehaffy will finish work in the real world started by Christopher Alexander. WikiPLACE Second Pilot is Michael's neighborhood pattern language that quantifies carbon sustainability and other issues of livability.


We now review our argument so far and reconcile it with the ambition that started the federated wiki project.

We've shown dispatch gives life to data.

We've shown portable pages merge code and content.

We've shown virtual worlds created from the combination.

Clay Shirky points out that the world has sufficient excess cognitive capacity for a thousand Wikipedia projects.

Steven Pinker points out that violence has been decreasing and reason increasing over long periods.

We have designed wiki to host the long-term and collective construction projects that first envision desirable futures and then realize them.