Gestinanna 0.02

jsmith on 2004-07-26T19:44:24

The right way . . . is to separate the meaning of a program from the implementation details.

Saying less about implementation should also make programs more flexible. Specifications change while a program is being written, and this is not only inevitable, but desirable.

---Paul Graham, ``The Hundred-Year Language''

Gestinanna uses XML vocabularies to describe workflows and controllers as state machines. Using taglibs, it provides various extensions for accessing the Gestinanna::POF packages, workflows, scripting, authorization and authentication, and various misc. odds and ends.

I finally got around to getting the code released. Twice as much code as the previous release :) Work got a bit funner for a few weeks.

Change log:

o Basic workflow support. See the listserv package for an example.

o Added a package system. Shell support is not complete, but sufficient for installing a package.

o Moved sample pages into packages installable via the package system.

o Added site configuration single inheritance.

o Extensive unit tests in the low-level modules. Not yet complete.

o Split state machine XML schema into two namespaces: state machine and scripting.

o shell tool may be configured not to use a pager.

o Added `site clone' command to the shell. Both cloning and creating a site will now create a site configuration as well.

o Added `site config' command to the shell to edit an existing site's configuration. The resulting configuration must be parsable by XML::LibXML.

o The `site uri add' command now takes an argument to indicate the object type the URI refers to.

o Gestinanna::Request::get_url added to resolve an object to a url (for use by Apache::AxKit::Provider::Gestinanna).

o Alzabo naming routine updated for Alzabo 0.82.

o Namespace handlers for XSM scripts are now configurable on a per-site basis.

o Namespaces can be specified for namespace handlers, overriding the default. This is useful for using different handlers that offer the same interface but work with different backends.

o Configuration information specific to a content handler type is now enclosed in a tag.