[Walrus-dev] questions from a newbie

Young Hyun youngh@caida.org
Mon, 24 Jun 2002 11:27:51 -0700 (PDT)


On Sun, 23 Jun 2002, Bruno Conductier wrote:

> So my first question is about the capacity of Walrus to deal with
> dynamic datas. Can I expect to be able to add some new datas or
> remove old one ? I supposed so since I notice a MutableGraph class
> in the libsea.jar ...

Walrus was designed to present essentially static data and thus has little
support for dynamic data.  The first obstacle is the layout algorithm.
A change in graph topology (even a small one) may cause an abrupt change
in the layout, making it difficult for the user to maintain a mental map
across the change.

Node/Link color (which is currently the only supported visual attribute)
could conceivably be updated from a dynamic feed, but the current
implementation lacks facilities for doing this.  This brings up the issue
of how dynamic data would be fed to Walrus.  Currently, Walrus takes a
fully formed graph, stored in a graph data structure, and renders it as a
whole.  If something changes, the whole graph must be re-rendered.  If
Walrus were to support dynamic data, this architecture would have to
change dramatically.

The MutableGraph you mention isn't implemented yet.  It would support
in-memory modification of graphs.  However, Walrus actually uses two
separate graph data structures.  The LibSea graph is the "backing graph",
the data structure that stores all data about the loaded graph, such as
topology and node/link attributes.  The rendering core of Walrus, however,
knows nothing about this data structure.  Instead, the renderer uses a
separate minimal graph data structure which holds only the data needed to
render the display (data on the topology, spanning tree, the selected
node/link color, etc.).  Because of this independence, the LibSea graph
data structure can be replaced by some other problem-specific data
structure (currently, only if you have the Walrus source code).  On the
flip-side, this means that modifying the values stored in a particular
instance of a LibSea graph will not have an immediate effect on the
rendering of the graph.  In-memory modification of LibSea graphs only
saves you the trouble of loading in a new graph; it doesn't fundamentally
change the rendering process.  That is, you could change the in-memory
LibSea graph based on dynamic data, but the result will essentially be the
same as creating a new graph file based on the dynamic data and then
loading in the new graph; the display won't change incrementally.

> Next, do I have control on the appearance of the nodes ? In particular
> can I change dynamically the shape of the color of one node ?

You can change the color of nodes but not the shape or size.  Support for
node shapes may be added in the future if it can be done without
overly degrading interactive performance.

> Finally, the archive that I download doesn't contain any javadoc for
> Walrus API. Does it mean that Walrus is a standalone application and
> not also a tool library ? From my point of view many potential
> applications need a simple graph view and will construct the graph
> from other memory datas rather than static files.

Yes, Walrus is intended to be a standalone application.  Its modular
architecture, however, should allow the rendering component to be used as
an API with a bit of work.  Unfortunately, this aspect of Walrus hasn't
really been explored yet (and there is currently no supported method of
doing this), due to a lack of time/funding.

 --Young