wiki/blog convergence

I wrote a wiki engine last week, maybe I should write a weblog engine next week?

Here's my own take on converging the two, which has been done before, but which some differences in ikiwiki perhaps allow to be approached slightly differently.

  • ikiwiki supports pages that are subpages of others, for example, "Page/Discussion".
  • Various parts of ikiwiki allow users to select a set of pages using globs. For example, "SomePage OtherPage OtherPage/* !OtherPage/Bar"
  • ikiwiki renders pages statically, and can render rss statically too. This makes rss rather less expensive to serve..

First, I plan for all pages in the wiki generate a rss feed for that single page, which can be subscribed to if you want to track changes to the page alone.

Then, pages can have a blog embedded in them by adding a special tag to the page, which includes a list of globs for the pages on the wiki that comprise the blog. Something like "Blog/* !*/Discussion", to exclude discussion subpages from the blog. This makes the most recently created of those pages be inlined into the html version of the page (with a form at the bottom to make a new post, if you don't want to commit to svn by hand) ... and enables creation of a regular rss feed too.

Some nice features that just fall out of this:

  • It's easy to set up subfeeds for categories. Just make blog pages for the categories, and an overall blog page that includes everything.
  • All blog pages get discussion pages, without having to worry about people spamming your blog (unless they're already spamming your wiki of course).
  • You can subscribe to an rss feed for any of the discussion pages if you like. Discussion pages can even be turned into little blogs of their own. Or they could even all be aggregated into a discussion blog (Containing anything matching "*/Discussion").
  • Permalinks are just links to the wiki pages that are combined to form the blog.
  • You can refer to any other blog posts using wikilinks; the wiki will automatically add backlinks to pages that link to a post, too.
  • Since I keep my blog in plain text .mdwn files alredy, I can migrate from pybloxm to ikiwiki using pretty much just an svn mv ...

ikwiki's TODO has the details (about half way down; that page needs to be implemented as a collection of pages/blog itself).