December 16, 2004
For various reasons I have recently been elbow-deep in wikis, and have come to loathe them as much as I find them useful. I’ve used or evaluated PHPWiki, MoinMoin, TWiki, TikiWiki, PMWiki, Mediawiki, Tiddlywiki, coWiki, and Trac — and I hate them all. They might be OK if you just want to use them out of the box… but the minute you start customizing, it’s enough to make you want to throw up.There are a few good things to mention. MoinMoin has got to be the ugliest wiki ever made, and if there’s a way to make it prettier I certainly haven’t figured it out — but it has the best site indexes of the bunch. You can easily get a list of all the pages on the wiki, all the wiki-words, all the orphaned pages, etc. I do not understand why more wikis don’t do this, given the magnitude of the “treasure-trove without a mineshaft” problem endemic to wikis. MediaWiki gets rid of the stupid wiki-words, and also uses stylesheets correctly to separate code from presentation — try switching from the default style to the BlueDanube style, for instance. TiddlyWiki is a sweet experiment in user interface, which unfortunately will need better plumbing to actually be useful.
But the bad and the ugly far outweigh the good. For instance, PHPWiki is now my number one exemplar of the “Why OOP in PHP is fat and slow and hard to debug” theory. Try dumping out the data on any page… no, on second thought, I can’t wait that long (hint: last time I did it, I ended up with 1600+ lines of data). An average wiki page should, in my humble opinion, take no more than .01 seconds to be served… PHPWiki regularly exceeds that by more than 10X. Now try changing any little thing, and note how this results in an instant and information-free fatal error. One of the nice things about PHP is that generally when it fails you get good debugging info… but not with its object system, which simply fatal-errors out. Or check out the fact that Mediawiki actually has two different stylesheet systems, depending on whether you use PHP4 or PHP5 — more or less totally undocumented, of course. Or note PMWiki, which I couldn’t even figure out how to install.
I know some of you are thinking that I’m a moron right now… and maybe I am. But I’d challenge anyone to take any two wikis, and time themselves doing simple basic tasks: for instance, change the main graphic, the colors, the copyright notice in the footer, and the links in the navbars. Those would be sort of the minimum customization things I’d expect to do to any software package. For extra credit, limit edit permissions to only registered users from a certain email domain, add a new CSS style for links that go off-site, and figure out how to dump out all the pages into a zipfile. Then come back and tell me how usable and maintainable these things are.