In LabSpace, a scientist uses the browser as the primary user interface, as it provides navigation and elab communication capabilities. However, the interfaces that are tailored to specific applications are split among modules which implement the details of that type of interaction. These may be general teleconferencing applications, such as a window containing images of one or more co-workers, or very specialized interfaces, such as an electron microscope controller. Many different modules will often be active at one time, so that, for example, one may discuss the view of the microscope while working with it. The set of tools in use by one person, regardless of their type or use, is called a session.
The principal role of a module is to work with one or more data streams, acting as the user interface for the data. The module for an audio source data stream may be a program that drives audio speakers. A data stream consisting of a series of white board modifications will probably be sent to a module that implements a white board, or may be sent to an archiving mechanism to be recalled later. Modules may be as simple as a clock or as complex as the interface to a collider detector. Several of these modules have special roles that help the session become a unit that works together rather than simply a set of tools vying for screen space.
The most important of the modules is called the broker. It acts much like the mixing board in a sound studio. It mediates connections between modules, allows or disallows remote connections, and understands the capabilities of the user's collaborative environment. It works closely with the browser (and may in fact be part of the same program) to make remote communication as smooth and simple as possible.
=12cm labspace.slide3.eps
All of the other modules can be thought of as generators and/or receptors, which, respectively, are programs which create data streams or handle data streams. A video camera is a generator, while a window displaying the output of that camera is a receptor. Many programs, such as a white board interface, are both. Specialized receptors and generators can act as filters, which convert one form of data stream to another, or archivers, which store data streams for later access.
A collaboration between two parties is thus a conversation between two sessions. A generator on one end arranges with its broker to negotiate with the broker on the other side. Once the two brokers have verified that this connection is authorized to take place, the remote broker passes the connection on to the remote receptor, which proceeds to communicate directly with the generator. The data is passed in whatever format and by whatever mechanism is appropriate to those modules.
The specification of the protocol for communicating with the broker will be one product of the LabSpace research project. The individual modules' protocols will not be specified, but will be left open-ended, so that modules of arbitrary types may be added whenever appropriate. In this way, the LabSpace architecture is open-ended, allowing tools of any type to be developed that still work within the framework.
Jane explained the situation with the anomalies, and how she thought they might be related to her own project. ``I think I remember you mentioning a few odd unexplained problems in your own results. Have you had a chance to look into them?''
``I sure have,'' Maria answered. ``In fact, my colleagues and I have written a paper about our findings. It's still a preprint at the moment, but it's not classified, so you're welcome to take a look at it and use it if it helps.''
She reached into the stack of literature on her desk and rifled through it.
Jane eyed the pile of papers warily, hoping that some intelligent agent was involved in sorting through the enormous stack.
Across the network, Maria withdrew a paper and handed it to Jane. A symbol indicating that the paper had been received by Jane's session appeared, and she popped it up on her document viewing module. ``Great,'' she said. ``This may help a lot. Thanks!''
The rest of this section describes the broker, data streams, and the other modules in detail.