An Introduction to Wiki

What is Wiki?

A Wiki is a Web-based collaboration platform that "lets you and all other users write, place pictures and post links, anywhere on any page". In most cases, this means that anyone can edit anything. And you can do this through the web interface without the need for additional software, learning HTML, or waiting for a designated webmaster to upload your files.

The "Writable Web", that is, the ability for anyone to write on any page, can be liberating. It can also be scary or intimidating. For those who lean toward "scary", you'll be pleased to learn that many Wikis are backed by version control (e.g. RCS). So, even if you think you broke something, you (or someone else) can fix it.

Wiki Uses

At first glance, a Wiki site looks and feels like any "normal" web site. However, a Wiki site also has an Edit link at the bottom of every page (topic). Readers of the page can modify it or add content directly through their browser. In fact, some features, such as tables, don't even require the use of the Edit link to add content.

Wiki can be used to provide many solutions for information collection and presentation, including:

  • as a replacement (or augmentation) for a traditional web site
  • to update content "in real time" without waiting for a webmaster
  • as a document management tool
  • to collaborate on projects, documents, and goals
  • as a knowledge base or FAQ system
  • to design and document software products
  • as a company internal message board
  • to develop and demonstrate new web-based applications
Wiki can enhance the quality and quantity of available information by improving the ability of many people to collaborate on documenting and sharing what they know.

Wiki at Your Company

At this point, you might be saying "We have an Intranet. What added value does Wiki provide for me, my team, or my company?" While it's true that you already have an Intranet with considerable available information, you can use Wiki to improve your pages, making that information more readily accessible to everyone.

Wiki "lowers the bar" for everyone in creating new web pages or modifying existing content. Content providers (that's you) can concentrate on content rather than style and still get the benefit of a clean, consistent look. The basic format of pages has already been handled in templates and "skins", leaving you free to worry about the information, not the placement of the company logo!

Strong Contenders for Wiki Use

Some of the possibilities for Wiki use include:

  • Keeping tabular Intranet data up-to-date, e.g. internal telephone lists, current project status, product history, etc.
  • Creating and storing How-to's tutorials, and other small, but nevertheless important, documents. At one job I worked, we had a major increase in the number of engineers who started creating How-to documents when we moved the development web into CVS. Think how much more material we might get if creating and editing documents was even simpler for everyone.
  • Posting timely company news updates
  • Providing important and/or urgent "Company Status" messages (plus, all users could receive email notification when the page changes!) e.g.
    10/22/2004 All services restored following planned power outage.
  • Managing periodically updated lists of links.
  • Managing the top level Company Intranet index page. (If you're concerned, authorization can be tightened as desired to restrict access to a smaller group of people).
  • Managing Group home pages to share status, planning, and team data.
  • Making "personal" home & project pages so simple to create that no one will think twice about creating one.

Some (probably) Less Likely Candidates for Wiki

It's only fair to ask (and answer) the question, "What wouldn't we put into Wiki?"

Wiki is not optimal for everything. Even the Web is not a perfect solution for every problem. If there's a better, more appropriate, or more specific tool for a job, we'll use it.

We won't be replacing email with Wiki (or any other form of web-based communication) any time soon. We're also unlikely to start using Wiki for

  • Bug reports — Bugzilla (or a similar issue-tracking solution) is optimal here.

  • CVS — we can expect to be checking code in and out of CVS (or another code versioning system) for the foreseeable future.

  • Design Specs & Product Requirements documents — Some teams use Wiki for design specs. Others are not. Many people prefer such documents to be stored as easily accessible, individual file, under version control; they prefer those documents to be made readily available via CVS update on their local filesystem. Other people enjoy the ease of Wiki editing.

    People also differ in how they want to write their design documents, e.g. by using plain text, on-the-fly HTML (i.e. Wiki), "raw" HTML with CSS, MS Word, PDF, or solutions such as DocBook. We'll most likely see design specs and other documents being created outside the Wiki (as well as inside the Wiki) for a long time to come.

    That said, remember that many Wikis make it easy to attach any sort of document to any page, with the simple click of a mouse. Also, Wiki being Web technology, you can link between pages with ease. Finally, some Wikis (e.g. TWiki) allow you to include attached HTML or text files inline, as if they had been typed into the Wiki itself.

    So, even if your documents are written and stored outside of the Wiki, they can still be made available via the Wiki. That's what counts most.

Wiki Background and History

The Wiki concept was developed by Ward Cunningham as "the simplest online database that could possibly work". The first Wiki site was created for the Portland Pattern Repository in 1995; it's still in use.

According to Ward Cunningham:

Wiki is a piece of server software that allows users to freely create and edit Web page content using any Web browser. Wiki supports hyperlinks and has a simple text syntax for creating new pages and crosslinks between internal pages on the fly.

Wiki is unusual among group communication mechanisms in that it allows the organization of contributions to be edited in addition to the content itself.

Like many simple concepts, "open editing" has some profound and subtle effects on Wiki usage. Allowing everyday users to create and edit any page in a Web site is exciting in that it encourages democratic use of the Web and promotes content composition by nontechnical users.

There are many Wiki Engines (software based on the Wiki Principles) and many Wiki clones. For corporate Intranet use, I recommend TWiki. TWiki was developed by Peter Thoeny. The initial TWiki installation dates from 1998.

TWiki inherits from JosWiki, another Wiki clone that was in use at the Free Java OS (JOS) web site. TWiki is implemented as a Perl CGI script which reads a text file, hyperlinks it and converts it to HTML on the fly.

Today, TWiki is successfully being deployed on many corporate intranets (TWiki targets the corporate intranet world). Many sites prefer TWiki because it is more user friendly than certain commercial groupware systems such as Lotus Notes. There are several thousands of downloads from companies with the intention of installing TWiki behind a firewall.

TWiki Features

In addition to the typical collaboration and editing capabilities found in all Wiki installations, TWiki provides:
  • Full text search with/without regular expressions.
  • Automatic email notification when something has changed in a TWiki web.
  • File attachments: Upload and download any file as an attachment to a page.
  • Revision control: All changes to pages and attachments are tracked.
  • Access control,including the ability to define groups and impose fine grained read and write access restrictions based on groups and users.
  • Variables (for dynamic composition of pages).
  • Server side Plugin modules
  • A flexible templating system that separates program logic and presentation.
  • "Skins"
  • Support for tabular data; table rows can be added trivially, without using the Edit capability.
  • Pages can be edited, renamed, moved or deleted through the browser.
  • Web based user registration and change of password.
  • Three levels of preferences: site-level, web-level, and user-level.
  • Topic locking: To prevent contention, users are warned if a page is being edited by an other person.