The Linguistic User Interface (LUI) is an on-going project to build a visualization tool for the most common object types in constraint-based grammars, i.e. trees, feature structures, MRSs, charts, et al. While the LKB comes with built-in browsers for all of these, the current use of the CLIM (Common-Lisp Interface Manager) toolkit in the LKB severely limits portability and ease of use (and programmatic extension). Thus, portability and royalty-free delivery are among the primary motivations for the LUI project; at the same time, LUI attempts to `conservatively' improve over the existing LKB tools, for example in terms of layout options, scalability, user parameterization, display effiency. While preserving all existing LKB display functionality, LUI adds some new facilities, including drag-and-drop interactive unification, display of, and navigation through multiple feature structure incompatibilities, and creation of screen dumps in (for now) PostScript or LaTeX formats.
Existing LUI Browsers
LUI currently provides browsers for four types of linguistic structures, viz. constituent trees (LuiTree), feature structures (LuiAvm), MRSs (LuiMrs), and parse charts (LuiChart). For other types of linguistic objects, a LUI-enabled LKB session will just fall back on the default, built-in display methods from the LKB.
Obtaining and Running LUI
Recent LUI binaries for Linux (x86 in 32- and 64-bit mode) and Mac OS X are part of the LinGO LKB CVS repository. As of August 2005, LUI support is also included in LKB binary builds (see the LkbInstallation pages). During an initial testing phase, LUI support is not turned on by default. There are multiple ways of activating LUI, e.g. (a) manually within a running LKB session, (b) from within the `.lkbrc' user-specific LKB configuration file, or (c) by means of a shell environment variable.
Activating (or Deactivating) LUI Support
To enable LUI during an LKB session, at the Common-Lisp prompt evaluate the command
Activating LUI for a running LKB session means switching graphical display to LUI widgets for the supported types of linguistic objects (see above). Once LUI has been initialized, parse trees, AVMs, et al. should all be displayed using LUI widgets.
Conversely, to disable LUI for the current LKB session, evaluate
For debugging purposes or comparison to the LKB built-in display (on platforms that support built-in graphics for the LKB), it is possible to toggle between LUI-enabled mode and no-LUI mode frequently within a single session.
Turning on LUI by Default
One options for requesting LUI activation at LKB start-up is to place a call to lui-initialize() (see above) into the file .lkbrc in a user home directory. The .lkbrc file is a user-specific configuration file that is read when the LKB starts up.
Another option is to set (and export) a shell variable LUI to a positive value, e.g. (in your user-specific .bashrc file):
Note that for shells other than bash(1) (or the MacOS environment), the syntax of setting environment variables may differ. Finally, setting the value of the LUI environment variable to a positive integer will cause the LKB to activate LUI support but wait for an external (typically remote) LUI to connect to the port named by its numeric value (see below).
LUI Remote Mode
LUI can also run in remote mode, communicating with an LKB session on a different machine. This mode of operation may be attractive for people running the LKB (or, in principle, another linguistic processor with LUI support) across a network with noticeable latency; the YZ widget library is somewhat more sensitive to network latency than, say, X11. First, the LKB host must be told to accept connections. This is accomplished by a command like:
(lui-initialize :port 4001)
Then, LUI must be launched with a special command line option. The executable lives in the lkb/bin/linux.x86.32/yzlui location inside the DELPH-IN top-level source directory (for Linux, x86, 32-bit) or the bin/macos.ppc.32/yzlui.app/Contents/MacOS/yzlui location for Mac OS X. A remote connection is established by launching a LUI process (manually) from a shell, and directing it to talk to a running LKB session and the numeric port used as the argument to the lui-initialize() call. Assumming the LKB session runs on host cypriot.stanford.edu, say, the following might work:
$DELPHINHOME/lkb/bin/linux.x86.32/yzlui -c cypriot.stanford.edu:4001
Testing and Bug Reporting
The first public LUI release is in August 2005. For a few months prior to the release date, the new tools have only been tested by one active LKB grammarian (our thanks go to DanFlickinger). Unexpected behavior may comprise a bug. LUI maintains a log file describing your session in the file /tmp/yzlui.debug.username (where username corresponds to your own user id). Please report bugs to the DELPH-IN developers mailing list and always attach a corresponding LUI log file from the `/tmp/' directory.