Categories
BlogSchmog Of Course

Ward Cunningham on Design Principles

Ward Cunningham’s impact on software is already significant. He is one of the founders of object-oriented patterns, the inventor of the wiki, and an original force behind eXtreme programming. He also worked with hypercard, which might be described as a proprietary wiki. The emergent effects of his contributions, though, are still in progress. It seems safe to predict that Ward Cunningham will be one of the first names mentioned when teaching the history of the internet.

As evident from his participation in WikiSym 2006, Ward is also a great mediator and group facilitator, as well as an inventor. He clearly gets excited by interesting ideas, and he finds ways to connect his personal, ongoing philosophies with the activities of others he meets. In the keynote speech (“Principles of Wiki: How can so little do so much“) that tied together WikiSym and HyperText conferences in Odense, Ward explained his most well-known invention in terms of design principles.

The definition of a wiki varies greatly. For kicks, Ward started by looking up the term in MSN Encarta:

server software allowing users to modify web pages, Open Source Software

Compare that with the Wikipedia definition, and instantly you can see a major difference in depth. Not just in what appears on the page, but also the detail that appears on other related pages. The name “wiki” is Hawaiian for quick, and was pulled off of the side of a bus by Ward. However, some author added the model number of the bus, and yet more authors filled in the detail on the resulting page that include the dimensions and other trivia. Visually, too, the differences are striking. Encyclopedia Britannica, using the traditional model for editing information, is “too much of the web” with ads and navigation taking precedence over content. “The content is being suffocated,” Ward explained.

Ward Cunningham

Wiki History
This is what the first wiki looked like in the beginning. Ward’s wiki served as an information forum for the Portland Pattern Repository community in the mid 1990s. The idea came as the result of a request from the grad students at the University of Illinois who invented Mosaic. Ward was attending that year’s PLoP conference when he saw the early browser and HTML was explained to him. Using his prior experiences with HyperCard and patterns, Ward wrote the first wiki in just a few lines of code. Today, WikiSym represents at least the fifth conference with ties to the C2 wiki — PLoP, XP, Agile, Wikimania and WikiSym — for a total of about “15 conferences per K” of code. As of August 20, 2006, Ward’s Wiki is 32027 pages, 222 MB of content (6947 bytes per page). It grows at a rate of 11 pages per day, averaging 5 pages per day in mid-August. On August 18th, the site will be 2500 days old.

Cunningham’s brevity of code is a large part of the Wiki Way, as simplicity is emphasized. His few dozen lines inspired a Shortest Wiki Contest to see who could write the shortest wiki program while still obeying Wiki Principles. The contest is sometimes referred to as “Perl golf” to see who can get the lowest score. The leaders (at the moment) are:

  1. SigWik, 4 lines, 222 chars of Perl and Shell
  2. FleaWi, 4 lines, 228 chars of Perl and Shell
  3. NanoWiki, 5 lines, 295 chars of Perl

The variations differ in implementation but at the root follow the same strategy: Get text and name of text, Substitute, Display. “Everything after that is just window dressing,” says Ward.

“I’m proud of wiki being tiny,” Cunningham admitted, “but it is built on all of these other things (file system, cgi scripts, web server, web browsers).”

Design Principles
These are the principles of design Ward identified as being instrumental in the initial and continued development of the wiki:

  • Open — Should a page be found to be incomplete of poorly organized, any reader can edit it as they see fit. (Permeable)
  • Incremental — It must be both possible and useful to cite unwritten pages. (Incomplete)
  • Organic — The structure of the site is expected to grow and evolve with the community that uses it. (Co-evolution)
  • Mundane — A small number of conventions provide all necessary formatting. (Undistracted)
  • Universal — The mechanisms of editing and organizing are the same as those of writing so that any writer is automatically an editor and organizer.
  • Overt — The formatted and printed output will suggest the input required to reproduce it. (Concrete)
  • Unified — Page names will be drawn from a flat space so that no additional context is required to interpret them. (Vocabulary)
  • Precise — Pages will be titled with sufficient precision to avoid most name clashes, typically by forming noun phrases. (Happy Accidents)
  • Tolerant — All input will produce output even when the output is not likely to be that desired.
  • Observable — Activity within the site can be watched and reviewed by any other visitor.
  • Convergent — Ambiguity and duplication can be removed by finding and citing similar or related content.

The idea of precision — or more correctly, the benefits to a lack of precision — was emphasized over the course of the three days. Ward liked the idea of a flat address space because it allowed collisions to happen between words. Connections are made that might not have been there otherwise because the terminology of different domains overlaps.

By Kevin Makice

A Ph.D student in informatics at Indiana University, Kevin is rich in spirit. He wrestles and reads with his kids, does a hilarious Christian Slater imitation and lights up his wife's days. He thinks deeply about many things, including but not limited to basketball, politics, microblogging, parenting, online communities, complex systems and design theory. He didn't, however, think up this profile.