Multiuser application: An application that interacts with multiple users, that is, receives input from and/or displays output to multiple users. It may consist of multiple, distributed component processes.
Multiuser program: A program executed by a multiuser application.
Multiuser user interface: User interface of a multiuser application.
Independent/Coupled/Collaborative/Individual/WYSIWIS/WYSINWIS Interaction: Interaction with multiuser applications can be classified into independent interaction and coupled interaction depending on whether or not the output seen by a user is a function of the input entered by another user. A time sharing system supports independent interaction since it allows its users to interact independently of each other while the example application supports coupled interaction since changes made by user A can be seen by user B.
Coupled interaction can be further classified into collaborative interaction and individual interaction based on whether or not the interacting users depend on other users to perform their tasks. An airline reservation systems supports individual interaction since its users make reservations individually while the example application above supports collaborative interaction since a user may change a procedure in response to an action performed by another user to test the procedure. Individual interaction is similar to independent interaction except that the former allows users to compete for a shared set of resources. In this paper, we will focus mainly on the suitability of multiuser tools to support collaborative interaction. Finally, collaborative interaction can be classified into WYSIWIS (What You See Is What I See) [Stef87] interaction and WYSINWIS (What You See Is Not What I See) interaction based on whether or not the collaborating users see the same interaction state. The test windows of the example application support WYSIWIS interaction while the edit windows support WYSINWIS interaction.
Access control-- determines whether a user of a multiuser application is authorized to perform an action such as changing the procedure insert (Figure 8.1).
Concurrency control-- prevents users of a multiuser application from making concurrent inconsistent changes they are authorized to make such as concurrent changes to the shared procedure insert.
Coupling: The process by which coupled interaction occurs.
Input multiplexing--merging multiple input streams of different users.
Output demultiplexing--sending application output along the output streams of different users.
Interaction function: A user-interface function such as parsing of input or output of results that is common to both single-user and multiuser interfaces.
Collaboration function: A function such as access control or concurrency control that is specific to multiuser user interfaces.
Single-user tool: A tool supporting the implementation of one or more interaction functions.
Multiuser tool: A tool supporting the implementation of one or more collaboration functions.
Basis: A multiuser tool can be developed by extending a single-user tool. We refer to the latter as the basis of the former.
Server/client: A server is a runtime component of a tool that performs services for programmer-defined components, called clients, of an application.
Interaction awareness: A measure of the amount of code in a client of a single-user tool that defines interaction functions.
Collaboration awareness: A measure of the amount of code in a client of a multiuser tool that defines collaboration functions.
Collaboration -aware/-transparent client [Lau90]: A client that is aware/unaware it is interacting with multiple users, that is, a client that defines some/none of the collaboration functions.
Call: A procedure invoked by a client in a server.
Callback: A procedure invoked by a server in a client.