I finally got enough code together to put something out on CPAN. It's not complete, but enough is there to get it running.
The framework maps urls to content. Four content providers are in the base distribution: documents (unparsed), views (parsed by Template Toolkit), portals (documents that can embed other content), and xsm (eXtensible State Machines). The last one, xsm, acts as the controller in an application. Each state can map to a view which has access to the state information.
Sessions are handled automatically. If cookies are not available, then the URL is mangled, though some support work remains for this -- external links don't redirect correctly yet to lose the session id information. Each state machine has its own independent context. If I have time, I want to develop an application that allows help desk people to trace the path a customer took through an application so they can see what the customer might have done wrong or what the customer needs to do next.
Forms automatically fill themselves out based on the context information. The TT2 view doesn't have to track default values. Using the XPath-like expression syntax in XSM makes data management in complex forms simple -- take a look at the wizard creation wizard for an example: we have a wizard that can contain multiple steps, each of which can require multiple pieces of data.
The XML schema for form markup makes embedding one form in another simple. It also means the form elements should be coded based on their logical relationship to one another, not based on how the page should be laid out.
Views are inheritable, for the most part (this may still require a bit of work). I can subclass an existing application and only change those views that require changing. Only change those state transitions that require changing.
I think it's neat. There's too much there to try and cram it all into one post. If you have time and want to just play around with some new code, download the packages and give it a spin. I'd love to hear what you think.