Here's the current team setup for getting DITTO on the Web. The primary contact point is the first person listed. Treat all examples as clarifications, not rigid specifications.

CL-HTTP server

Members: Tasks: management of server, training programmers

Immediate tasks: Contact others who have to generate HTML and make sure they know how to get and use the HTML writing functions.


Members: Tasks: Writing code to parse input phrases and generate retrieval forms.

Immediate tasks: Pick an example, like the butterfly with claws one below, and get it to parse. The example should be something for which a good set of stories exists.

Example input: What do you want? I want <a butterfly with claws>. Why? So it can <fight>

Example output:

(m-index :animal m-butterfly
         :feature m-claw
         :action m-fight)

Story retriever

Members: Tasks: Writing code to retrieve stories given retrieval forms.

Immediate tasks: Retrieve the stories relevant to the example parsed by the parsing people.

Example input: The above example parsing result.

Example output: Several lists of story names, each list tagged by a "match descriptor" saying how the story relates to the input, each list sorted from best to worst in terms of that descriptor, e.g.,

(((:similar :action) (:similar :feature) name name ...)
 ((:similar :action) (:different :feature) name name ...)
 ((:similar :feature) (:different :action) name name ...))

Note: in sorting, a story is better for :different the more different it is.

External story database

Members: Tasks: Writing code to to index and retrieve story texts on demand from files, so that all the text strings never have to reside in memory.

Forms interface (design and dialogs)

Members: Tasks: Writing HTML code for the Web interface to DITTO. This may be manually generated, generated by Lisp utilities, or a mix of both.

Immediate tasks: Make a simple input form, e.g., "What do you want?" with the form response "I want a <....> with <...>" plus a submit button. When you fill in the blanks and click submit, you get a new form (computed) showing the output of the parser. Test it with a dummy (stub) parser that always returns some list of answers.

The parse result page should have a "retrieve stories" button. If you click it, the story page should appear. Again, the story retriever can be a stub program initially.

Some members of this team need to write code for defining the dialog cycle. See ask-question-lisp and test-questions.lisp for an example (non-HTML) of a way to define questions and follow-ups in the Creanimate style.

Story list -> HTML generator

Members: Tasks: Writing code to present the lists of retrieved stories as Web pages, including the match descriptors.

Immediate tasks: take one tagged list of story names, preferrably what the story retriever people think they will generate, and generate the HTML to display the texts in some way similar to the example below.

Example input: the list of tagged story lists above.

Example output: That's a good idea. I have some good examples of animals that use claws to fight. ... I also have some good examples of animals using claws for things very different from fighting...