Planning: user interface

Making a web-based user interface (which seems the most useful approach) for Daizu is a big job, so I've tried to break it down so that we can get something out of the early stages, rather than thinking of it as one big project.

These things will probably have to be done in order:

Committing

Daizu has Subversion working copies in its database, but currently these can only be checked out or updated. A user interface would need to edit the content and metadata in a working copy and then commit it to the repository. This will probably require some changes to the database, and some thought about how we track which revision different files belong to (currently only a single revision number for the whole working copy is recorded, in the working_copy table). I made a start at this but didn't get very far, so there are a few columns in the wc_file table, and a few functions here and there, which don't yet work.

Configuration

Some of the configuration stuff which currently goes in the XML file should probably be moved to the database, so that the user interface can provide a nice way of updating it, guiding the user through the process. I'm thinking particularly of the output configuration and GUID entities.

mod_perl infrastructure

It would be nice to turn the CGI script preview.cgi into a small mod_perl application to make it acceptably fast. This would be an opportunity to make a general web interface architecture into which other bits of user interface could be added later.

There are other things that will need to respond to web requests as well, which could fit in here. A commenting system for the blog for example, and perhaps support for receiving trackbacks or pings.

A wiki

Once we have the items above, it might make sense to create a simple wiki-like interface for editing content. Not only would it allow Daizu to host public wikis (with excellent revision control) but it would be great for making small corrections to content. This would need careful thought about what happens to various bits of metadata.

Atom publishing protocol

If Daizu supported the Atom publishing protocol, it would allow any compatible clients to edit content. I don't know what sort of clients are available so far, but it should get more support as time goes on.

I think this would be a desirable feature even if we had a more direct way to edit content, so doing it first might make sense. It would probably be easier to support Atompub than to provide a decent web UI anyway, since the responsibility for making it easy to use would rest with the client.

Full web UI

This would have to be easy to use, accessible, and make best use of Daizu's features. It's a scary enough prospect that I'm not going to think about it too much yet.