+ All Categories
Home > Documents > Building Real-Time Groupware with GroupKit, A Groupware...

Building Real-Time Groupware with GroupKit, A Groupware...

Date post: 06-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
41
Building Real-Time Groupware with GroupKit, A Groupware Toolkit MARK ROSEMAN and SAUL GREENBERG University of Calgary This article presents an overview of GroupKit, a groupware toolkit that lets developersbuild applications for synchronous and distributed computer-based conferencing. GroupKit was constructedfrom our belief that programminggroupware should be only slightly harder than building functionally similar single-user systems. We have been able to significantly reduce the implementationcomplexity of groupware through the key features that comprise Group- Kit. A runtinw infia.structure automatically manages the creation, interconnection, and communications of the distnbutsd processes that comprise conference sessions. A set of groupware programming abstractions allows developers to control the behavior of distributed processes,to take action on state changes, and to share relevant data. Groupwarewidgets let interface features of value to conference participants to be easily added t.a groupware applications. Session managers —interfaces that let people create and manage their meet- inge—aredecoupledfrom groupware applicationsand are built by developersta accommodate the group’s working style. Example GroupKit applicationsin a variety of domains have been implementedwith only modest effort. Categories and Subject Descriptors:D.2.2 [Software Engineering]: Tools and Techniquee— user inte~aces; D.3.3 [Programming Languages]: LanguageConstmcts and Features;D.4.1 [Operating Systems]: Organization and Design-interactive systems;H.5.2 [Information Interfaces and Presentation]: User Interfaces-user interface management systems; H.5.3 [Information Interfaces and presentation]: Group and OrganizationInterfaces-synchro- nous interaction General Terms: Human Factors Additional Key Words and Phrases: Computer-supportedcooperativework, GroupKit, group- ware toolkits, synchronous groupware, user interface toolkits 1. INTRODUCTION Over the last few years, we have been designing groupware for synchronous distributed conferencing, where two or more distance-separated people work on a shared task in real time. Our first system, called Share [Greenberg 19901, allovved participants in a distributed meeting to take This research was supported in part by the National Sciences and Engineering Research Council of Canada and by Intel Corporation. Authors’ address: Department of Computer Science, University of Calgary, Calgary, Alberta T2N 1N4, Canada; email: [roseman; saul]@cpsc.ucalgary .ca. Permission to make digital/hard copy of part or all of thie work for personal or classroom use is granted without fee provided that the copies are not made or distributed for profit or commercial advantage, the copyright notice, the title of the publication, and its date appear, and notice ie given that copying is by permission of the ACM, Inc. To copy otherwise, to republieh, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. @ 1996ACM 1073-0516/96/0300-0066$03.50 ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996, Pages 66-106.
Transcript
Page 1: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

Building Real-Time Groupware withGroupKit, A Groupware Toolkit

MARK ROSEMAN and SAUL GREENBERG

University of Calgary

This article presentsan overview of GroupKit, a groupware toolkit that lets developersbuildapplications for synchronous and distributed computer-based conferencing. GroupKit wasconstructedfrom our belief that programminggroupwareshould be only slightly harder thanbuilding functionally similar single-user systems. We have been able to significantly reducethe implementationcomplexity of groupware through the key features that comprise Group-Kit. A runtinw infia.structure automatically manages the creation, interconnection, andcommunications of the distnbutsd processes that comprise conference sessions. A set ofgroupware programming abstractions allows developersto control the behavior of distributedprocesses,to take action on state changes,and to share relevant data. Groupwarewidgets letinterface features of value to conference participants to be easily added t.a groupwareapplications. Session managers —interfaces that let people create and manage their meet-inge—aredecoupledfrom groupwareapplicationsand are built by developersta accommodatethe group’s working style. Example GroupKit applicationsin a variety of domainshave beenimplementedwith only modest effort.

Categoriesand Subject Descriptors:D.2.2 [Software Engineering]: Tools and Techniquee—user inte~aces; D.3.3 [Programming Languages]: LanguageConstmcts and Features;D.4.1[Operating Systems]: Organization and Design-interactive systems;H.5.2 [InformationInterfaces and Presentation]: User Interfaces-user interface management systems; H.5.3

[Information Interfaces and presentation]: Group and OrganizationInterfaces-synchro-nous interaction

GeneralTerms: HumanFactors

Additional Key Words and Phrases: Computer-supportedcooperativework, GroupKit,group-ware toolkits, synchronous groupware, user interface toolkits

1. INTRODUCTION

Over the last few years, we have been designing groupware for synchronousdistributed conferencing, where two or more distance-separated peoplework on a shared task in real time. Our first system, called Share

[Greenberg 19901, allovved participants in a distributed meeting to take

This research was supported in part by the National Sciences and Engineering ResearchCouncil of Canada and by Intel Corporation.Authors’ address: Department of Computer Science, University of Calgary, Calgary, AlbertaT2N 1N4, Canada; email: [roseman; saul]@cpsc.ucalgary .ca.Permission to make digital/hard copy of part or all of thie work for personal or classroom useis granted without fee provided that the copies are not made or distributed for profit orcommercial advantage, the copyright notice, the title of the publication, and its date appear,and notice ie given that copying is by permission of the ACM, Inc. To copy otherwise, torepublieh, to post on servers, or to redistribute to lists, requires prior specific permissionand/or a fee.@ 1996ACM 1073-0516/96/0300-0066$03.50

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996, Pages 66-106.

Page 2: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 67

Table I. Core Requirements for a Groupware Toolkit

Design Requirement Rationale ExamplesUser Cerriered

Support multiuser Many groupware applications can be seen as ●Tele~intersactions and shared work surfaces, and stttdies (e.g., Tang ●GraphicsdAnnotationsawareness of [1991], Gutwin and Greenberg [1995], and ●Muhiuser Scrolkrarsothers over a Dourish and Bellotti [1992]) have attemptedto ●Gestalt Viewsvisual work cbaracteti some of tfteproperties necessarytosurface. support collaborativework. .%q.prdng tkse in

a toolkit can encourage developers to build moreusable applications.

Provide stqymrtfor structuringgroup processesbut do so in aflexible enoughfashion to accom-modatethedlverscneeds of differentgroups.

Rather than adopt a single model for how groups Different Polia”esfor:should interact, a toolkit should provide a range .Floor Controlof facilities to support the needa and working ●-ion M~~styles of different groups, while allowing appli- .Acceaa to Conferencescation develops to extend these to support spe- .Treatrnent of Latemmeracific steeds [Greenberg 1591]. A toolkit shouldscs~rt buildhtg ap@icationsrelying on eitheraocmtprotocols orhrghly stmctured andautomatedproceaa models.

Integrate group- -are shouldnotpme a barria to ‘Wvidual” .Shared Terminalswarewith waysof doing work, but instead it should be ●Te@hone Linksconventional antooUdyintegrated [ItiI andKotsayashi19%2]. .Videa Conferencirsgways of doing Access to both single-user applications or evenwork. aoncomputer reaortrces [Iabii 195X)]is important,

as is the avaiiabifityof traditiorudcommunicationrne&srns.

Programmer Centered

Provide technical Groupware systems are composedof multiple ●Session Managementsupport to deal processes that mmsnurricateover a network, ● process Creationwith multiple and toolkits can augment the operating-system- ● Locate Other Processesdistributed level support by simplifyhrg creation, inter- .Multicaat Abstractionsproceaaes. comection, and teardown of the processes. A W%aion Persistence

toolkit can also provide cmntnuntcations models ●Meaaage SdsLzstionami concurrencycontrol smclsartismathat abstract and Data LQckingaway from the operating system.

Provide support Dim-ibutedgroupware shouldalso be able to share ●Shared Environmentsfor shared data. its commondata easily and shmddbe able to &lezt ●Data serialization

and take action when data are changed. Concar- and LOCkingrency control should b available to kee data

!?!●BirtchtgCaflbacks to

consistent [Greenberg ad Marwood 1 4]. Environment Events

Provide support Sin@ many groupware??

Iicatioas can k seen ●Sbared Graphicsfor shared data as shared visual work au aces, a toolkit ahoutd and Primitivesand an extensible supportthecreationandrtsanipulatkmof bothgemric K)bj@_-shared-gmphics ad qsplication-specificobjectson a graphicalworkmodel. surface. paradigmssuch as Abs&acdon-Link-View ●SepamteView fmar

[Patterson 1991]can be supported by the toolkit Objezt Representationto facilitate this.

turns sharing unaltered single-user applications; group interaction was ‘mediated by choosing from a variety of flexible floor control mechanismsto best match the particular style of the meeting [Greenberg 1991]. Wethen built several groupware equivalents of paint and structured draw-ing programs [Greenberg et al. 1992]. GroupSketch was a minimalistbitmapped sketchpad, where all users saw exactly the same things ontheir display, FMwell as the multiple pointers of other participants. X/Group-Sketih was a second-generation version that, among its additional features,

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996

Page 3: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

68 ● M. Roseman and S. Greenberg

allowed participants to view different parts of the document. GroupDraw wasa prototype of a structured drawing application, where participants couldjointly manipulate a variety of objects, such as lines and rectangles, on theirdisplay.

Building groupware proved a frustrating experience. Implementing eventhe simplest systems was a lengthy process, as much time was spentinventing similar ideas over and over again. Some of the common tasks ofthe programmer included the following items. The setup and managementof distributed processes had to be arranged. Interprocess communicationlinks had to be established. Actions between processes had to be coordi-nated and their internal states updated as people interacted with thesystem. Similar interface components had to be reimplemented to providefor generic group needs. Session managers had to be supplied so thatpeople could create, monitor, and enter the conferences.

Consequently, we decided h implement a groupware toolkit to supportprogramming of synchronous and distributed computer-based conferencingsystems. Our motivation for this project was our belief that:

A developer using a well-designed toolkit should find it only slightlyharder to program usable groupware systems when compared to theeffort required to program an equivalent single-user system.

