Abstract
Modern CSCW (Computer-Supported Cooperative Work) applications are driven by intensive graphical user interfaces. Groupware widgets, such as shared scrollbars and text editors, are common in these applications to facilitate synchronization of shared information across a user group. These widgets differ from their single-user counterparts in that they must coordinate and consistently reflect changes in shared widget properties. In the past, there were two approaches to coordinating communications among individual groupware widgets.The first approach is to have the coordination handled by the CSCW applications. This inevitably complicates the application logistics and limits the reuse of groupware widgets. The second approach is to provide a set of generic groupware widgets with built-in logistics for communications among individual widgets. However, pre-built groupware widgets may not be easily customized to suit the various needs of users. Generic groupware widgets tend to be bulky and accompanied by a lot of unused features. In practice, many groupware widgets mirror the functionality of their single-user counterparts except for the additional logistics to synchronize shared properties.In this paper, we propose a framework allowing these groupware widgets to be transformed from their single-user counterparts. The framework enables single-user widgets to register their connections to a separate notification server. After registration, these widgets become groupware widgets. The notification server uses the registered connections to update widgets of the changes in shared properties using a callback mechanism. Widget designers only need to determine the set of properties by which a group of widgets should be synchronized and to what extent they are synchronized. These properties collectively define the coupling among a group of widgets.The coupling is kept as a coupling portfolio in the notification server. Dynamic modification of coupling portfolios is supported by on-the-fly reconfiguration of multicast groups. Our framework is useful to simplify the client implementation of handling synchronization events and reduce the overheads of processing these events. These concepts are illustrated using a groupware web browser.