[Pipet Devel] Peep update

deanne at density.biop.umich.edu deanne at density.biop.umich.edu
Mon Jun 12 06:11:46 EDT 2000

I spent some time talking with Brad on Sunday about the DL and peep.

As I understand it, the DL will, exclusively:

1) Accept input from peep thru CORBA. This input will be (loosely), "User
wants [xxx] node in [yyy] position" where "xxx" includes type of node and
name of node, and "yyy" includes network-order and URI of node.

2) Store information on the structure of the user-defined network
according to what the UI has fed it. This is not only dynamic storage but
also filesystem-storage so it can re-inform peep in case of local
crashes or exit of program.

3) Regurgitate everything the UI has fed it, on command, so that the UI
(peep) can form a nice, tidy list out of the information.

The UI (peep) will, exclusively:

1) Act as a "sanity broker" to the DL so the DL always gets something it's
expecting.  I've chosen to use the Cmd.cmd class which simply doesn't
accept input unless it matches our internal "list" of commands.

2) Feed the DL information. HOW this is done is still up for debate (see

3) Take regurgitated DL information and arrange it in a neat, referential,
and tidy way so users can easily manipulate it at the UI. 


How peep feeds information to the DL

As I see it, peep could feed info to the DL in two methods:

1) Dynamic and Transparent. Peep would automagically execute an update to
the DL every time a user defines a pnode, etc. This is nice for run-time
tweaks, I guess. It's dynamic because it automatically updates. It's
transparent because it gives the DL the job of handling the structure of
the network...in this case, the UI is "transparent" to the DL, and is
simply acting as a real-time  information broker to the DL during its use.
Pros: Dynamic updating to the DL.
Cons: All the work is done by the DL, the UI is just the interface to the
DL. Therefore, the DL will have to notice when shite does not make sense.

2) Static/Opaque. Peep would allow the user to define the entire network
(or pieces of it) and store all the information locally in and with the
UI. It would only "inform" the DL when the user selects to 'execute' at
which time the DL gets all of the UI information all at once. This is
static because the UI only accesses the DL when the UI is ready to, based
on what the user says. 
Pros: All the "playing" in the network is done in the UI. The DL isn't
ever "bothered" until the structure is built and any craziness is handled.
Cons: The UI is now less of an interface to the DL than a
structure-builder in its own right. It duplicates some of the
functionality of the DL and is probably going to be "bigger" and less


My choice is #1, for the following reason:

I believe that any program which utilizes piper as part of its execution
(like GeneGnome will) would like to have piper's DL do all the figuring
and have its UI/Code Interface simply feed information back and forth. If
we believe in seperable UIs, then the UIs should only be the *interface*
to the DL, but not expected to do much more than check for validity in
some very simple ways.

Yes, no, thoughts?

Deanne Taylor		        	     Biophysics Graduate Program
lilyth at umich.edu				University of Michigan
http://www.umich.edu/~lilyth		              Ann Arbor 	

More information about the Pipet-Devel mailing list