(updated April 2005)
Modules are subclasses of MesquiteModule. However, it is expected that no module will directly subclass MesquiteModule, but will instead indirectly subclass it via the duty classes. Duty classes are subclasses of MesquiteModule that represent distinct roles a module could play. For instance, DrawTree is an abstract subclass of MesquiteModule that creates a tree drawing. A tree-drawing module would be expected to subclass DrawTree. Another duty class is TreeSource, another abstract subclass of MesquiteModule, but this time it supplies trees.
By convention, duty classes are part of the mesquite.lib.duties package. Some of the defined duty classes are:
A duty class can override the MesquiteModule method getDefaultModule() to return the names of the modules intended to be the default for the given duty. In the future the user should be able to override this in a way that would be saved to a preference file.
A duty class should override the MesquiteModule method getDutyName() to return the name of the duty performed. The name should be informative to the user.