[kepler-dev] Ptolemy Kore Dependencies

Christopher Brooks cxh at eecs.berkeley.edu
Fri May 23 09:38:21 PDT 2008

Ok, I've refactored Ptolemy Kore so that the dependencies are better.

Below, as we go down the list of packages, packages at the top don't
depend on packages at the bottom.

However, within a top level package, we still may have dependencies
between the top level package and its subpackages.  I think this
is ok, since the subpackages are often syntactic sugar used to
break down large packages into smaller packages.

Also, not all packages within a top level package are part of Kore.

ptolemy.math  - does not depend on other Ptolemy packages.
ptolemy.util  - does not depend on other Ptolemy packages.
ptolemy.graph - uses Exceptions from ptolemy.kernel.util
	      - uses NamedObj for better error message

ptolemy.kernel, ptolemy.kernel.{attributes,util,undo}
   	      - Depends on ptolemy.util
	      - Circular dependency: CompositeEntity depends on

ptolemy.data, ptolemy.data.{expr,type,unit}
	      - Depends on kernel, kernel.util, math, util
	      - Circular dependencies: Classes in data depend on
	        ptolemy.data.{expr,type,unit} and the reverse

ptolemy.actor - Depends on actor.parameters,
	        data, data.expr, data.type
		kernel, kernel.util
		math, util

Things starts to break down here.  In particular, the moml/actor split
is tricky.

ptolemy.actor.gui depends on many packages, including moml.

moml depends on many packages, especially actor.

However, I _think_ I've removed the circular dependencies between
moml and the actor packages.  

Kore Actor packages that require moml:
      actor.gui, actor.gui.style

Note that other non-Kore actor packages like actor.gt, actor.gui.run,
actor.lib.jxta also require moml, but these are not a concern.

I also removed dependencies in various actor packages on vergil.
The data.unit package got split up and part moved to moml.unit.

Future work:
 - Fix any broken tests or builds.
 - Refactor ptolemy.actor.lib.gui so that it is easier to substitute
   in non-graphical classes for headless runs
 - Once we choose a new version control system, create modules for 



    I'm using the term "Ptolemy Kore" to refer to the core packages
    of Ptolemy that are needed by Kepler or other developers that want
    to mix and match Ptolemy packages.
    http://en.wikipedia.org/wiki/Persephone says:
    "for the Greeks knew another face of Persephone as well. She was also
    the terrible [Queen of the Dead], whose name was not safe to speak
    aloud, who was euphemistically named, simply as, Kore, "The Maiden", a
    vestige of her archaic role as the deity ruling the underworld."
    The K in Kore also refers to Kepler.  
    I've started a list of package dependencies at
    Basically, there is a certain amount of cleanup that should happen.
    Thomas Feng is working on pulling fsm out of data.
    actor.gui has references to vergil.  I'll work on that.
    The data.unit package is rather well entwined in the code.  I'm open
    to suggestions on how we can make it optional.
    A larger issue is:  What do we do with code that is not in the Kore
    modules?  For example, ptolemy.data.properties is not in a Kore
    module.  I'd rather leave it where it was and use some sort of build
    system to determine what packages go into Kore.
    Kepler-dev mailing list
    Kepler-dev at ecoinformatics.org

More information about the Kepler-dev mailing list