DPVC (CV/Research/StageTools) [Prev][Top][UpUp][Up][Skip]


Design Issues

Although the StageTools package has many attractions, it certainly does have its share of shortcomings and misfeatures. Some of these are attributable to the choice of TCL/TK as the underlying language. TCL has a rather unusual syntax, and some aspects of that show up in CenterStage and StageManager. Every effort was made to hide as much of this from the user as possible, but this was not completely successful. For example, the usual way in TCL to set the variable z to be equal to the square of x minus the square of y is to write

    set z [expr {pow($x,2) - pow($y,2)}]
which would be completely unacceptable in a program like CenterStage. Fixing this required the creation of an expression parser so that we could say
    let z = x^2 - y^2
instead. This works reasonably well, but since it is not part of TCL's native parser, it is only used by the commands that are defined by CenterStage, not by the other TCL commands. So, for example, one must include the dollar sign in the if command:
    if {$x > 3} {let y = x} else {let y = -x}
This schizophrenic syntax is a source of confusion for the inexperienced user. Fortunately, it shows up only when more complicated programming effects are needed.

Another problem related to TCL is in its error reporting. For efficiency reasons, CenterStage does not check all the possible input errors itself, but lets TCL catch some problems when they occur. This means that the errors may be at a fairly low level of the code for CenterStage, and so the error message may be uninterpretable by the user, with no clear connection to what he entered in the definition script. This really needs to be improved.

The close connection to Geomview also has its problems. The communication channel used between Geomview and its modules is not a very fault-tolerant one: if Geomview detects an error in the format of the data sent from a module, it reports the error, and then refuses to accept any more communication from the module. Since CenterStage does not check all possible error conditions on the data entered by the user, it sometimes sends Geomview bad data. Once this occurs, there is no way for CenterStage to communicate further with Geomview, so it can't update or change any of its objects, even after the error has been correct by the user. His only option is to save his work and start CenterStage again.

Also, since CenterStage relies on Geomview to do its graphical display, it inherits any problems that Geomview has, and there are a number of these. For example, some versions of Geomview on some platforms do not draw all the outlines on polygons when it is saving an image to a file; thus the frames for a movie might not look exactly the same as they do on screen. Another problem is that Geomview's n-D viewing mode is buggy. For example, it's normalization and centering is broken, so the user has to rescale the objects by hand. Also, on some platforms (most notably, the X11 version), lighting effects are not applied to the 3D projections of higher-dimensional surfaces (they appear as though the Appearance/Shading is set to CONSTANT or CSMOOTH). This makes n-D mode virtually unusable on those platforms. Fortunately, CenterStage can project its high-dimensional objects into 3-space itself, so the objects can be viewed using Geomview's 3D viewing mode, where lighting works correctly.

One final shortcoming is that StageTools is a huge project that is maintained by only a single individual in his spare time. This means that updates are slow in coming, and the documentation is never as good as it should be.



[HOME] Davide P. Cervone's web pages
Created: 08 Sep 2001
Last modified: 09 Sep 2001 23:36:40
Comments to: dpvc@union.edu
[Skip] Electronic Communication of Mathematics
[Up] The StageTools Geometry Package
[UpUp] Software Development
[Prev] Design Philisophy