PmWiki - Wiki the Painless Way

This was published in the Issue 114 of Linuxgazette
In the Issue 108 of Linux Gazette, Neil Youngman had written an article introducing JSPWiki. In this article I would like to introduce you to an obscure but feature packed Wiki, called PmWiki. Before diving into the intricacies of Wiki, I will speak a bit about where I have used wikis and found them quite good.

Knowledgebase
Wikis make it easy to create interlinked HTML pages. You can concentrate on the task of writing actual content without worrying about HTML tags or how to create the navigation links. The easy markup of the wikis make it very easy to copy text from emails, chat logs and random web pages and add it in your wiki. The wikiengine takes care of transforming the simple text to clean HTML. (a side note: you should give credit to the original author when you are copying text from some email/web page.)

Most wikiengines come with a search engine too, which makes the task to searching through the Wiki pages easier.

Available anywhere to-do list
I have tried a lot of things to keep a list of things I have promised to do. At one time I experimented with keeping it on a wiki page (on the Internet) and then kept adding/subtracting to it. (these days I use the excellent emacs-planner ). Since it is quite easy to edit the wiki page, it was quite effective.

Keeping meeting notes
In a brainstorming session, it is important to keep notes. However, if the company is small, the onus is upon the participants to keep track of the discussions that happened. In my previous company (which was quite small), each one of us kept our own notes in a simple text file. After the session was over, we used to create one wiki page and put our individual notes on that page.

1.2 Why Pmwiki

The main features that I was looking for in the Wiki were
  • It should not require a database backend, since I had used up all the databases allocated to me by my hosting provider
  • It should be written in PHP, since this is the language that I know quite well
  • It should be under GPL license
  • It should be skinnable, i.e. I should be able to change its look and feel without too much trouble
Looking through the list of available Wiki options, I found PmWiki. It met all the requirements that I was looking for. I also saw that this project definitely believed in eating its own dogfood. The documentation as well as the bug list has been maintained using PmWiki itself. I also had a look at the wiki's markup syntax, which seemed to be simple enough.

1.3 Installation

The Installation page has instructions on how you can get the latest version of PmWiki. The page also has installation instructions. As it is common with most of the PHP applications, the process is quite simple. You have to copy the files to a directory in your webserver's document root (for example in /var/www/html/mywiki) and then change the directory permissions to 2777. Use a browser to open the pmwiki.php page in this directory i.e. `www.yourdomain.com/mywiki/pmwiki.php'. If the permissions have been set properly, you should see the default PmWiki home page.

1.4 Customization

Once the wiki has been installed, the next step is to customize it. The customizations are usually controlled by the config.php file found in the local directory. When you first install PmWiki, the config.php file will not exist and so you'll have to create one if you want to perform any local customizations. You can copy the sample-config.php file (in the same directory as pmwiki.php) to local directory and use it as a starting point.

The first thing that you may want to customize is the $WikiTitle. The $WikiTitle variable gives the name of your site as it will appear in a user's browser title bar.

The next thing you may want to customize is the skin. If you lack design skills, like me, there is still hope for you. The PmWiki has good skins available at the site itself. Once you have downloaded the skin, unzip and put it in the folder pub/skins/). Then you set the $Skin variable to the name of the directory that contains your skin files. For example, if you like JHSkin, download the zip file and unzip its content. You will have a folder called jhskin. Upload this folder to the pub/skins folder in your wiki's directory. Then change the Skin variable to $Skin = 'jhskin'. When you reload the wiki in your browser, you will see that it sports a new look now.

The PmWiki cookbook has tips for more customizations.

1.5 Antispam Measures

Since wiki pages are editable by everyone, spammers use them to serve as their link farms (For example, this google search will help you to locate some abused wikis). Luckily PmWiki provides a few measures to fight against this menace. You can use the Movable Type black list to help control wiki spam. If the number of users who need to use the wiki is small, you can even give them indivual passwords. There is a UserAuth script available too, which allows you to manage a larger number of users. This script also allows you to register users before they can edit pages.

If you are making a wiki which will reside on your LAN, you can leave out these antispam measures. If you are making the wiki for your own use, I strongly suggest you have an admin password and allow only the admin to edit the pages. If you are making a world editable Wiki, be sure to review the PmWiki Security page.

1.6 Conclusion

Now that you are ready to run your own wiki, here are some helpful links -

Additional information