We took the tasks common to almost all groupware programming (notedearlier) and transformed them into a set of core user and programmer-centered requirements for a groupware toolkit. These are summarized inTable 1 and are described in more detail elsewhere [Roseman and Green-berg 19921. The table also lists the rationale behind the requirements.From these requirements, we believed that a tiolkit could reduce imple-mentation complexity by providing the following generic features:

—A runtime infrastructure would automatically create processes and man-age their interconnections and communications.

—A simple set of groupware programming abstractions, built on top of a

conventional language and GUI toolkit, would be available to groupwaredevelopers. Primitives would include remote procedure calls betweenapplication instances, sharing of data, and generation and tracking ofconferencing events.

—A set of groupware widgets would let developers easily add genericinterface constructs of value to conference participants, resulting inbetter and more usable groupware systems.

-Session management, the mechanism by which people create and managemeetings, would be handled separately from the groupware applications.Primitives for constructing different session managers would be availablefor developers wishing to create custom interfaces that suit the particu-lar needs of a group.

The result of our efforts is GroupKit, a toolkit whose design has beenevolving over several years. The first generation of GroupKit, developed in

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 4: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 69

C++ and InterViews [Linton et al, 1989], has been described in a previouspaper [Roseman and Greenberg 1992]. Based on our experiences with thatsystem, we constructed a second-generation version that has proven to bean even richer platform for developing groupware. Readers familiar withthe earlier work should find that the version described here both general-izes and extends the earlier system.

GroupKit and its applications still run on Unix workstations under anXl 1 environment. However, the system now uses the interpreted Tcllanguage and Tk interface toolkit [Ousterhout 1994] and the Tc1-DP socketextensions [Smith et al. 1993]. GroupKit developers build their applicationsusing Tcl/Tk as well as the extensions provided by our toolkit. GroupKitand the underlying systems are all freely available via anonymous ftp;details are provided at the end of this article. 1

The article begins with an overview of GroupKit. It shows both how anend-user sees systems constructed with the toolkit and what a GroupKitprogram looks like. Subsequent sections detail GroupKit’s features—itsruntime infrastructure, its groupware programming abstractions, the set ofgroupware widgets, and its session management. These sections show howsome of these features work in practice by including both screen snapshotsand code fragments from existing applications. The examples also illustratethe wide variety of systems that can be built in GroupKit. The article thenevaluates GroupKit by examining the effort required to build groupwareapplications in it. It closes by comparing GroupKit to other groupwaretoolkits. A video is also available [Greenberg and Roseman 1994] thatcaptures the dynamics of many of the screen snapshots described in thisarticle.

2. OVERVIEW

Before delving into technical details, it is worth getting an overall feel forGroupKit. To set the scene, this section begins by showing what end-usersof programs built in GroupKit may see. It then takes the developer’s view,by tracing through a simple GroupKit program.

The scenarios presume that users’ computers are running X Windowswithin a Unix environment, that computers are interconnected usingTCP/IP protocol over the Internet, and that the GroupKit software hasbeen installed. Users may be located anywhere on the lnternet as long astheir network connection does not suffer excessive latency (which wouldcompromise interactive performance of some applications). Because Group-Kit can run in most Unix systems, the actual machine type does notmatter.z

‘ All the systems that comprise GroupKit are under active development, with new versions ofsoftware appearing periodically. This article is mostly based upon GroupKit 3.1, Tcl 7.4, Tk4.0, and Tc1-DP 3.2.z For example, GroupKit has been successfully installed on Sun, HP, RS6000, and SiliconGraphics workstations as well as PCs running Linux.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 5: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

70 ● M. Roseman and S. Greenberg

(%tmmi?S w&@Rms

Design Sasslal I.Ma TmI$ctnw(M Gulwln

Yuu an% IsaulGreenberg

Fig. 1. The Open Registration session manager: two conference sessions are shown, withthree participantspresent in the PostIt conference.

2.1 An Example of an End-User’s View of GroupKit

This section walks through an example GroupKit session, where we will seea user monitoring conferences in progress, joining two existing conferences,and then creating a new conference. Although the scenario illustratesactual systems provided in the GroupKit release, it is important to remem-ber that these are just examples of systems that programmers could buildwith the toolkit.

First, the user (Saul) invokes a session manager, in this case the “OpenRegistration” manager (Figure 1). In the “Conferences” pane, Saul sees thattwo conferences are in progress: “PostIt” and “Design Session.” By selectingone of them, he can then see who is in a particular conference (the list inthe “Participants” pane).

Next, Saul joins the “Postlt” conference by double clicking its name,which adds him to the list of participants. The PostIt Editor then appearson his display (Figure 2, left window). With this simple GroupKit applica-tion, he can type a short message and send it to one or more participants.The selected participants will see the message appear in a pop-up window.In Saul’s work community, everyone uses PostIt to see who is available andto invite people into conferences. Shortly after joining, Saul receives aPostIt message from Linda inviting him to join the “Design Session”conference (Figure 2, right window).

Saul joins the “Design Session” conference via the session manager, andGroupSketch, a multiuser sketchpad that allows simultaneous drawing, thenappears on his display (Figure 3). lt contains the group drawing being workedon, as well as the teleprinters of the other participants. The voice connection ismade through a telephone conference call. ~er discussing the figure, Saulleaves the conference by selecting the “Quit” option from the “File” menu.

A bit later on, Saul receives a phone call from his colleague Judy, whowishes to discuss a document. Saul decides to create a new conference thatruns the FileViewer. This application provides a relaxed what-you-see-is-

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996,

Page 6: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 71

(l’hu Feb S16#1211SSS)

Hey, Saul. can you join the Design Session?We have some ideas for the figure youwanted...

Our conference call phone number is220-6067

w q;.l;$yx;~c? & 5+.- ,:*.*, k.rti S.,. *9

. . . . . . . .

, ~ , ~

r YOIIXSCH

r M6rk ROSUXMII

I_ LindaTauschcr

r cdchmh

clearNote Rsautl

Fig. 2. The PostIt application: notes are created through the PoatIt Editor and received as aPostIt Note.

what-I-see (WYSIWIS) view of a text document3 and displays multiuserscroll bars showing what each person is able to see. From the “Conferences”pull-down menu in the session manager (Figure 1), he selects “File Viewer”from the many applications listed, which adds its name to the Conferencespane in every session manager. FileViewer appears on his display, and hethen selects a file to view in it. Judy joins the conference, and they continuetheir discussion around the shared view (Figure 4).

This scenario illustrates several important points about GroupKit.

—GroupKit supports real-time distributed multipoint conferences betweenmany users.

—GroupKit systems include both session managers for managing confer-ences, such as the Open Registration system in Figure 1, and confer-ence applications which are the actual groupware tools, as shown bythe PostIt, GroupSketch, and FileViewer applications in Figures 2, 3,and 4.

—Groupware designers can build session managers that match theworking styles of their audience and organization. The “Open Regis-tration” system illustrated here is one that presents a free-for-allpolicy on session management; other examples are presented later inthis article.

—GroupKit is a generic toolkit, in that a variety of conference applica-

9In strictWYSIWISsystems, all users see exactly the same thing on their displays, In relaxedWYSIWIS, users may have different viewports into the shared workspace andlor differentrepresentations of their contents [Stefik et al. 1987].

ACM Transactions on Computer-Humsn Interaction, Vol. 3, No. 1, March 1996.

Page 7: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

72 ● M. Roseman and S. Greenberg

Fig. 3. The GroupSketch multiuser sketching application, showing the shared drawing, localcursor, and two remote teleprinter widgets.

m ~~ HOroupKlt 3.0 relies on Tc17, 3, ‘IX3. 6, and Tcl-DP3. 2. Obtain andinetall each of these packages (for assistance coneult the Tcl m

FA9, posted regularly to comp. lang. tcl, or contact ua and ve’ I.1point you in the right direction)

unpack QroupKit from the srme directory containing TCL Z% and Tcl-Run the conf@ure ecrlpt to create a Ifakaflle eultablefor your ayetem. If you plan on installing 6roupXit anyvhere other [W

Fig. 4. The FileViewer relaxed WYSHNIS application, showing the multiuser scrollbarwidget.

tions relying on either text or graphics can be built. Other exampleapplications are illustrated in later sections.

—GroupKit is not a media space system. Although we strongly believethat voice communication is necessary for most real-time interaction,GroupKit does not directly support audio or video conferencing. Fornow, we expect users to use other systems, such as telephones. Option-ally, an application programmer could have GroupKit automatically invokean external computer-based audio/video system as a GroupKit conferencewhenever a conference connection is made.4

4GroupKit could be extended to provide direct multimedia communications. We decidedagainst this because: (a) we did not have the resources to duplicate existing work in mediaspaces; (b) it would make GroupKit both platform and hardware dependent; (c) GroupKit’s

ACM Transactions on Computer-Humsn Interaction, Vol. 3, No. 1, March 1996.

Page 8: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 73

2.2 A Developer’s View of GroupKit: An Example Program

The preceding section illustrated what an end-user of GroupKit may see.This section presents an application developer’s point of view, by walkingthrough a complete groupware application called “hello world.” Eventhough it is a simple example (in keeping with its genre), it is far fromtrivial. Not only does it demonstrate several important GroupKit con-structs, it is probably the only “hello world” program that actually sayshello to the world!

Every participant in a “hello world” conference runs his or her own copyof the program. Each person sees a window on his or her screen containinga button labeled “Hello World” (Figure 5, top). When any user presses thebutton, the buttons on all participants’ screens are changed to displaybriefly a greeting from the user who pressed the button. For example, ifMark Roseman pressed the button, all participants would see “MarkRoseman says hello!” (Figure 5, bottom).

To create this GroupKit conference, the application programmer wouldneed to write a program similar to that shown in the following code. Most ofthe code is standard Tcl/Tk concerned with providing the user interface;only the parts in bold signify the GroupKit code needed to make theprogram group-aware.

1 gk.initConf $argv2 gk.defaultMenu .menubar3 pack .menubar -side top -fill x4 set greetings “[users Iocal.uaemame] says hello!”5 button hello -text “Hello World” \

-command “gk-toAll say–hi Y$greetingsY”6 pack hello -side top7 proc say-hi {new-label} {8 hello configure -text $new–-label9 after 2000 (hello configure -text “Hello World”}10 }

Line 1 initializes the application and asks GroupKit’s runtime architec-ture to automatically manage such things as maintaining socket connec-tions between this local process and the copies being run on the otherparticipants’ workstations.

Line 2 creates GroupKit’s default menu bar, a widget that providesaccess to some generic groupware facilities (other widgets are discussed inSection 5). It gives the participant the ability to leave the conferencegracefully (a “Quit” option in the File menu), lets them see what otherconference participants are present (a “Participants” option in the Collabo-ration menu), and provides access to help topics (the Help menu). Line 3calls the standard Tk function that places the widget at the top of thewindow.

ability to invoke existing online audio/video systems appeared to be a reasonable compromise;and (d) the telephone company already supplies an excellent audio channel, which suffices formany situations.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 9: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

74 . M. Roseman and S. Greenberg

L gk_toAU “say_hi

Fig. 5. The Hello World applicationrunning on two displays.The sequenceof eventashowsthe procedure“say-hi” being multicast to all replicated processes.

In line 4, we create a string (called greetings) that will serve as a messagefrom the local participant, e.g., “Mark Roseman says hello!” This linequeries a special data structure provided by GroupKit called an erzvirorz-ment that maintains information about local and remote users. In this case,the code within the square brackets asks the environment to return thename of the local user, which is used to construct the string. Environmentshave other features and are discussed further in Section 4.3.

Lines 5-6 create a standard Tk button, initially giving it the label “HelloWorld.” The GroupKit function gk–toAll is attached to it as a callback and isexecuted when the button is pressed by the user. This procedure is anudticast remote procedure call (Section 4.1) that arranges for other func-tions (in this case the procedure say–hi) to be executed not only on theworkstation where the button was pushed, but on the workstation of everyuser in the session. This sequence is illustrated in Figure 5.

Finally, lines 7–10 contain the say–hi procedure. Line 8 changes thebutton’s label to contain the procedure’s argument (the greetings), and line9 changes it back to “Hello World” after two seconds. When gk-toAllmulticasts the procedure execution, each person’s display will show thesame greetings message, as illustrated in Figure 5.

If we wanted to make this example slightly more sophisticated, we couldadd the following lines to the end of the program. This would automaticallychange the button’s text whenever a new user enters into the conference;for example, “Saul Greenberg just arrived!” would be displayed.

1-10 as above11 gk-bind newUserArrived {12 set new–user-name [users remote. ”AU.usemame]13 say-hi “$new-user-name just arrived!”14 }

ACM ‘1’ranaactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 10: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 75

These extra lines illustrate how developers can take advantage of eventsthat are automatically generated by GroupKit. Here, the developer asksthat some code be automatically executed whenever a new user enters theconference, as indicated by the newUserArrived event. In line 11, GroupKit’sgk–bind command attaches the code on the next two lines as a callback tothe newUserArrived event. When this event is triggered by the arrival of anew user, the code is executed locally. Line 12 will retrieve the name of thearriving user; in this case YoU indicates which user has arrived, and theenvironment query [users remote. ‘MoU. username] provides the name of thatuser.5 Line 13 calls the say-hi procedure, whose argument is now thearriving user’s name concatenated onto the string “just arrived! .“ Theinteraction between events and environments is discussed further in Sec-tions 4.2 and 4.3.

Finally, the program is made available to the session manager by editinga configuration file. All that has to be specified here is a default conferencename (e.g., Hello World) and the location of the program.

This program, simple as it is, illustrates several important points aboutdeveloping groupware in GroupKit.

—GroupKit’s conference applications are decoupled from session manage-ment. The developer does not have to worry about creating new processesor managing communication connections.

—Developers have access to information about the conference throughGroupKit’s environments data structure.

—Developers know that conference applications are executed as communi-cating replicated processes, one for each participant.

—Developers can synchronize GroupKit conferences through multicastremote procedure calls.

—GroupKit provides a suite of special groupware widgets which are easilyattached to a groupware program. These widgets encapsulate tools usefulto end-users.

—Developers can attach callbacks to groupware euents that allow them tonote and take action when, for example, people enter and leave confer-ences.

As the parts in boldface of the preceding program suggest, doing thegroupware “Hello World” program is only slightly harder than its equiva-lent single-user version.

3. THE RUNTIME INFRASTRUCTURE

One of the design requirements listed in Table I stated that a groupwaretoolkit should provide technical support for programmers dealing withmultiple distributed processes. We believe this is best satisfied by including

5 We designed the syntax of gk–bind and its use of a % (field) specification for retrievinginformation about events to be similar to Tk’s event-binding mechanism, making it familiar toTcl/Tk programmers.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 11: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

A Wbll-Known”Workstation

a.’

Mary

76 ● M. Roseman and S. Greenberg

GeoI@s Wotkatation May’s Workstation

Fig. 6. An example of GroupKit’s runtime process model.

a runtime infrastructure that actively manages these processes. Its respon-sibilities would include: process creation, location, interconnection, andteardown; communications setup such as socket handling and multicasting;and groupware-specific features such as providing the infrastructure forsession management and persistent conference sessions (Section 6). Thissection presents the actual runtime infrastructure supported by GroupKit.It describes the different types of processes GroupKit creates and main-tains and the interactions between them. Later sections introduce theprogramming abstractions supported by this infrastructure that are avail-able to developers.

GroupKit’s runtime infrastructure consists of a variety of distributedprocesses arranged across a number of machines. Figure 6 illustrates anexample of the processes running when two people are communicating witheach other through two conferences A and B. The three large boxesrepresent three workstations; the ovals are instances of processes runningon each machine; and the directed lines joining them indicate communica-tion paths. Three types of GroupKit processes are shown: registrar, sessionmanagers, and conference applications.

Registrar. The Registrar is the first process created in a GroupKitsession. There is usually one Registrar for a community of conference users,and its address is “well known” in that other processes know how to reachit. This is the only centralized process required by GroupKit’s runtimeinfrastructure.

When session manager processes are created, they connect to the Regis-trar. The Registrar maintains a list of all conferences and the users in eachconference. It thus serves as an initial contact point to locate existingconference processes. The Registrar itself does not have a policy on howconferences are created or deleted, nor on how users join or leave confer-ences. Rather, it is the session manager which directs the Registrar to add

ACM Transactions on Computsr-Human Interaction, Vol. 3, No. 1, March 1996.

Page 12: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 77

or delete conferences and users; if requested, the Registrar then relaysthese changes to other session managers.

Session Manager. The session manager is a replicated process, one perparticipant, that lets people create, delete, monitor, join, or leave confer-ences. The session manager provides both a user interface and a policydictating how conferences are created or deleted, how users are to enterand leave conferences, and how conference status is presented. We havealready seen the Open Registration manager in Figure 1; other quitedifferent managers can be created by the developer to suit differentregistration needs (see Section 6). Internally, session managers do notcommunicate with each other directly, but discover changes in conferencestate as information is propagated through the central list maintained bythe Registrar.

Conference Applications. A conference application is a GroupKit pro-gram and is invoked by the user through the session manager. Thisprogram, created by the application developer, is a groupware tool such asa shared editor, whiteboard, game, and so on. Conference applicationstypically work together as replicated processes, in that a copy of theprogram runs on each participant’s workstation.6 We call a process in-stance a conference process, and the set of conference processes workingtogether is called a conference session. Different types of conference ses-sions may be running at the same time, all managed by the user’s onesession manager.

Although the applications do not have to worry about low-level details ofsession management, they may wish to be notified via an event when somehigh-level session change does occur. They may also retrieve informationabout conference participants, which is maintained automatically byGroupKit. This was shown in the “Hello World” example, where eventstracked the arrival of a new user, and environments were used to retrieveboth the local user’s and an arriving user’s name.

Figure 6 illustrates these concepts. The centralized Registrar is runningon its own workstation, and its address is known to this particularGroupKit community. Two users, George and Mary, have each invokedtheir own session managers, such as the Open Registrar shown in Figure 1,which communicate to the Registrar. Mary has used her session managerto create conference session A, which spawns the actual conference Aprocess (e.g., the GroupSketch program). To track session events, hersession manager and conference process will maintain an internal commu-nication link to each other. George could then join that conference through

6 Although the conference processes that make up a conference session usually executethe same program, they can differ substantially as long as they are well behaved. That is, themessages, data, and remote procedure calls sent between the differing programs must beunderstandable and must produce a correct response (the same is true for replicas ofthe session manager). As an example, Section 4.3 illustrates how two different versions of the“Hello World” program can coexist.

ACM Transactions on Computer-Humsn Interaction, Vol. 3, No. 1, Msrch 1996.

Page 13: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

78 ● M. Roseman and S. Greenberg

his session manager, which creates a replicated copy of the conference Aprocess; a communication path between the two copies is automaticallyestablished. The other conference B (e.g., FileViewer) is established in asimilar fashion. Both Mary and George would each see three windows: theOpen Registrar session manager, GroupSketch (conference A), and File-Viewer (conference B).

This infrastructure is maintained entirely by GroupKit. The conferenceapplication code does not need to take any explicit action in processcreation or communication setup. Instead, as mentioned in Section 2.2, theapplication may just ask to be notified through an event when particularsession activities occur. The conference processes that comprise a confer-ence session can also coordinate with each other through the high-levelprogramming abstractions provided by GroupKit, as discussed in the nextsection.

4. GROUPKIT’S PROGRAMMING ABSTRACTIONS

The programmer-centered requirements in Table I state that a groupwaretoolkit should provide support for coordinating multiple distributed pro-cesses and for sharing data between them. ln GroupKit, common chores arehandled by the runtime infrastructure. However, application-specific de-mands are left in the hands of the developer to manage through GroupKit’sprogramming abstractions. Developers are aware that they are writingdistributed groupware programs, and it is their responsibility to make allconference processes in a conference session behave correctly, to take actionon state changes, and to share relevant data. A failure to do so can result indifferent processes having different state information, leading to inconsis-tencies and possible system failure. Developers can also use these abstrac-tions to code in appropriate levels of support for structuring a group’s workprocess, which satisfies one of the user-centered requirements in Table I.GroupKit provides the developer with three programming abstractions tosupport these tasks: multicast remote procedure calls, events, and environ-ments, as described next.

4.1 Multicast Remote Procedure Calls

One style of programming GroupKit applications relies heavily on a spe-cialized form of remote procedure calls (RPCS) to communicate, shareinformation, and trigger program execution between replicated applicationprocesses in a session. lntemally, GroupKit uses Tc1-DP’s RPC mechanismto send a Tcl command from the local process to a remote one, and toexecute it there as if it were called locally [Smith et al. 1993]. For thegroupware programmer, GroupKit abstracts these RPCS even further-firstby not requiring programmers to track the addresses or even the existence

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 14: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 79

m.——. ——— —.EqulprnantList.--.--------

mwerbuok S2rJM FenthnnS0Scsl Extemd ImvsLhuxSuftwamCD-ROM IhWe

-N

Fig. 7, The Brainstormer armlication: ideas are entered in the bottom and added when. .“return” is pressed.

of other application processes and second by automatically multicastingprocedures to some or all conference processes.7

The several forms of GroupKit RPC calls that are available to theprogrammer differ in to whom the messages are sent. The gk--toAll proce-dure, seen in the “Hello World” example, multicasts a procedure to allconference processes in the conference session, including the local user.This results in the same procedure being executed everywhere, which wasillustrated in Figure 5. The gk–toOthers procedure multicasts a commandexecution to all the remote conference processes in the session except thelocal process that generated the call. Finally, gk–toUserNum sends thecommand to the conference process of a particular user in the session. Inthis case the “address” is the unique user number of a conference partici-pant maintained internally by GroupKit and easily retrieved by the pro-grammer.

The multicast RPC paradigm is an effective way of turning a single-userapplication into a multiuser application. Imagine a brainstorming confer-ence, where users anonymously enter ideas by typing them into a text entrywidget and pressing return. The ideas are then appended to a shared listseen by all users (Figure 7). First consider the single-user case. A standardTcl./Tk procedure such as the following might be defined that inserts a newidea into our list:

1 proc insertldea idea {2 idealist insert end $idea3}

7 This is more than a cosmetic add-on to Tc1-DP. The conference’s runtime infrastructureinteracta with the session managers to locati conference processes of other users. It automat-ically creates and destroys the socket connections as users join and leave and hides detailssuch as the file descriptors attached to sockets. Instead, a GroupKit programmer is presentedwith a unique id number for each user, which is used to find information about that user andto relay requests to their processes.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1SS6.

Page 15: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

80 w M. Roseman and S. Greenberg

When executed, this would insert the idea (passed as an argument andheld in the idea variable) into the Tk text widget called idealist. Themultiuser version would just change line 2 to:

1 proc insertldea idea {2 gk-toAll “idealist insert end $idea”

3}

The difference here is that not only do we insert the idea into our own list,but we direct all other conference processes to insert the idea into their ownlists as well.

The other GroupKit RPCS give the programmer different capabilities andsomewhat more flexibility. For instance, gk-toOthers lets a programmertake different actions locally and remotely. Consider the preceding exam-ple. The programmer may wish to display local ideas (the ones entered bythe local participant) in blue and all remote ones (the ones entered by allother participants) in red. Assuming that a procedure insertColoredldea hasalready been defined that adds ideas to the list in an indicated color, wecould substitute line 2 in the original example for:

1 proc insertldea idea {2a insertColoredldea blue $idea #locally executed2b gk-toOthers “insertColoredIdea red $idea” #remotely executed

3}

Although simple, the multicast RPC model provides a powerful yetflexible approach to distributed programming. The programmer does nothave to know the addresses of other conference processes or track processcreation and destruction as people enter and leave the session; the callswork the same way whether one user or 20 users are in the conferencesession.

In the preceding brainstorming conference example, it is possible (al-though in practice quite rare) for ideas to be inserted into the lists indifferent orders. This is because the GroupKit RPC calls described so far donot guarantee that all sites will receive messages in the same order. This isfine for applications where messages are independent of each other or whenthe effects of out-of-order events are inconsequential [Greenberg and Mar-wood 1994]. When order is important, there is an additional gk-aeriaiizeRPC that works like gk-toAll, except that messages are serialized through acentral process (one of the conference processes), thus guaranteeing in-order delivery,

Finally, most of GroupKit’s RPCS are nonblocking. Once the request forremote procedure invocation is made, the program continues its executionwithout waiting for a reply from remote processes. We have taken thisapproach because we noticed that GroupKit programmers rarely require itsRPCS to return a value. This ensures that conference processes are notdelayed or blocked in the event of network latency or crashes on remotemachines. However, we have provided a blocking variant of gk-toUserNumthat waits for a value to be returned for the few times it is needed.

ACM ‘Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 16: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 81

Table H. Conference Application Events AutamaticaIly Generated by GroupKit

Event DescriptionnewUserArrived A newparticipanthasarrivedin the conference session

userl)eleted A participant has just left the conference session

updateEntrant A late entrant into the conference session needs updating

Programmerscanattachcallbacksto theevents if desired,

4.2 Events

Another abstraction in GroupKit is the event, which provides a way forconference applications to be notified when various things happen. Thesecan be events automatically generated by GroupKit, such as session eventsthat occur when participants join and leave the conference session, orcustom events created by an application developer. If an application wantsto take action on a specific event type, a callback can be created which isautomatically executed when the actual event is generated. This sectiondescribes both the event mechanism and the types of events generated byGroupKit. As will be seen, events are a critical component of severalschemes that GroupKit uses ta satisfy some of the requirements listed inTable I, e.g., flexible handling of latecomers, synchronizing distributedprocesses, and noticing changes to shared data.

An event consists of an event type and a set of attribute/value pairs thatprovide information about the event. The set of attributes of an eventdepends on its type. Programmers trap particular types of events throughan event handler or binding. Bindings are specified using the gk-bindcommand and take the form gk–bind [event-type] [action]. The actioncontains callback code that is executed when the event occurs. The event’sattributes can be accessed within this code using percent substitutions,which are modeled after Tk’s event mechanism. A simple example of its usewas already shown in lines 11–14 of the “Hello World” conference, and amore complex example is provided shortly.

GroupKit’s runtime infrastructure automatically sends three differentevent types to conference processes, as described in Table II. The first twoevent types are generated when users join and leave the session, as aconference process may want to take special action when this happens. Onesimple example was already shown in the “Hello World” program, wherearriving users caused a new message to be displayed in the button. Asanother illustration, consider TextChat, a multipoint “talk” application.Figure 8 shows its interface, where each conference participant has a tiledwindow on the display. When a participant types, the text is added intotheir particular window. For the conference session to behave correctly,each conference process must track the arrival of a new participant to theconference and create a tiled chat window to contain their text. In line 1 ofthe following code fragment, the programmer has created a binding via

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 17: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

82 ● M. Roseman and S. Greenberg

III&dKuosemlm I

Fig. 8. The TextChat application: windows show text typed by conference participants. Localuser’s text goes in top window.

gk-bind that gets called when a newUserArrived event is automaticallygenerated by an arriving user. When this event happens, the code on line 2is executed. Here, the identity of the arriving user is retrieved via ‘AU (theuser number of the arriving user is one of the attributes of this event), andthe programmer-defined callback makeChatWindow is invoked. When thecallback is executed (line 4) the window is created.

1 gk-bind newUserArrived {2 makeChatWindow ‘AU

3}4 proc makeChatWindow {usernum) {...} # Create the chat window

Similarly, each conference process would check for departing participantsand attach a callback that deletes their particular windows from the localdisplay.

The third event in Table H is used to handle latecomers to conferencesthat are already in progress. By monitoring the arrival of the latecomer, hisor her conference process can be brought up to date by one of the otherconference processes in the session, usually by sending it the existing stateof the conference. This event is automatically generated when the late-comer joins the conference. Unlike the other events, GroupKit’s runtimeinfrastructure sends it to only one of the conference processes in the

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996

Page 18: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 83

session, because only one should update the latecomer,8 For example, theGroupSketch program that was illustrated in Figure 3 attaches a bindingto this event that, when executed, will cause a single GroupSketch processto send the entire drawing to the latecomer as a display list. The TextChatprogram would use it to send the text contents of all the existing chatwindows, and the Brainstorming program would pass on the set of ideasgenerated so far. The “Hello World” program did not need to do anything,as all its replicas automatically return to the same basic state.

There is no generic way for a groupware toolkit to handle latecomers.Perhaps the conference just needs to bring the latecomer up to date, as inthe previous examples. Even so, the optimal strategy may depend on thetype of application. A complete transcript of all user activities since thestart of the session may be sent, or a snapshot of the current screen, or anabstract data model that can be used by the newcomer’s conference processto generate the display. Alternatively, the application could be a gamewhere the latecomer may be assigned a particular role that differs from theother players. As handling latecomers is application specific, GroupKitleaves the decision of how to handle the newcomer up to the programmer ofthe conference application.

Finally, application developers can generate their own custom events.This can be useful in more complex applications, where a change beinghandled in one part of the program can generate an event to notify otherparts of the program (or other processes) of the change. The end of Section4.3 illustrates how events can be used to propagate changes of programstate across applications.

4.3 Environments

While multicast RPCS and events can be used to coordinate conferencereplicas, GroupKit applications can also communicate via environments.Environments are a dictionary-style data structure containing kegs andassociated values. Instances of environments running within differentconference processes can communicate with each other. The net result isthat environments can provide a shared data structure (a requirement inTable I): changes to an environment in one conference process are propa-gated to the environment instances of the other processes. This sectiondescribes how environments work and provides an example applicationdemonstrating the programming paradigm they support.

For data structures, programmers store and retrieve related informationwithin an environment via a hierarchical key. For example, GroupKittracks information on all users in the session via the users environment,introduced in the previous code fragments. [users local] returns a recordabout the local user, and [users remote] is a record containing informationon all other participants. A record for a particular participant is retrieved

8 GroupKit’s mechanism for determining which process to send the event to is ratherarbitrary: it is the one identified by the lowest user number.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 19: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

84 . M. Roseman and S. Greenberg

by appending his or her unique user number, and actual values areretrieved by refining the hierarchical key even further; for example, [usersremote.3.username] returns the name of remote participant number 3.

GroupKit’s environments are more than a data structure. First they canact as active values. The programmer can bind callbacks—similar toGroupKit events—to an environment so as to receive notification when anew piece of information is added to it, when information is changed, orwhen information is removed. Second, environments can be shared so thata change in one conference process’ environment is propagated to the otherprocesses in the conference session. By combining sharing and eventgeneration, a change in one process’ environment can change the data in .others. Because the change generates events, the corresponding actions aretriggered at all sites.

GroupKit’s environments are an effective way to support the program-ming model advocated in part by Smalltalk’s model-view-controller[Kraemer and Pope 19881 and later by Patterson. Both argue for separat-ing the view of an object from its data representation. In the Rendezvoustoolkit, Patterson [199 1] encourages developers to create groupwareapplications using its abstraction-link-view (ALV) model, whose con-structs are:

—a shared underlying data abstraction,

—a view of the abstracted entity that may differ for each user, and

—a constraint (called a link) that automatically adjusts the view whenthe data abstraction is changed.

The power of this idea is that quite different views can be generated fromthe same data abstraction. In GroupKit, environments provide the under-lying abstraction; when changes to this environment are made—by local orremote users-events are generated. These events are monitored by theinterface code, which adjusts the view to reflect the state of the environ-ment. This effectively gives GroupKit part of its extensible and flexibleshared graphics model, helping it satisfy another of the requirements listedin Table I.

To see how this works in practice, here is a new version of “HelloWorld” where changes begin after line 3 of the original program. Theabstraction used is simply a variable that contains a greetings message.First, line 4 creates the message environment, and line 5 adds the keygreetings (initialized to the value “Hello World”) to the environment. The-bind option causes the environment to generate events whenever it isaltered, and the -share option propagates these changes to the corre-sponding environment in the other conference processes. Next, thebutton is defined as before on lines 6 and 7, except its callback onlychanges the contents of the greetings key. Line 9 attaches a binding tothe message environment (the “link” that is activated when its data

ACM ‘lkansactions on Computer-Human Interaction, Vol. 3, No. 1, March 199S,

Page 20: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 85

changes). g Lines 10–11, executed when the event is triggered, adjust theview to match the abstraction by changing the button’s label.

123456789101112

gk-initConf $argvgk_defaultMenu .menubarpack .menubar -side top -fill xgk-newenv -bind -share messagemessage greetings “Hello World”button hello -text “Hello World” \

-command {message greetings “[users Iocal.username] says hello!”}pack hello -side topmessage bind changeEnvlnfo

hello configure -text [message greetings]after 2000 {hello configure -text “Hello World”}

)

Different programs in a single conference session can now have differentviews on the same data abstraction. The following version of “Hello World”monitors what other participants are doing by creating a timestampedtranscript of all the greetings messages being passed around. It starts afterline 5 of the preceding version. Lines 6 and 7 create a standard Tk listboxthat will serve as a transcript. Line 8 creates the same binding, but nowthe code in lines 9-10 sets the view by first getting the time (via a Unixcommand) and the new greeting and then by inserting them at thebeginning of the transcript.

1-5 as above6 listbox transcript7 pack transcript8 message bind changeEnvlnfo {9 set text [concat [exec date + ‘%oH:VOM:VOS] “:” [message greetings]]10 transcript insert O $text11 }

One final concern with environments is concurrency control. As we haveargued elsewhere [Greenberg and Marwood 1994], we believe that concur-rency control needs are highly application dependent and that no onemechanism would suffice. We are now adding concurrency control intoGroupKit’s environments. The default is “no concurrency.” Although thismeans that environment replicas can get out of step with each other, thereare quite a few groupware situations where this matters little in practice,where the social protocol of the group can be used to minimize conflicts, orwhen the performance penalty is not worth the cost of undermining anapplication’s responsiveness [Greenberg and Marwood 1994]. Optionally,programmers can now serialize all changes to an environment, either bydirecting changes through a single conference process or through a sepa-rate, dedicated process. It is even possible for more ambitious programmersto extend environments with their own concurrency control policies; the

9 The event pattern changeEnvlnfo is generated whenever an environment’s existing attributesare changed. Other event patterns detect the addition of new attributes or deletions of oldones.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 21: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

86 ● M. Roseman and S. Greenberg

mechanisms to do so are described elsewhere [Roseman 19951. As our ownwork on environments progresses, we will add a variety of other concur-rency control policies, such as conservative and optimistic locking.

Using this programming paradigm, we have developed a simple struc-tured graphics editor, initially as a single-user system. Its environmentcontained the abstraction about the objects being edited. A user’s interac-tion resulted in changes to this environment, and changes were propagatedback to the view via the event mechanism. To convert this program to amultiuser application, we just had to add two lines of code initializingGroupKit and the flags to the environment declaration specifying it was tobe shared with other users in the session. The point here is that group-ware events and environments can, in some cases, almost eliminate the “coding differences between single and multiuser systems.

5. GROUPWARE WIDGETS

Along with the preceding programming abstractions, GroupKit providesdevelopers with a collection of multiuser groupware widgets that helpssatisfy many of the user-centered design requirements in Table I. UsingGroupKit’s widgets, the developer can easily add groupware features toapplications that conference participants will find valuable. GroupKit evenhas a rudimentary “class builder,” a widget kit that developers can use tocreate their own widgets or to extend Tk and GroupKit widgets.

Some researchers have created multiuser analogues of conventionalsingle-user widgets, such as buttons, menus, and simple text editors, andinvestigated how to make the sharing of widgets flexible enough to fitdifferent work situations. Interested readers are referred to Dewan’s [19911work on Suite, as well as work by Smith and Rodden [1993]. Although theirapproach is important, our research interests rest in widgets that supportactivities found only in group work. We are currently working on threeclasses of widget functionality: participant status, telepointers, and locationawareness.

5.1 Participant Status

As people enter and leave a conference, other participants should be able tosee their comings and goings, much in the same way that we can see peoplearrive into a room. Because these people may be strangers, it would behandy to find out some information about them.

GroupKit’s participants widget, illustrated in Figure 9, partially providesthis information. It lists all participants in the current conference session(left side). The list is dynamic and will automatically update as peopleenter and leave. When a participant is selected, information about them isdisplayed (the pop-up window on the right). This could include contactinformation (as shown), a picture of the person, and any other materialthat person wished to pass on about himself. This widget is easily added toany GroupKit application, and we also make it available to all end-usersthrough a menu selection in GroupKit’s menubar widget.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 22: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 87

l—’—”—in HelloWorld1[

lnfamatlm—a~

al~ShannonJaeger

+ sad &eenbcrg

~ MarkRoseman

okay

n%?

/nsmwm

Amess

Eh?d

Saul Greenberg

AssistantProfessor

Departmentof ComputerSI

Llniversltyof Calgary

Maths 8uildingMS-630

2500 UniversityDrive

Calgary, Alberta

Canada TZN 1N4

[email protected]

+1 4032206087— .. ......—

okayI

Fig. 9. The Participants widget.

We are now including within the participant widget (and GroupKit ingeneral) the ability to monitor the activity of participants. This includeswhether they are actively using their computers (and thus are more likelyto be available for real-time conversation) as well as the ability to see howwilling others are to receive calls. The rationale behind these features anda few non-GroupKit prototypes that we have built is discussed in Cockburnand Greenberg [1993].

5.2 Teleprinters

Studies of small face-to-face groups working together over a shared worksurface reveal that gesturing comprises about 35970of the group’s activities[Tang 19911. Gestures are a rich communication mechanism. Throughthem, participants indicate relations between the artifacts on the display,draw attention to particular artifacts, show intentions about what they areabout to do, suggest emotional reactions, and so on. In video-based group-ware, gestures are transmitted by actually showing hand movements overthe work surface [Ishii 1990; Tang and Minneman 1990]. Computationalgroupware systems typically use teleprinters (also known as multiplecursors) to provide a simpler but reasonably effective mechanism forcommunicating gestures [Hayne et al. 1994]. Unfortunately, modern win-dow systems are tied to the notion of a single cursor, and applicationdevelopers must go to great lengths (and suffer performance penalties) toimplement multiple cursors. They are usually implemented as graphicalobjects embedded within the application [Greenberg and Bohnet 1991], aswidgets or windows placed on top of the shared view, or as “overlay layers”[Beaudouin-Lafon and Karsenty 1992; Roseman and Greenberg 19921where the teleprinters are part of a transparent graphical layer that sitsabove the shared view layer.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 23: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

88 ● M. Roseman and S. Greenberg

The InterViews version of GroupKit implemented teleprinters throughoverlays, whereas the current Tcl/Tk version uses bitmap widgets that areplaced on top of particular widgets in the shared view. Regardless of theimplementation technique used, GroupKit’s teleprinters can be created andattached to the underlying widgets with two lines of code. For example,Figure 3 shows the teleprinters in a GroupSketch session. The local user’scursor is the normal one provided by the window system, and the tworemote users are (in this case) shown by the small circles. The code inGroupSketch that adds the teleprinters to the Tk canvas widget containingthe shared drawing surface is:

1 gk–initializeTelepointers2 gk-specializeWidgetTreeTelepointer ,canvas

GroupKit’s teleprinters can partially handle relaxed WYSIWIS displays.Instead of tying a teleprinter to a window, a programmer can attach it toparticular widgets and their children (this is the purpose of line 2). Theteleprinter is always drawn relative to the widget, rather than the applica-tion window. For example, we have built a tic-tac-toe game, motivated bythe one built in the Rendezvous toolkit [Hill et al. 1994]. Its relaxedJIMSIWIS view allows a participant to reposition his or her game board intheir application window without affecting the views of other participants.Even though the board may be in the upper right comer of one participant’sview and the lower left of another’s, the cursor will be drawn in the correctposition over the board.

We are now working on the idea of semantic cursors that are tied to thesemantics of what a person is doing rather than their relative location in ashared view. This is important for relaxed WYSIWIS displays, wherepeople have different views of a document. View difference could be amatter of spatial orientation (the location of items across displays differrelative to each other, as with the tic-tac-toe example), in representation(one person sees data as a graph, the other as a table), and in detail. Theidea is to show a person’s focus of attention in the same semantic locationon either display, perhaps with information being attached to the cursoritself to indicate what the other is doing. Although quite preliminary, it isour belief that semantic cursors will be a convenient way for participants tobe aware of what others are doing in relaxed WYSIWIS situations. Forexample, we have prototyped a relaxed WYSIWIS pop-up menu that usessemantic cursors to show others what menu items are being chosen. Tothe person using it, it behaves as a conventional menu; a mouse-clickover a menu button causes the pop-up to appear on the display, and amenu item is chosen from the list by selecting it. However, the otherparticipants only see the cursor move to and remain on top of the menubutton—the pop-up is not shown. Instead, a small label is attached tothe cursor that shows only the name of the particular menu item beingmoused over and/or selected. Other examples are shown in Gutwin et al.[19951.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 24: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 89

5.3 Location Awareness

One type of relaxed WWSIWIS in groupware allows participants to havedifferent viewports into the larger shared work surface. This is naturalfor real work sessions, for people often do individual work that theylater bring back to the group. In real life, we are kept aware of whatothers are doing, sometimes by speech, sometimes by seeing what othersare working on through our peripheral vision. This helps us coordinateour work. Because these cues may not be available in the groupwarechannel, we include two location awareness widgets in GroupKit thattell a participant where other people are working in the shared worksurface: multiuser scrollbars and gestalt viewers.

The multiuser scrollbar, which was illustrated on the right side ofFigure 4, is inspired by the one provided by the SASSE text editor

[13aecker et al. 19931. It supports collaborator awareness by indicatingthe relative locations of users within a large document. The right half ofthe scrollbar is a normal single-user scrollbar, allowing the user to movewithin the document. To its left is a vertical bar showing the relativelocation of each conference user, identified by a unique color. The nameof the bar’s owner can be displayed by mousing over the bar. The bar’sposition and size are continuously updated as participants scrollthrough the document or change their window size. Unlike SASSE’Sscrollbars which are built for a particular application, GroupKit’s multi-user scrollbars are generalized widgets that can be attached to anyscrollable object. The work required by the programmer is virtually thesame as using conventional Tk scrollbars, as they can be attachedthrough a single line of code.

The gestalt viewer, also inspired by SASSE, is similar in spirit to themultiuser scrollbars, but is much richer in function. It works by presentinga miniature of the document overlaid by colored boxes showing the actualviewport of each participant in the session (Figure 10). These boxes areactive interface objects, as the users can scroll to a new location bygrabbing and moving their boxes. The miniature provides structural cuesabout the document as well as participants’ locations, which could help auser better understand where their collaborators are and what they areworking on.

We are currently experimenting with other location awareness widgets.We are trying to generalize the notion of the gestalt viewer to a variety ofdocument types. We have also created a “what you see is what I do” schemethat shows a full-scale view of the area immediately surrounding anotherperson’s cursor (usually a subset of their view). We are also interested inawareness of changes on a shared view: one of our prototypes lets peoplereplay the significant stops in a person’s interaction over the view, andanother prototype highlights any changes that have occurred since theparticipant last attended the view. Details are provided in Gutwin andGreenberg [1995].

ACM Transactions on Computer-Human Interaction, VOI.3, No. 1, March 199S.

Page 25: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

90 ● M. Roseman and S. Greenberg

HE TRAGEDY OF HAMLET, PRINCE OF DENMARKy Wlnml StWcespem

- E

-

rwnstis mmolltm

ctmdius, l(hgofosnlwlc.Mwcslhm, Offksr.Hamlet, son to the fommr,

S?nlnaphew tothepmselltkingPbkmius, IDtd ~aHlwatb, friend taWmMt

~,s(lnto Wotllus

WtemmNt, cowtlerCmnelhU, cowtier~tz. clnwtkr

Fig. 10. The Gestalt Viewer widget: document on left is shown in miniature on right. Boxesrepresenteach participant’sviewport.

6. SESSION MANAGEMENT

Not only do GroupKit developers build conferences, but they can constructsession management interfaces as well. This is in sharp contrast to mosttoolkits that force a single (often rudimentary) session management inter-face onto its applications. As mentioned in Table I, a groupware toolkitshould provide support for structuring group processes in a flexible enoughfashion to accommodate the diverse needs of different groups. To show howthis requirement was applied to session management, and to show thevariety of session management policies that can be built, this sectiondescribes several different policies and their interfaces that have beenconstructed in GroupKit. It also outlines briefly how managers can beconstructed.

A session manager typically controls and presents an interface to thefollowing tasks:

-creating new conferences,—naming conferences,—deleting conferences,—locating existing conferences,—finding out who is in a conference,—joining people to conferences,—allowing people to leave them, and—deciding whether conferences persist when all users exit.

For example, the interface of the session manager could present these asexplicit steps that a user takes to begin and maintain the collaboration.

ACMTransactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 26: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 91

These could also be implicit actions, where (say) the act of jointly editing anartifact automatically initiates the collaboration [Edwards 1994].

Being able to provide different interfaces for session management is animportant aspect of supporting the working patterns of a group. Westrongly believe that one of the obstacles to groupware use is the difficultyof starting up a groupware session [Cockburn and Greenberg 1993]. Theobstacle may be in terms of usability (e.g., the system is difficult to initiate)or social (e. g., the policy the system imposes is not acceptable to the group).Session management must be more than an afterthought added to theapplication and should be tuned to the needs and collaboration patterns ofthe target user group. This is why GroupKit actively supports the develop-ment of session management systems by developers.

6.1 Example Session Managers

To illustrate the possibilities, this section briefly describes the policy andinterface of three session managers constructed in GroupKit. The first,using an open registration model, is well suited to informal collaborationsamong equal-status participants. The second example follows a facilitatormodel, where a facilitator manages the selection of tools for the users of,say, a group decision support system. The last example uses a roomsmetaphor and is more suited to sets of collaborative tasks that areintermixed over longer periods of time.

Open Registration. This manager has been described in previous sec-tions (Figure 1). Its interface supports a permissive policy of creating andjoining conferences, which seems well suited to collaborations betweenequal-status participants. It has two other features not mentioned previ-ously. First, a person can invite other people into a session via a menuoption. Second, a conference and its state can, upon request, persist afterthe last participant leaves it; if new people arrive or old ones reenter, theconference resumes where it left off. Alternatively, conferences can beautomatically deleted when the last participant leaves it. Persistent ses-sions are handled as part of GroupKit’s core and can be added to anysession manager (the following ones include it as well).

Centrally Facilitated. This pair of session managers is designed for astructured meeting controlled by a single person, the facilitator. Individualusers do not initiate or join conferences. Instead, the facilitator, throughhis or her session manager, controls the session by inviting participantsinto the session, by selecting appropriate tools for them (the groupwareapplications), and by activating the specific tools that a participant shouldsee on his or her display. Figure 11 shows the facilitator’s session manager(the upper window). The names of meeting participants are in the leftcolumn. By toggling the appropriate button in the table to the right, thefacilitator can selectively add or remove the tool to a participant’s display.The participant’s session manager, shown in the bottom window, is much

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 27: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

92 ● M. Roseman and S. Greenberg

1 bm WP

Mm -=in meetina War End Dlscussbn.

Fig. 11. The Centrally Facilitated session manager: facilitator’s control panel for managingsessions shown at top. Participants just receive notice that they are in the meeting.

simpler. It informs participants that they are in a particular meeting andlets them leave the conference. No other action is allowed,

Rooms-Based Session Management. The last example, illustrated inFigure 12, combines an open policy with a rooms-based metaphor. Userscan create virtual meeting rooms and stock them with meeting toolsthrough the pull-down menu options. Each room lists who is in it, whattools are running jhere, and shows the degree of privacy desired (via thedoor icon). If no one is in a room, the tools remain available as they aretreated as persistent conference sessions. People can freely move betweenrooms. When they enter a room they are joined to all the conferencing toolslocated in the room; when they leave the room, any tools used in the roomare left behind. This system could serve the needs of collaborators workingon many tasks over a period of time, allowing them to move easily betweentasks. It also serves as a meeting place, where people can see who is aroundin what room and converse with them after entering the room. An exampleof its use is illustrated in Figure 12, in which four rooms have been created.The seminar room has two people in it, running two applications; theirclosed door indicates that they do not wish to be disturbed. 10The lab roomhas two games going, although no one is currently in it. The tester room,which is completely empty, is a convenient place fo,rpeople to place and testsoftware being developed. The corridor is a special room that users enterwhen they first start the session manager.

10The ver8ion illu8tra~d presents the doors as a social cue, as the software does not s~P

people from entering even if the door is closed. This is a matter of personal philosophy, as webelieve that people are good at mediating their own social situations. If desired, the sofiwarecould be programmed to enforce the closed-door policy by disallowing new entrants.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 28: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 93

Fig. 12. The Rooms session manager: each room displays the users and applications in it, andthe door state provides a cue on how welcome others would be into its room.

We are now experimenting with other session managers. These include acall-based system, similar to the way people place telephone calls, and adocument-based manager, where groupware connections are triggered au-tomatically as people view and edit common documents.

6.2 Implementation of Session Managers

Building session managers in GroupKit is similar in style to buildingconferences. Session managers communicate with the central Registrar—and thereby with each other—to manipulate lists of active conferences andtheir users, GroupKit stores this information in environments, and changesto these environments generate events. Developers respond to events byproviding their own event handlers or bindings or by using GroupKit’sdefault handlers.

The event-based approach allows developers to define their own sessionmanagement policy, governing the actions taken when certain thingshappen. For example, when a local user tries to create a conference,GroupKit automatically generates an event indicating that a ‘user requestsa new conference.” The open registration policy previously discussed re-sponds by actually creating the conference and joining that user to it. Bytrapping events, event handlers can also ensure that the session manager’suser interface component is kept up to date when interesting thingshappen.

GroupKit’s session management facilities are based on open protocols, atechnique we have developed for building flexible groupware [Roseman andGreenberg 1993]. Briefly, a central server (the Registrar) provides a datastructure (replicated via the environments), but specifies no policy for how

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 29: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

94 ● M. Roseman and S. Greenberg

the data structure is to be used. Clients to the Registrar (the sessionmanagers) specify the policy by the selection of operations they perform.Maximum flexibility is achieved by providing open access to the Registrar’sdata structure via a protocol or interface of small but powerful operations(e.g., add or delete conference). Clients maybe different, as long as they arewell behaved with respect to each other and to the policy. For example, thetwo session managers used in the centrally facilitated example are pro-grammed to work well together. In contrast, if (1) a group mixed sessionmanagers and (2) one person created a conference using the open registra-tion system when others were using the centrally facilitated system (whichwas not designed to interact with it), the conference name would notappear on the facilitators list and therefore would be inaccessible.

Table III enumerates the handful of different session management eventsthat GroupKit will generate. The column on the right lists some of thedefault event handlers GroupKit provides to deal with these events. Differ-ent session managers will use these in different ways to create theirpolicies. The open registration system, for example, relies entirely on thesehandlers to implement its policy. Only a small percentage of its 175 lines(about 15 lines) is concerned with the policy, and the bulk of the systembuilds the user interface for that policy, and tracks what events should bedisplayed to the user (largely via monitoring “approved” events). Thecomplexity of the facilitated manager is comparable to the open registra-tion system. In contrast, the rooms-based manager is more complex.Although it builds upon the event handler structure, its developer had toadd extra data structures to maintain information on the rooms into itspolicy section.

7. DISCUSSION

We began this article by claiming that a developer using a well-designedtoolkit should find it only slightly harder to program groupware thanequivalent single-user systems. To see how GroupKit fared in this test, wetook the groupware applications that we had built and measured theircomplexity in terms of lines of code.11 Their names, length, and briefdescriptions are tabulated in Table IV. Comments, blank lines, and helpdocumentation (used by GroupKit’s on-line help widget) were removed fromthe count, leaving only the functional code.

‘1 Added complexity could have been measured by comparing GroupKit programs withsingle-user equivalents written in Tcb”l!k. However, such a measure proves misleading. Fkst,most of our programs are examples that show off groupware aspects and do not have theextensive application features that typically require many lines of conventional code. Becausewe believe that the amount of groupware-specific code will not increase linearly withconventional code, the size difference would be grossly exaggerated. Second, there are nosensible single-user equivalents of some of the programs we have developed. Third, if some ofthe programs were written with the proper separation of view from abstraction, there wouldbe little difference between the two (although this would require GroupKit’s environments,they could be programmed in a nonsharing mode, essentially a single-user extension toTcl/Tk).

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 30: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 95

Table III. Session Management Event and Handlers

Event Description GroupKlt-Provided HandlerfoundnewConf

newConfApproved

foundDeletedConf

foundNewUser

newUserApproved

foundDeletedUser

deleteUserApproved

lsstUserLetlConf

confen3nceDkd

A newconference hasbeen created

Approval of a newconference

An existing conferencehas beenremoved

Anewuserhasbeenaddedtoacortfenmce

Approvalof a new user

A um has Ietl a conference

Approval of a user deletion

The last user in a conferencehas letl

A conference process weCrt!atedhas terminatd

User asked for a rww

Add conferenceto localenvironmentandgeneratea newConfApprovedevent

None (can use to update interface)

Remove conference from local environmentand generate a deleteConfApproved event

Add userto the local environmentatxlgeneratea newUserAppmved event

None (can use to update interface)

Remove user from local environment andgenerate a de-kteUserAppmved event

None (can use to update interface)

None (session manager may choose to deletecotierence)

Tell the registrar to delete the local user fmmthe conference

C- the mqested mnferemceuaerRqueatNewConf

What is striking from the table is that all the programs, even those withreasonable functionality, are remarkably short, with the largest beingaround 300 lines long. As well, most took only a few hours to a few days tobuild. Although programming brevity is partly due to the simplicity ofbuilding interfaces in the Tcl/’I’k language, the point is that the groupwarecomponent of these programs did not increase their length unreasonably.Another telling point is that the original GroupSketch and 2UGroupSketchsystems, built without a groupware toolkit, each took about three monthsto program and were about 5000 lines long. The GroupKit version is only300 lines and took a few days to code. Complexity decreased by more thanan order of magnitude.

We also talked to application programmers-ourselves, others in ourgroup, and external people who had downloaded the software to their sites.Most found GroupKit relatively easy to learn, understand, and program.When stumbling blocks did occur, they tended to be in the “single-user”part of the application code. For example, the developer of the Tetrominosgame spent far more effort making Tk’s canvas objects flip and rotate thanmaking them group-aware. As another example, a group in Germany hadcreated a multiuser text editor with turn-taking; about two-fifths of this500-line program involved creating single-user controls for setting the localfont and text color of the editor.

Application programmers also found GroupKit’s programming abstrac-tions straightforward. GroupKit widgets are incorporated into the interfacein the same programming style as single-user widgets, and multicast RPCSare a natural extension of the way normal callbacks are used. In fact,

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 31: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

96 ● M. Roseman and S. Greenberg

Table IV. The Length of Sample Groupware Applications Built in GroupKit

Name nf Lines of. . ...Appli&ion cod-- DescriptionHelloWorld 10

Simple Sketchpad 30

GroupSketch 311

FlleVlewer 51

. .Mumndkt Brainstornw 19

Brainatormer 82

PoatIt 126

TextChat 140

Tic-Tac-Toe 152

Hyper 213

constraintswhencirclesan.mposr.

“tiomd.

Pressing a button changes its contents on all screens to displaythe person who pressed it (Figure 5).

A minimalist multiusersketchpadthatlets people sketchsimultaneously; includes pointers.

A stroke-based sketchpadthatincludes telepoitrtersdrawing,erasing, moving of lines, setting of colors and thickness, aodSaving/restoring images to files (Figure 3).

A relaxed WYSIWISfileviewer, with multiuser acrohra,plus the ability to load file4 into view (F&we 4).

A relaxed WYSIWIS braimtormirtg thcility for mmymouaentry of ideaa into a list.

An enhanced version of the tool above, with mrdtiuaeracroll-bars and tbe ability to save and load ideas to files (P@re 7).

A facility for creating smatl adhesive-style notes, for sendingthem to selected participants in a conference, and for receivingIx%ea(F@re 2) .

A mukipoint text-baaed chat facility. The veraioo meaaurd isslightly simpler than tie one ahown in Figure 8, as it excludesthe ability to make custom text phrases

A replica of the Tic-Tac-Toe system built in the Rettdeavoustoolkit l-Hillet al. 1994], Players are assigred b roles of X,O, or observer, whose semanticsare enforced by tiresystem;the tmard cartbe orrdifferent locations on differerttscreens,and visual feedback of a player’s movement ia provided.

Att object-baaeddrawing package that lets people create circlesand link them with arrows. Arrow Iii are mamtahd bv

several single-user programs written in Tk were transformed into partiallygroup-aware versions merely by preffing their callbacks with gk-toAll. Forexample, TkSol, a thousand-line single-user solitaire game, was convertedto a partially group-aware version by a student at the University ofToronto. He modified 12 lines to include the gk-toAll RPC, added 1 line toinitialize GroupKit, and added 2 lines for telepointers.

Another person had developed a single-user microworld called Tur-boTurtle, an educational simulation environment used by learners toexplore Newtonian physics. A student experimented with the world bychanging its properties (gravity, fkiction, etc.) and seeing how this changedthe movement of a ball (the turtle). We challenged him to make Turbo-Turtle group-aware [Cockburn and Greenberg 1995a; 1995bl. He writes ofhis experiences:

I was honestly stunned by the simplicity of making TurboTurtle group-ware with GroupKit. Prior to actual coding, I was familiar with Group-Kit’s design infrastructure, and 1 was concerned that working with it wouldrequire a multilayered approach to group-awareness: demanding that someevents be communicated through the Registrar, some through the confer-

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 32: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 97

ence application, and so on. As it turned out, my (the programmer’s)interface to group-awareness facilities was highly “task oriented” andtherefore natural. For example, I had a procedure named do-bounce in thesingle-user application; to get everyone’s replicated application to “do abounce” I simply appended gk-toAll before the procedure name. All theproblems of handling the communications are, happily, entirely abstractedaway from the programmer, My experiences in adding dynamic updates ofthe system state for latecomers to a TurboTurtle session were equallypositive, similarly so for relaxed WWSIWIS components of the system. Forexample, I wanted to let one user view the turtle’s speed as a vector ofspeed and direction, while another to view it as the x and y components ofvelocity: this particular facility required no change to the original code,because, by default, local changes are not propagated to other users.

Mixed in with his praise is some criticism; some of the widgets (especiallyteleprinters) were somewhat fragile, and the groupware version of TurboTurtle performed more slowly than the single-user version. However, thisdoes not detract from the value of the programming abstractions used. Hecontinues . . .

For empirical evidence on the ease of using GroupKit, here’s a log of myexperience with modifying the original 1000 lines (or thereabout) of Turbo-Turtle. Most group-awareness facilities were added to the system in twodays of scattered attention (probably a total of three hours work). Theremaining facilities were added over another two days, adding approxi-mately three hours more. There are now a total of 80 lines that containsome element of GroupKit. Around 50 more lines were necessary toseparate accessing a value (due to the local user moving a slider, say) fromthe transmission of the value using gk–toAll. The cognitive difficulty ofreading the code is probably higher, but not significantly so.

Other people have commented favorably on GroupKit as a rapid prototyp-ing environment. In their evaluation of groupware toolkits, Urnes andNejabi [1994] say of GroupKit that “the combination of an interpretedlanguage together with good session management provided an invaluabletool for quick testing of ideas in a multi-user setting.” This is true in ourown experiences as well. The scripting language of Tcl/Tk together with therapid creation of groupware sessions keeps turnaround time for modifyingand testing code quite short. 12

These are encouraging signs, but programming with GroupKit’s abstrac-tions does not eliminate all groupware complexity. The programmer mustconsider the interaction between the processes that are being coordinatedby multicast RPCS, events, and shared environments; unconsidered sideeffects can cause the unexpected to happen. There is also a craft to usingGroupKit constructs effectively. Multicast RPCS usually demand that the

‘2 Urnes and Nejabi [1994] evalusted an earlier version of GroupKit. On the downside, theynoted that building relaxed WYSIWIS systems in GroupKit was nontrivial. However, theversion tested provided only multicast RPCS; we believe our recent addition of environmentsas a means to separate the view from the data significantly eases this programming task.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 33: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

98 ● M. Roseman and S. Greenberg

programmer consider what local actions should be taken and what vari-ables should be set before the procedure and arguments are multicast.Similarly, events and environments are at their best when conferenceapplications are written in a style similar to Smalltalk’s model-view-controller (e.g., Krasner and Pope [1988]) or Rendezvous’ abstraction-link-view model [Patterson 1991]. If problems do occur, debugging can bedifficult because the interaction between conference processes can benondeterministic and difficult to envisage. As well, programmers now havethe additional burden of updating latecomers. Although this has beenrelatively straightforward to do in many GroupKit applications, it doesrequire extra effort. Finally session managers, unlike applications, requirea fairly sophisticated knowledge of GroupKit’s architectural underpinningsand are thus harder to code.

Another problem is that GroupKit applications may suffer a performancepenalty if there is a high degree of parallel activity by users.

(1) In addition to responding to local user events and executing theappropriate callbacks, the processor now has to broadcast these eventsto other participants. It also has to handle incoming events from remoteparticipants, which triggers even more local callbacks.

(2) Latency and bandwidth restrictions in communication links can delaymessage communication; even though the local actions may be handledquickly, the delay can make the entire system seem slower.

(3) Because operating systems and programming languages are not de-signed with groupware in mind, some operations can be overly expen-sive. For example, GroupKit now implements its teleprinters as a Tklabel widget placed on top of other Tk widgets, which is an expensivegraphics operation. This would be vastly faster if the X window systemcontained a feature that could handle multiple cursors at the kernellevel. As another example, Tk’s programming model requires us toupdate all idle tasks in order to force processing of communicationpackets. Because this includes (perhaps unnecessary) screen updating,this too becomes an overly expensive operation.

However, none of these problems detracts from the versatility of theprogramming abstractions, and we believe that future incarnations ofGroupKit or similar toolkits combined with an operating system tuned togroupware demands could minimize these performance penalties.

As a final point, the ideas in GroupKit should be portable to othertoolkits. Indeed, many of its essential components were first realized inGroupKit 1.0 [Roseman and Greenberg 1992], which was implemented inthe C++ -based InterViews toolkit [Linton et al. 1989]. It was later rewrit-ten in Tcl/Tk with only modest effort. More recently, a member of our teambuilt a Smalltalk prototype that shared some of GroupKit’s features. Ofcourse, the difficulty of rewriting GroupKit will depend on the language.Tcl/Tk, for example, has the advantages of an easy-to-program scriptinglanguage and high-level widget set, whereas Tc1-DP eliminates much of thetedious coding of sockets. Still, other languages could provide programming

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996.

Page 34: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 99

advantages that Tcl/Tk lacks, such as support for threads, decent name-space management, and an object-oriented widget set with true inheritancecapabilities.

In summary, the ideas in GroupKit work. Although it is slightly harderto program groupware applications than single-user applications, the extraeffort required is quite reasonable.

8. RELATED WORK

This section relates GroupKit to a few of the ideas found in other group-ware toolkits. We warn that direct comparison between groupware toolkitscan be misleading, as many were built to address quite different problemsor were designed to emphasize different aspects of groupware construction.

We begin by considering toolkits that differ substantially from GroupKit.First, many groupware toolkits address disparate application domains. Forexample, the ConversationBuilder [Kaplan et al. 1992] and Strudel [Shep-herd et al. 1990] are used for constructing speech act protocols. Oval is usedto build semistructured messaging and information management systems[Malone et al. 19921. Lotus Notes, although not a programming toolkit, letspeople develop and tailor a wide variety of asynchronous applications(Lotus, Inc.]. Second, even toolkits within the domain of real-time interac-tion handle different niche problems. Shen and Dewan’s [1992] Suitetoolkit applies only to highly structured text objects and investigates howflexible access control mechanisms are incorporated into them. Knister andPrakash’s [1990] DistEdit provides groupware primitives that could beadded to existing single-user text editors to make them group aware.DistView, produced by the same group, is oriented toward a mostly strictWYSIWIS approach to sharing window components and underlying datavia an object replication scheme [Prakash and Shim 1994]. Smith andRodden’s [19931 SOL considers design features for making single-userwidgets shareable.

Examples of toolkits that do overlap somewhat with GroupKit areRendezvous [Hill et al. 1994], Weasel [Graham and Urnes 19921, Object-World [Tou et al. 1994], Share-Kit [Jahn 1994], and Conference Toolkit[Bonfiglio et al. 19891. Although it is beyond the scope of this article toreview these toolkits, GroupKit’s relation to some of their more prevalentideas are described in the following.

Multicast RPCS. Several systems use multicast RPCS (discussed inSection 4.1) as its sole programming abstraction. Share-Kit uses C and theUnix RPC mechanism to build its multicast layer, and its programmersmust register a procedure and its argument formats as an RPC and usespecial keywords to invoke them. In contrast, GroupKit lets any procedurebe executed as an RPC, which greatly minimizes housekeeping. The Con-ference Toolkit uses a routing table to let developers specify the routing ofdata between application instances. The equivalent control over routing isprovided in GroupKit through its gk-toOthers and gk–toUserNum calls.Unlike these toolkits, GroupKit provides other programming abstractions

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 19SS.

Page 35: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

100 . M. Roseman and S. Greenberg

as well (e.g., events and environments), and programmers can intermixthese styles according to application demands and personal preferences.

Separating the View from the Abstraction. Section 4.3 has alreadydiscussed how different views of an object can be generated from the samedata representation. In Rendezvous, programmers specify constraints(links) between the abstraction and view (the ALV model [Patterson 19911),and the system automatically propagates any changes between them.Similar to Rendezvous’ ALV model, the Chiron-1 user interface system hasabstract data types (abstractions), dispatchers (links), and views; however,a simpler event-based architecture rather than constraints is used topropagate changes [Taylor et al. 1994]. Although Chiron-1 was not explic-itly designed to be a groupware toolkit, a multiuser Tetris game wasdeveloped to show the flexibility of its architecture. In Weasel, program-mers use a special declarative language called RVL to specifi the relationsbetween abstractions and views, how views are customized, and the coordi-nation required. As mentioned, GroupKit uses events and environments tocoordinate views and environments, which probably involves more house-keeping than either ALV or RVL. Again, unlike Rendezvous and Weasel,GroupKit provides other programming abstractions (multicast RPCS) forgreater programming flexibility.

Replicated Objects. Groupware toolkits based upon object-oriented lan-guages typically promote the idea of object replication as their program-ming abstraction. For example, ObjectWorld gives application developers aspecial object called a shareable class. Objects that inherit from this classgain the ability to replicate themselves across application instances andacquire methods to send and receive messages between replicas. DistViewuses a somewhat similar approach to replicate data and views onto thatdata. Because GroupKit is not object oriented, it cannot do object replica-tion. We believe replicated objects are a useful programming abstractionand have even built a Smalltalk-based prototype of GroupKit called Gen.However, it is too early to tell if replicated objects should replace the otherprogramming abstractions, or just coexist with them.

Concurrency Control in Replicated Architectures. Because replicatedarchitectures are distributed systems, consistency maintenance betweenreplicas can be a problem. Some toolkits, such as Share-Kit and earlierversions of GroupKit, have no direct concurrency control whereas othersinclude some ability to handle it. For example, DistEdit uses atomicbroadcasts. ObjectWorld’s shareable objects have the ability to detectmessages that have arrived out of order and allow programmers to dononoptimistic locking. GroupKit currently supports an optional and rudi-mentary concurrency control in its environments and allows developers toadd new policies to suit their application. Because we believe that no oneconcurrency control approach works in groupware [Greenberg and Mar-wood 1994], environments will be extended to allow programmers to specify

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 1996

Page 36: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit c 101

the type of concurrency control they want (e.g., optimistic and nonoptimis-tic locking, serialization, etc. ).

Centralized Architectures. Some toolkits, notably Rendezvous, use acentralized architecture. This greatly simplifies and even eliminates prob-lems that crop up in replicated systems. These include making sure allsites have an up-to-date copy of the software and concurrency control. Thecost paid for centralization is performance, as the processor becomes thebottleneck when dealing with simultaneous update of many displays. Mostother toolkits use some form of replicated architecture, although central-ized components may be present (such as GroupKit’s Registrar).

Session Management. Most toolkits provide only rudimentary and hard-wired session management facilities. Share-Kit, for example, provides onlybasic connection facilities, although it does allow information about partic-ipants and about the session to be transmitted to others upon connection.There have been a few investigations into architectures for flexible sessionmanagement, e.g., Intermezzo [Edwards 1994], but these are not reallygroupware toolkits. Excepting GroupKit, we are not aware of any othertoolkit that lets programmers build both applications and session manag-ers, and that separate the two concepts.

Interface Widgets. Although many standalone and toolkit-based group-ware applications contain ideas that could influence widgets, only a fewsystems have developed them as reusable multiuser widgets. Smith andRodden’s [1993] “shared interface object layer” SOL is a notable exception(although it is an architectural layer rather than a toolkit). They consid-ered how shareable versions of single-user widgets such as buttons and textentry fields can be created. Like Shen and Dewan [19921, they concentratedon providing a set of generic access control mechanisms that determinewhat people could do with these shareable objects. Settable options includewho can see it, who can use it, who can move it, and so on. While this kindof capability could (and should) be added to GroupKit, our research interestis toward designing quite different widgets that support particular aspectsof group work.

The preceding list is not complete. For example, toolkit comparisonscould have been made contrasting the support provided for security,privacy, and access control; robustness, fault tolerance, and performance;capabilities for particular application domains and interface situations;portability and familiarity of the underlying platform and programminglanguage; debugging support; provisions of interface builders, and so on(e.g., see LJrnes and Nejabi [19941 for other comparative features).

Virtually all toolkits, including GroupKit, are incapable of handling allthe listed features. Most are just prototypes used to explore different ideas,abstractions, and architectures. As a result, we do not consider any onetoolkit better or worse than another, as it depends on what the evaluatorwants. The current set of toolkits are best considered as “breakthrough”systems that will influence the next generation of toolkits.

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 19S6.

Page 37: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

102 ● M. Roseman and S. Greenberg

9. SUMMARY

This article presented an overview of GroupKit, highlighting the corerequirements behind its design and its key features. lts runtime infrastruc-ture automatically manages the creation, interconnection, and communica-tions of the distributed processes that comprise conference sessions. Itsprogramming abstractions allow developers to control the behavior ofdistributed processes, to take action on state changes, and to share relevantdata. Its set of easy-to-add groupware widgets encapsulate informationvaluable to conference participants. Its session managers are decoupledfrom groupware applications and are built by developers to accommodatethe group’s working style. Examples of both code and GroupKit applica-tions were used to illustrate these features and to show that the effortrequired to build groupware using the toolkit is quite reasonable.

We believe that we are well on the way to understanding what toolkitsshould provide to groupware programmers, but there is still much left to doin GroupKit. In Table 1 and in our original paper on GroupKit [Rosemanand Greenberg 1992], we listed a variety of requirements from both theuser-centered and programmer-centered point of view. Some of these re-main unimplemented. For example, we still believe that the toolkit shouldbe integrated with other communication channels, such as conventionalvoice lines (telephones) and digital audiohdeo (once the format anddelivery mechanism become standardized and available on all platforms). Itshould also allow, or at least be capable of invoking, a system for sharingconventional single-user software. The toolkit should present all its capa-bilities, such as its widgets, its data objects, and its graphical objects, asfully group-aware structures; the programmer should not have to wastetime coercing single-user structures into multiuser ones. The toolkit shouldallow groupware sessions to go beyond the real-time barrier; we should beable to configure electronic meetings and who should be in them ahead oftime and have the meeting artifacts persist beyond a single session

[0’Grady and Greenberg 19941. Aside from our own ideas, there are alsothe many appealing features of the other toolkits described in Section 8.

Because there is too much to do, we are now concentrating on only threemajor research directions. First, we are continuing our work on widgets,particularly those that support workspace awareness [Gutwin and Green-berg 1995; Gutwin et al. 1995]. We define this as the up-to-the-minuteknowledge a person requires about another person’s interactions with theshared workspace. We believe workspace awareness is required for anindividual to coordinate and complete his or her part of a group task. Wehave developed a preliminary framework that categorizes awareness interms of how closely users are working together on a task (same ordifferent) and on the view (strict versus relaxed WYSIWIS), and we havealso invented a few prototype widgets that go beyond those illustrated inSection 5. Second, we are investigating alternate metaphors for sessionmanagement and whether they can be built easily within GroupKit [Rose-man and Greenberg 1994]. Example metaphors other than those already

ACM ‘lkansactions on Computer-Human Interaction, Vol. 9, No. 1, March 1996.

Page 38: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit ● 103

shown include allowing people to call one another and supporting aware-ness of who is around in the community. Third, we are refining ourprogramming abstractions, in particular, GroupKit’s events and environ-ments. We would like to make them even simpler and are using them toexperiment with several concurrency control mechanisms [Greenberg andMarwood 1994].

Groupware toolkits still have a long way to go to catch up to theirsingle-user counterparts. We look forward to the day when all toolkits,perhaps influenced by GroupKit and others in its genre, will incorporatemultiuser features. When that day comes, the artificial distinction betweenconstructing single and collaborative systems will disappear.

Availability

GroupKit is available via anonymous ftp. The release contains all thesoftware, installation instructions, example conference applications andsession managers, manual pages, and tutorial documentation. A World-Wide Web page also documents the system and work in progress, and amailing list links the community at large.

site: ftp.cpsc. ucalgary.ca

directory: publprojectslgrouplablso ftware

http: http: //www.cpsc.ucalgary .ca/projectslgrouplab/

mailing list: groupkit-users@ cpsc.ucalgary.ca

Caveat, GroupKit is not a commercial product. Its features are not ascomplete as we would like them to be; bugs appear on occasion, and it cansuffer performance problems in certain environments. Although we do notrecommend it as a commercial platform, it is an effective tool for: CSCWresearchers who wish to examine and extend the ideas presented in thisarticle; researchers and developers who are prototyping and testing group-ware systems, components, and widgets; educators who want to givelearners hands-on experience with groupware and its development; and forcommunities of curious users who wish to experiment with groupwareapplications.

ACKNOWLEDGMENTS

Many students at the University of Calgary have contributed in one way oranother to GroupKit: Carl Gutwin, Shannon Jaeger, Earle Lowe, DavidMarwood, Ted O’Grady, and Salaam Yitbarek. We also thank users fromother sites who have given us feedback and sent us example applications.Special thanks go to Jim Larson and the Intel Corporation, whose generos-ity has allowed us to follow the road less-traveled.

REFERENCES

BAECICSR,R., NASTOS, D., POSNER, I., AND MAWRY, K. 1993, The user-centered iterativedesign of collaborative writing software. In Proceedings of ACM ZnterCHI’93 Conference on

ACM Transactions on Computer-Human Interaction, Vol. 3, No. 1, March 19S6.

Page 39: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

104 ● M. Roseman and S. Greenberg

Human Factors in Computing Systems (Amsterdam, The Netherlands, Apr. 24-29). ACMPress, New York, 399-405.

BEAUDOUIN-LAFON,M. AND KARSENTY,A. 1992. Transparency and awareness in a real-timegroupware system. In Prtxeedings of UIST’92 Symposium on User Interface Software andTechnology (Monterey, Calif., Nov. 15-18). ACM Press, New York, 7 1–80.

BONFIGLIO,A., MALATESTA, G., AND TISATO, F. 1989. Conference toolkit: A framework forreal-time con ferencing. In Proceedings of the EC- CSCW’89 First European Conference onComputer Supported Cooperative Work (Gatwick, London, UK, Sept. 13-15), 303-316.

COCRBURN,A. AND GREENBERG,S. 1993. Making contact: Getting the group communicatingwith groupware. In Proceedings of the ACM COOCS’93 Conference on OrganizationalComputing Systems (Milpitas, Calif., Nov. 1-4). ACM Press, New York.

COCRBURN,A. AND GREENBERG, S. 1995a. The design and evolution of TurboTurtle, acollaborative microworld for exploring Newtonian physics. Res. Rep. 95/551/03, Dept. ofComputer Science, Univ. of Calgary, Alberta, Canada.

COCRRURN,A. AND GREENBERG,S. 1995b. TurboTurtle, a collaborative microworld for ex-ploring Newtonian physics. In Proceedings of the ACM Conference on Computer SupportedCollaborative Learning (Nov.). ACM, New York, 62-66.

DEWAN, P. 1991. Flexible user interface coupling in collaborative systems. In Proceedings ofthe ACM CH1’91 Conference on Human Factors in Computing Systems (New Orleans, La.,Apr. 28–May 2). ACM Press, New York, 41-48.

DOURISH, P. AND BELLOTIT,V. 1992. Awareness and coordination in shared workspaces. InProceedings of the ACM CSCW Conference on Computer-Supported Cooperative Work (Toron-to, Ontario). ACM Press, New York, 107-114.

EDWARDS,W. K. 1994. Session management for collaborative applications. In Proceedings ofthe ACM CSCW94 Conference on Computer Supported Cooperative Work (Chapel Hill, N.Carol., Oct. 22-26). ACM Press, New York, 323-330.

GRAHAM,T. C. N. ANDURNES T. 1992. Relational views as a model for automatic distributedimplementation of multi-user applications. In Proceedings of the ACM CSCW92 Conferenceon Computer Supported Cooperative Work (Toronto, Canada, Oct. 31–Nov. 4). ACM Press,New York.

GREENBERG, S. 1990. Sharing views and interactions with single-user applications. InProceedings of the COIS’90 Conference on Ofice Information Systems (Cambridge, Mass.,Apr. 25-27). ACM Press, New York, 227-237.

GREENBERG,S. 1991. Personalizable groupware: Accommodating individual roles and groupdifferences. In Proceedings of the ECSCW’91 European Conference on Computer SupportedCooperative Work (Amsterdam, The Netherlands). Kluwer Academic Press, 17-32.

GREENBERG,S. AND BOHNET, R. 1991. GroupSketch: A multi-user sketchpad for geographi-cally-distributed small groups. In Proceedings of Graphics Interface (Calgary, Alberta, June5–7). Morgan Kaufman Press, San Mateo, Calif., 207–215.

GREENBERG, S. AND MARWOOD, D. 1994. Real time groupware as a distributed system:Concurrency control and its effect on the interface. In Proceedings of the ACM CSCW’94Conference on Computer Supported Cooperative Work (Chapel Hill, N. Carol., Oct. 22–26).ACM Press, New York, 207–217.

GREENBERG,S. AND ROSEMAN,M. 1994. GroupKit. In ACM SIGGRAPH Videa Review. Issue108, ACM Press, New York. Videotape.

GREENBERG,S., ROSEMAN, M., WEBSTER, D., AND BOHNET, R. 1992. Human and technicalfactors of distributed group drawing tools. Interacting Comput. 4, 3, 364–392.

GUTWIN, C. AND GREENBERG,S. 1995. Support for group awareness in real-time desktopconferencing. In Proceedings of the 2nd New Zealand Computer Science Research Student’sConference (University of Waikata, Hamiltcm, New Zealand, Apr. 18-21).

GUTWIN, C., STARR, G., AND GREENBERG, S. 1995. Support for workspace awareness ineducational groupware. In Proceedings of the ACM Conference on Computer SupportedCollaborative Learning (Nov.). ACM, New York, 147–156.

HAYNE, S., PENDERGAST,M., ANDGREENBERG,S, 1994. Implementing gesturing with cursorsin group support systems. J. Manage. Inf Syst. 10, 3, 43–61.

ACM Transactions on Cornputer-Human Interaction, Vol. 3, No, 1, March 1996.

Page 40: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

GroupKit, a Groupware Toolkit . 105

HILL, R, D., BRINCK,T., ROHALL, S, L., PATTERSON,J. F., ANDWILNER, W. 1994. The Rendez-vous architecture and language for constructing multi-user applications. ACM Trans.Comput. Hum. Interact. 1, 2 (June), 81–125.

ISHH, H. 1990. TeamWorkStation: Towards a seamless shared workspace, In Proceedings ofACM CSCW90 Conference on Computer-Supported C’ooperatiue Work (Los Angeles, Calif.,Oct. 7-10). ACM Press, New York, 13-26.

ISHH, H. ANDKOBAYASHI,M. 1992. ClearBoard: A seamless medium for shared drawing andconversation with eye contact. In CHI’92: Human Factors in Computing Systems (Monterey,Calif. ). ACM/SIGCHI, New York, 525–532.

JAHN, P. 1995. Getting started with Share-Kit. Tutorial manual distributed with Share-Kit2.0.0. Communications and Operating Systems Research Group, Dept. of Computer Science,Technische University, Berlin, Germany. Available via anonymous ftp from fip,inf.fu-berlin.dein the directory /pub/misckhare-kit.

KAPLAN, S. M., TOLONE, W. J., BOGIA, D, P., AND BIGNOLI, C. 1992. Flexible, active supportfor collaborative work with Conversation Builder. In Proceedings of the ACM CSCW92Conference on Computer Supported Cooperative Work (Toronto, Canada, Oct. 31–Nov. 4).ACM Press, New York, 378-385.

KNISTER, M. J. AND PRAKASH,A. 1990. DistEdit: A distributed toolkit for supporting multi-ple group editors. In Proceedings of ACM CSCW90 Conference on Computer-SupportedCooperative Work (Los Angeles, Calif., Oct. 7–10). ACM Press, New York, 343-355.

KRASNER,G. E. AND POPE, S. T. 1988. A cookbook for using the model-view-controller userinterface paradigm in Smalltalk-80. J. Object-Oriented Program. 1, 3 (Aug./Se pt. ).

LJNTON, M. A., VLLCWDES,J. M., AND CALDER, P.R. 1989, Composing user interfaces withInterViews. IEEE Comput. 22, 2,

MALONE, T. W., LAI, K. Y., AND FRY, C. 1992. Experiments with Oval: A radically tailorabletool for cooperative work. In Proceedings of the ACM CSCW’92 Conference cm ComputerSupported Cooperative Work (Toronto, Canada, Oct. 31–Nov. 4). ACM Press, New York,289-297.

OGRADY, T. AND GREENBERG,S. 1994. A groupware environment for complete meetings. InCompanion Proceedings of the ACM SIGCHI’94 Conference on Human Factors in ComputingSystems (Boston, Mass.). ACM Press, New York, 307-308.

OUSTERHOUT,J. 1994. Tcl and the Tk Toolkit, Addison-Wesley, Reading, Mass.PATTERSON,J. F. 1991. Comparing the programming demands of single-user and multi-user

applications. In Proceedings of the UIST’92 Symposium on User Interface Software andTechnology (Hilton Head, S. Carol., Nov. 11–13). ACM Press, New York, 87-94.

PRAKASH, A. AND SHIM, H. S. 1994. DistView: Support for building efficient collaborativeapplications using replicated objects. In Proceedings of the ACM CSCW94 Conference onComputer-Supported Cooperative Work (Chapel Hill, N. Carol., Oct. 22–26). ACM Press,New York, 153-164.

ROSEMAN, M. 1995. When is an object not an object? In Proceedings of the Usenix Tcl /TkWorkshop (Toronto July 6-8).

ROSEMAN,M. ANDGREENBERG,S. 1992. GroupKit: A groupware toolkit for building real-timeconferencing applications. In Proceedings of the ACIU CSCW92 Conference on ComputerSupported Cooperative Work (Toronto, Canada, Oct. 31–Nov. 4), ACM Press, New York,43–50.

ROSEMAN,M. AND GREENBERG,S. 1993. Building flexible groupware through open protocols.In Proceedings of the ACM COOCS’93 Conference on Organizational Computing Systems(Milpitas, Calif., Nov. 1-4). ACM Press, New York, 279-288.

ROSEMAN, M. AND GREENBERG, S. 1994. Registration for real time groupware. Res. Rep.94/533/02, Dept. of Computer Science, Univ. of Calgary, Alberta, Canada.

SHEN,H. ANDDEWAN,P. 1992. Access control for collaborative environments. In Proceedingsof the ACM CSCW92 Conference on Computer Supported Cooperative Work (Toronto,Canada, Oct. 31–Nov. 4), ACM Press, New York, 51–58.

SHEPHERD,A., MAYER, N., AND KUCHINSKY,A. 1990. Strudel—an extensible electronic con-versation toolkit. In Proceedings of ACM CSCW90 Conference on Computer-SupportedCooperative Work (Los Angeles, Calif., Oct. 7-10), ACM Press, New York, 93-104.

ACM Transactions on Computer-Human Interaction, Vol 3, No. 1, March 1996.

Page 41: Building Real-Time Groupware with GroupKit, A Groupware ...byu.danrolsenjr.org/cs656/Papers/GroupKit-roseman-TOCHI96.pdf · 68 M. Roseman and S. Greenberg allowed participants to

106 ● M. Roseman and S. Greenberg

SMITH, G. AND RODDEN, T. 1993. Using an access model to configure multi-user interfaces.In Proceedings of the ACM COOCS’93 Conference on Organizational Computing System

(Milpitas, Calif., Nov. 1-4). ACM Press, New York, 289–298.SMITH, B. C., RowE, L. A., AND YEN, S. C. 1993. Tcl distributed programming. In Proceed-

ings of the Tcl /Tk Workshop, (Berkeley, Cal if. ).STEFIK,M,, BOBROW,D. G., FOSTER, G., LANNiNG,S., ANDTATAR, D. 1987. WYSIWIS revised:

Early experiences with multi-user interfaces. ACM Trans. Ofice Inf. Syst. 5, 2, 147-167.TANG, J. C. 1991. Findings from observational studies of collaborative work. Znt. J. Man

Mach. Stud. 34, 2, 143–160.TANG, J. C. AND MINNEMAN, S. L. 1990. VideoDraw: A video interface for collaborative

drawing. In Proceedings of the ACM SIGCHI’90 Conference on Human Factors in ComputingSystems (Seattle, Wash., Apr. 1-5). ACM Press, New York, 313-320.

TAYLOR, R. N., NIES, K. A., BOLCER, G. A., MACFARLANE,C. A., JOHNSON,G. F., ANDANDERSON,K. M. 1994. Supporting separations of concerns and concurrency in the Chiron- 1 userinterface system. UCI Tech. Rep. 94-12, Dept. of Computer Science, Univ. of California,Irvine, Calif. Mar.

Tou, 1,, BERSON, S., ESTRIN, G., ETEROVIC,Y., AND Wu, E. 1994. Prototyping synchronousgroup applications. IEEE Comput. 27, 5 (May), 48-56.

TREVOR, J., RODDEN, T., AND MAIUANI,J. 1994. The uee of adaptors to support cooperativesharing. In Proceedings of the ACM CS(XV’94 Conference on Computer Supported Coopera-tive Work (Chapel Hill, N. Carol., Oct. 22-26). ACM Press, New York, 219-230.

URNES, T. AND NEJABt, R. 1994. Tools for implementing groupware: A survey and evalua-tion. Tech. Rep. CS-94-03, Dept. of Computer Science, York Univ., Toronto, Canada.

Received April 1995; accepted July 1995

ACM Transactions on Computer-Humsn Interaction, Vol. 3, No. 1, March 1996.


Recommended