Update on Gestinanna

jsmith on 2004-06-02T14:05:05

I have a new supervisor. He started at the beginning of May, was here for two weeks, and is now finishing up a three-week vacation. It wasn't us :) He had already made plans for the vacation (and conference, actually), so they let him keep it. He was moving within the University, so is wasn't like he was changing employers.

He's had some good effects on the Gestinanna project. He's forced me to get organized such that we could bring someone else into the project if we needed to.

As a result, I have code that can sketch out the dependencies between the various modules. I can automatically build tests from tests embedded in pod (which I am now writing furiosly -- unit tests are good, but take a while to write). I can run tests in the order required by module and method dependencies. I can generate reports showing how many tests pass/fail for each method. I just need to make all this a subclass of Module::Build and release it. The SVG dependency graph is my personal favorite.

I've added initial support for workflows based on the Workflow module released on CPAN a short while ago. I had been wondering for some time who I was going to manage coordination between applications to make things happen in particular ways (approval of changes to allow them to go production, for example). Workflow.pm fell into my lap :)

I'm wrestling with continuations. I have rudementary ones in a sense (at least in the sense of a paper I saw the other day), but I can't do the following yet:

<value name="/email"> <call-out state-machine="/std/email/composer"/> </value>

and have /email//* be all the information needed to send the e-mail. This is a simple and contrived exmaple in some ways, but the more interesting example is when one program dynamically determines that it must call another to get needed information (such as a site configuration manager calling out to the machine for a particular content provider type - allowing dynamic addition of new content provider types without requiring changes to the overall config manager application).

Part of the problem is that we are using a SAX-based XML->Perl compiler. By time we know we need to manage a continuation, we might be embedded in a loop, if-then-else (choose/when/otherwise) sequence, or other difficult context. If we assume we will have a continuation, then loops will probably be slow and clunky for all cases. I'll have to think about this some more, but it doesn't look impossible -- just a little difficult at the moment.

Continuations in the above sense won't be on CPAN by OSCon, but I hope the other stuff is. That's my goal anyway at this point.