WikiWikiWeb

I wrote wiki to host a pattern language of programming written by a community using collective ownership practices I was already promoting in what became extreme programming.

Wiki was a perl cgi script. It combined text to html substitutions with POST handling to allow forms-based updating of a hypertext.

My original script included function dispatching depending on the nature of the request. I later realized that my web server (apache) was happy to do this for me if I simply wrote the various sections as separate scripts. See The Wiki Way.

I wrote wiki over a few days. I could tell immediately that it was superior than text editors for writing heavily linked documents. Mostly it solved the problem of finding the source for a particular page since it removed the need to reverse the server's routing.

I called this system "wiki wiki web" which would be Hawaiian for very quick web, the feeling I got when using it. I've written more about the name, always the first question in interviews. webpage

Version One

I duplicated the script and associated files in order to make new sites. WikiBase was my second site, dedicated to sharing wiki as a hypertext literate program.

This version endured numerous growing pains as content and traffic grew. I wrote lots of supplemental scripts to manage various aspects of this growth.

Random Pages selected and posted by cron.

Mass Build rebuilt the dbm database from flat files.

Edit Conflict searched access logs for signs of collision.

Zietgeist weekly activity survey and database.

Load Check auto deny for abusive sites.

Stewards Tools suite for collective administration.

Version Two

I created several other versions including one to host a community of tax attorneys led by John DeBruyn who's presence threatened the programmer/authors on my original wiki.

This version could load scripts dynamically to extend the functionality of wiki. I wrote a photo library application in wiki extensions. I also started work on a high-volume version of wiki.

Version Three

I was starting to recognize that wiki sites could become quite large. I started bootstrapping a new implementation by writing extensions to version two.

A key idea was to store text in an append-only file and retrieve pages by indexed offsets. New versions of a page would hold the offset for the previous. A compressor could rebuild the file in parallel with ongoing updates.

Version Four

This was a dramatic simplification of wiki into functional cgi scripts for show, edit, save, search and any other function that might be added.

The scripts totaled 220 lines of perl.

This became the basis of the cd-rom distributed with The Wiki Way. Bo Leuf made a few changes for the book. I never back ported them to my version. AW screwed up the cr/lf in the scripts so that they wouldn't run from the cd-rom as distributed.

I hosted new wiki sites by cloning a directory with its basic pages and cgi scripts. I handled private editing by storing a clone within a clone where only one could edit and then only with basic-auth passwords.

I wrote password administration software as extension cgi scripts. I also wrote a complete operations wiki that would manage the accounting and billing for sites I would host for hire.

I had a few paying customers in what I considered a beta program. As use diminished, I stopped billing them. Joe Pruett pointed out that running such a service business wasn't much fun.