This web site has gone through many stages, and I’ve used various types of software to host the content. First I used some homegrown content management system written in Perl for some years, and it worked pretty well. But I never got rid of the feeling that I was reinventing the wheel, and in some ways a worse one. I had a look at Wordpress, but as it was mostly aimed at blogging, I found it a bit too limited for my use. And it used MySQL only. I won’t touch MySQL with a three meter pole. Then I used Drupal for some time, and while it’s a great CMS, it was a bit overkill and it insisted on owning the whole web space. I felt I lost some control over the directory structure, and customising the layout turned out to be more hassle than I bargained for. This also conflicted with my love for the KISS principle, and I was never too fond of editing the content on the web anyway. I prefer to sit quietly on my computer editing the pages in my favourite editor, laying out the directory structure and then upload the result afterwards from my version control system.

So, this wonderful day in February 2011, I found Ikiwiki, and I immediately liked it:

  • Ikiwiki is a wiki compiler and generates static XHTML pages. This means less strain on the web server in case of a DoS attack or (I’d wish) a potential slashdotting.
  • The generated pages validate as XHTML 1.0 Strict at http://validator.w3.org. This is an important feature where too many CMSes fail.
  • It lets you sit offline and create your pages, commit your changes into a version control system like Git and then push the changes when you’re on the net again. Unfinished content can be placed on revision branches and merged into the mainline when it’s ready to be presented to the world.
  • The web pages can also be edited directly from the web if an Internet café or mobile phone is all that’s available at the moment.
  • It’s written in Perl. I love Perl.
  • It supports OpenID. I love that too.
  • Let’s face it, even if you know XHTML, it’s a bit cumbersome to insert tags and elements in the text, even though there’s at least one neat Vim plugin available. Ikiwiki uses MarkDown by default, and turns text typing into a breeze. If MarkDown is not your cup of tea, other markup languages can be used instead, and if you need to insert raw XHTML into the text for special purposes or use it for the whole page, you can still do that.
  • As the name suggests, it’s a wiki everyone or a designated group of users can edit. I’ve restricted this in the beginning due to all the parasites (spammers) that overflow the net, but I’ll probably loosen that up a bit when I’m more familiar with the Ikiwiki software. I notice most other installations of Ikiwiki have enabled this feature, so it can’t be that bad. Maybe I’m a bit paranoid after getting my Drupal installation polluted into a bloody mess in a few weeks.
  • Because the backend of the site is stored in a version control system (Git, Subversion, Mercurial, bzr, Monotone, Darcs, tla, or CVS), changes are easily reverted, and the whole history of the site is preserved. What could be more fun than having a look at how your site looked ten years ago? (Well, probably lots of things, but you know what I mean.) It’s even possible to allow anonymous users to push changes into the wiki/website using the version control system.
  • It separates content and software. The only files that end up in the VCS is the content you create, and this makes upgrading the software safe and easy. Even if the upgrade should fail, you still have your valuable content safely stored until the upgrade is properly in place.
  • Most of the implementation choices made by Joey Hess (the creator of the software) are right up my alley and I feel very comfortable with the overall philosophy of the software.
  • Oh, and it’s free software. That’s the most important reason of them all, and guarantees that the software will remain free for the rest of my life. And frankly, after that I don’t give a damn.