Daizu's features

This is an attempt to describe what I think Daizu will give you, once the wrinkles are ironed out. I'm sure there are other advantages to my design than those listed below, but my head has been in it too long to have a clear picture right now. I'll come back to this once the first release has been public for a while.

Subversion

Storing content in Subversion not only gives you excellent revision control for free, but it also provides an alternative way to access content, through standard Subversion tools. When Daizu eventually gets its own user interface that will usually be the way you edit your content, but it will still be useful being able to check out a normal working copy with the svn command. If you want to import a large amount of content from elsewhere, just write a script which puts it in files and runs a few commands to put the metadata in Subversion properties. You can then review the new content in your working copy before committing it.

Because metadata (title, description, etc.) is stored in Subversion properties, each of these values is separately revision controlled. Storing them separately rather than as a ‘header’ of some sort in the actual content of the file means that code which uses the metadata can work independently of the format you write your articles in.

File and GUID tracking

Daizu keeps a record of the paths which each file has occupied in different revisions, and in different branches. It uses this information to associate a unique identifier (usually a tag URI) with each file you generate content from. This is used in Atom and RSS feeds to identify articles in such a way that an aggregator need not show an article to a user twice if its URL changes.

Unified article publishing

Articles can be written in potentially almost any format (currently XHTML and POD format are supported, but plugins could be written to support other formats). The content from these formats is loaded into a standard format internally (an XHTML DOM), so all articles, whatever format they're written in, can be published through a standard pipeline.

The filtering plugin system takes advantage of this. Plugins can process the content of all articles, making changes to markup or adding automatically generated content. One of the plugins written so far does syntax highlightign of code (which on this website is already used with both XHTML and POD content).

Flexible templating

This feature isn't quite finished yet, but there is an outline of a very flexible arrangement of templates. Users can add templates to the content repository to override the default ones for a particular part of a website. Programmers can override them in a different way for particular kinds of website or output.