Wiki is a revolutionary yet simple technology for building and viewing communal information and communication resources. It was invented by Ward Cunningham in 1995 as a mechanism to facilitate discussion among the "design patterns" community. The original Wiki site grew in scope to encompass computing in general, along with a wide range of peripheral topics of interest to people interested in computing. New Wiki sites and implementations arose, and the concept's popularity has spread widely.
Wiki sites are self-documenting, with lots of FAQ-style help. View some Wiki sites and you will quickly grasp the general idea. There's even a book — The Wiki Way: Collaboration and Sharing on the Internet — that describes Wiki philosophy, experience, and implementations. Therefore, there isn't much reason to talk about Wiki in detail here — the purpose of this page is to introduce you to Wiki and give you some key starting points.
Note: to facilitate quickly visiting sites mentioned below I suggest you put this page in Internet Explorer's page holder (look up "page holder" in IE's Help window). For browsers that have not yet implemented this powerful feature, you can try using a bookmark manager to pull out all the links from the page into a bookmark file.
Wiki's power derives from simpler forms of the properties that made the WWW so successful:
Wiki's naming and linking scheme is very simple. A base URL references some kind of server-side program (typically a CGI script). The address of a page is just that URL with the page's name provided as an argument. (The exact details depend on the implementation but don't matter much to the user, since the user normally navigates by clicking, not typing.) Each page is referenced by its "WikiName" — a word beginning with an uppercase letter and having at least one internal uppercase letter. (Again, the exact rules depend on the implementation; WikiName for details of the original convention.)
A key innovation of Wiki is that any word recognized as a WikiName is considered a page name, even if that page does not (yet) exist, and will be displayed as a link. (An unrecognized name is actually displayed a little differently until the page actually exists. Note that this makes it trivial to refer to pages that you intend to add later, and convenient to start editing them, since you just have to click on an unrecognized name to get an edit form for its page.) Moreover, it's even easier to guess a WikiName for a topic than a URL on the web.
Pages are stored as text, either in flat files or some kind of lightweight database. HTML for the page is generated when the page is displayed by processing the page's Wiki markup annotations. This includes links to any Wiki pages mentioned.
One of the surprising benefits of Wiki's openness is that readers can edit a page to fix obvious problems, such as typos or entries in the wrong place in a list. This saves communication with a page's author, if that author can even be located and contacted.
Most Wikis are primarily intended to provide information and a place to discuss it for a particular community, defined by interests, locations, organizations, etc. Wikis do not have to be accessible to the public or global in scope. For instance, Wikis have been used for conference organization, departmental communication, and technology documentation. A growing use of Wikis is for corporate intranet portals and knowledge management.
Wiki can also be used as a very powerful note-taking technology. Software groups find Wiki especially helpful in dealing with the need to manage large bodies of definitive, yet ever-changing, information, such as software specifications, design notes, and bug reports. Some people even have a PersonalWiki of notes, information, etc. or use it for WikiJournaling. (There are even Wiki implementations for PalmOS, in particular MegaWiki.)
Wiki is often much more effective than mailing lists, especially for sharing of non-transient information. It is easier to manage, organizes information more appropriately. provides a more stable topology and namespace, and supports more powerful search mechanisms. Wiki is its own archive, obviating the need to search a set of current messages then a series of archives when looking for older information.
The steps involved in starting a wiki are fairly straightforward:
There are a large number of Wiki implementations. Most run as CGI-dispatched programs on a web server machine. To get started, I would recommend one of the following, though there are others that could serve just as well. Click on one of the names listed in the following table to go to the download page of that implementation.
Name | Language | Comment |
---|---|---|
QuickiWiki | Perl | from The Wiki Way; includes standalone server |
TWiki | Perl | probably the most mature, stable, and full-featured implementation |
pikipiki | Python | very small and simple; runs standalone; no longer being developed |
MoinMoin | Python | based on pikipiki; download and unpack the most recent version from the Download area then follow the instructions in the INSTALL.html file. |
Swiki | Smalltalk | Swiki comes with the Squeak Smalltalk distribution; this link is for the Comanche open-source Squeak web server implementation. |
Very Quick Wiki | Java | a few Java Server Pages and a few class files in a single Web ARchive, this can be dropped into a TomCat (or some other J2EE container) directory and run with no configuration; demo and information at VQWiki. |