Implementing Collaborative Applications

86
Dewan CS 290-063 1 Implementing Collaborative Applications Prasun Dewan Department of Computer Science University of North Carolina CB 3175 Sitterson Hall Chapel Hill, NC 27599-3175 [email protected] http:/www.cs.unc.edu/~dewan

description

Implementing Collaborative Applications. Prasun Dewan. Department of Computer Science University of North Carolina CB 3175 Sitterson Hall Chapel Hill, NC 27599-3175 [email protected] http:/www.cs.unc.edu/~dewan. Infrastructures. Applications. Infrastructures. Applications. - PowerPoint PPT Presentation

Transcript of Implementing Collaborative Applications

Page 1: Implementing Collaborative Applications

Dewan CS 290-063 1

Implementing Collaborative ApplicationsPrasun Dewan

Department of Computer ScienceUniversity of North CarolinaCB 3175 Sitterson HallChapel Hill, NC 27599-3175

[email protected]:/www.cs.unc.edu/~dewan

Page 2: Implementing Collaborative Applications

Dewan CS 290-063 2

Infrastructures

ApplicationsA

ppli

cati

ons Infrastructures

Page 3: Implementing Collaborative Applications

Dewan CS 290-063 3

Evaluation Criteria

Flexibility

Automation

Efficiency

Reuse of Existing Code

Page 4: Implementing Collaborative Applications

Automation vs Flexibility Tradeoff

Programmer User

Page 5: Implementing Collaborative Applications

Favouring the Programmer

Programmer User

Page 6: Implementing Collaborative Applications

Favouring the User

Programmer User

Page 7: Implementing Collaborative Applications

Dewan CS 290-063 7

Shared Window System

Application

Window Window

User 1 User 2

Coupling

Audio/Video

WYSIWIS

+ Tightly-Coupled Meetings

+ Easy to Understand

+ Application-Independent

+ Automatable

Stefik ‘87

Page 8: Implementing Collaborative Applications

Dewan CS 290-063 8

User 1 User 2

X Server

X Client

X Server

Pseudo Server Pseudo Server

Centralized ArchitectureXTV (‘88) VConf (‘87) Rapport (‘88) NetMeeting

Page 9: Implementing Collaborative Applications

Dewan CS 290-063 9

User 1 User 2

X Server

X Client

X Server

X Client

Pseudo Server Pseudo Server

Replicated ArchitectureRapport VConf

Page 10: Implementing Collaborative Applications

Dewan CS 290-063 10

User 1 User 2

Insert e,2Insert d,1Insert e,2 Insert d,1

dabc aebcdeabc daebc

Insert d,1 Insert e,2

X Server

X Client

X Server

X Client

Pseudo Server Pseudo Server

Synchronization in Replicated Architecture

abc abc

Page 11: Implementing Collaborative Applications

Dewan CS 290-063 11

User 1 User 2

X Server

X Client

X Server

Pseudo Server Pseudo Server

Migrate Central Client

Page 12: Implementing Collaborative Applications

Dewan CS 290-063 12

User 1 User 2

X Server X Server

X Client

Pseudo Server Pseudo Server

Migrate Central ClientChung & Dewan ‘96

Page 13: Implementing Collaborative Applications

Dewan CS 290-063 13

Shared Window System

Application

Window Window

User 1 User 2

Coupling

Audio/Video

WYSIWIS

+ Tightly-Coupled Meetings

+ Easy to Understand

+ Application-Independent

+ Automatable

- Scroll Wars

- Window Wars

- No Flexibility

- Performance- Consistency

Page 14: Implementing Collaborative Applications

Dewan CS 290-063 14

File System

Process 1

File

Process 1

Read/Write

lrwx

User 1 User 2

Grove Outline IBIS Arguments GroupDraw Drawing Notes Document Prep Document

+ Sharing

+ Persistence

+ Access, Conc. Control

- Async

- Large-Grained

- Connected

Page 15: Implementing Collaborative Applications

Dewan CS 290-063 15

Relational DBMS

Process 1 Process 1

Insert/Delete/Select

IDS

User 1 User 2

Database

M

L+ Fine-Grained

+ Query Language

Author, Category, Status and Awareness Info

Page 16: Implementing Collaborative Applications

Dewan CS 290-063 16

DC -> Crep. schedule

Replicated Disconnected Databases

Process 1 Process 1

User 1 User 2

“Replica”

IDS M

“Replica”

IDS M

source determines

destination determines

read access delete replication old data replication replication schedule

write access type replicationrecord replication ACL rep.rep. param. rep. immediate rep.

Page 17: Implementing Collaborative Applications

Dewan CS 290-063 17

Coda: Connection Degree

Client 1 Client 2

User 1 User 2

Data

Cache Cache

Server

get uncached

send updatesend update & cache

SC

SCSC

DC -> SC

send updates

send updates & cache

DC -> SC

WC

trickle updates WCWC

Page 18: Implementing Collaborative Applications

Dewan CS 290-063 18

Interprocess Communication

Process 1 Process 1

User 1

Session Manager

User 2

register, get peers

+ Absolute Flexibility

- No Automation

Page 19: Implementing Collaborative Applications

Dewan CS 290-063 19

ISIS: Causal and Atomic Broadcast

P1 ISIS

P2

P3 ISIS

create_group, join_group, leave_group

ISISm1

m1 m2 m2

m1’ m1’

m1

m1 m2

t( m2) < t (m1) cbcast_group

t (m1) < t( m1’) t (m1’) < t (m1)

abcast_group

commuting operations

m1 = color redm1’ = magnify

non-commuting operations m1’ = Insert b, 1

m1 = Insert a, 2

Page 20: Implementing Collaborative Applications

Dewan CS 290-063 20

Multiple Views

Model

View View

Window Window

User

notify notifyrequest

Host 1

Page 21: Implementing Collaborative Applications

Dewan CS 290-063 21

Multiple Threads in Rendezvous

Model

View View

Window Window

User 1 User 2

Multiple threads

Prevent starvation

Host 1 Host 2

-Two-Phase Comm.

+Multi Views

-Central Arch.

Page 22: Implementing Collaborative Applications

Dewan CS 290-063 22

2-Phase Model-View Protocol

Figure originally appears in [22]

Page 23: Implementing Collaborative Applications

Dewan CS 290-063 23

Clock: Optimized MVC

Figure originally appears in [22]

Page 24: Implementing Collaborative Applications

Dewan CS 290-063 24

Association

Xerox’s Colab. Broadcast Methods

Model

View

Window

User 1

Model

View

Window

User 2

bm

Broadcast method

Associates/Replicas

Associates/Replicas

lm

lm

lm

lmlm

Page 25: Implementing Collaborative Applications

Dewan CS 290-063 25

GroupKit: Environment Replication

Environment

Procedures

K1, V1

PR

K2, V2

I

K1, V1

QI

Multicast Session-based Calls

Active EnvironmentsK2, V2

I

ST Tall

U Vothers, usernum

Page 26: Implementing Collaborative Applications

Dewan CS 290-063 26

GroupKit: Open Session Management

K1, V1

K2, V2

PRI

K1, V1

K2, V2

QI

Registrar

User 1 User 2Session Manager

Session Manager

updateEntrant

userReqNewConf

newUserApprovednewinvite

newinvite

newUserArrived newUserArrived

+Flexible

-Collaboration Aware

Page 27: Implementing Collaborative Applications

Dewan CS 290-063 27

GroupKit Multicast Code & Events

Shared Idea List

proc insertIdea idea { insertColouredIdea blue $idea gk_toOthers ''insertColouredIdea red $idea''

Event Handlers

gk_bind newUserArrived { makeChatWindow %U } proc makeChatWindow usernum { ... }

Page 28: Implementing Collaborative Applications

Dewan CS 290-063 28

GroupKit Shared Environments

Group Hello World

gk_initConf $argv gk_defaultMenu .menubar pack .menubar -side top -fill x gk_newenv -bind -share message message greetings ''Hello World'' button .hello -text ''Hello World'' -command {message greetings ''[users local.username] says hello!''} pack .hello -side top message bind changeEnvInfo .hello configure -text [message greetings] after 2000 {.hello configure -text ''Hello World''} }

Page 29: Implementing Collaborative Applications

Dewan CS 290-063 29

Suite: Parameterized Generatorint[] v1

void updateV1 (int[] newVal)

C Application

Active Variables

void updateElemV1 (int index, newVal)Attributed Interaction Variables

int v1 (widget = w1, valueCpld = true, viewCpld = false, sync = incr, access = “rw”)

int v1 (widget = w2, valueCpld = true, viewCpld = true, sync = explicit, access = “r”)

transmit

bool validateElem V1(int newVal)

edit v1[2]commit

v

v1[2]

validate

Dialogue Managers

User 1 User 2

update(v2, newVal)

v1[2]

V1[2]

Page 30: Implementing Collaborative Applications

Dewan CS 290-063 30

Text Editor

Page 31: Implementing Collaborative Applications

Dewan CS 290-063 31

Text Editor

/*dmc Editable String */ String text = "hello world"; Load () { Dm_Submit (&text, "Text", "String"); Dm_Engage ("Text"); }

Page 32: Implementing Collaborative Applications

Dewan CS 290-063 32

Multiuser Outline

Page 33: Implementing Collaborative Applications

Dewan CS 290-063 33

Outline

/*dmc Editable Outline */typedef struct { unsigned num; struct section *sec_arr; } SubSection;typedef struct section { String Name; String Contents; SubSection Subsections;} Section;typedef struct { unsigned num; Section *sec_arr; } Outline;Outline outline;

Load () { Dm_Submit (&outline, "Outline", "Outline"); Dm_Engage ("Outline");}

Page 34: Implementing Collaborative Applications

Dewan CS 290-063 34

Talk

Page 35: Implementing Collaborative Applications

Dewan CS 290-063 35

Talk Program/*dmc Editable String */String UserA = "", UserB = "";int talkers = 0;Load () { if (talkers < 2) { talkers++; Dm_Submit (&UserA, "UserA", "String"); Dm_Submit (&UserB, "UserB", "String"); if (talkers == 1) Dm_SetAttr ("View: UserB", AttrReadOnly, 1); else Dm_SetAttr ("View: UserA", AttrReadOnly, 1); Dm_Engage_Specific ("UserA", "UserA", "Text"); Dm_Engage_Specific ("UserB", "UserB", "Text"); }}

Page 36: Implementing Collaborative Applications

Dewan CS 290-063 36

Command Interpreter

Page 37: Implementing Collaborative Applications

Dewan CS 290-063 37

Command Interpreter

/*dmc Editable CmdSeq */typedef struct { String Cmd, Result; } CmdRec;typedef struct { unsigned num; CmdRec *cmd_arr; } CmdSeq;CmdRec Init = {"", ""}; CmdSeq CmdList = {1, &Init };

void Execute (cmd_name, val) char *cmd_name; String *val;{ int index; char output_name[1024]; char *result;

sscanf (cmd_name, "(((CmdList)[%d]).Cmd)", &index); sprintf (output_name, "(((CmdList)[%d]).Result)", index); /* execute command using popen() and capture output */ result = ExecuteCommand (*val); Dm_Update (output_name, "String", &result); Dm_SequenceElementAppend ("CmdList", "CmdRec", &Init);}

Load () { Dm_Submit (&CmdList, "CmdList", "CmdSeq"); Dm_SetAttr ("Type: String", AttrAcceptOnReturn, 1); Dm_SetAttr ("Type: String", AttrUpdateProc, Execute); ... Dm_Engage ("CmdList");}

Page 38: Implementing Collaborative Applications

Dewan CS 290-063 38

WebForm 1

Cgi scripts

HTTP Server

Form 1 DisplayWeb Browsers

edit form1

User 1 User 2

Rendered HTML Document

Form 1 Display

update

+Wide-Area Naming and Sharing

get getnotify

+High-level Local UI

commit

-Async

-Jittery

Page 39: Implementing Collaborative Applications

Dewan CS 290-063 39

Implementation Taxonomy

User 1 User 2

X Server

X Client

X Server

Pseudo Server Pseudo Server

User 1 User 2

X Server

X Client

X Server

X Client

Pseudo Server Pseudo Server

Process 1

File

Process 1

lrwx

User 1 User 2

Model

View View

Window Window

User 1 User 2

Host 1 Host 2

Page 40: Implementing Collaborative Applications

Dewan CS 290-063 40

Single-User Architecture

Windows

User 1

Toolkit

PC

Model

View

Page 41: Implementing Collaborative Applications

Dewan CS 290-063 41

Layered Interaction with an Object{“John Smith”, 2234.57}

• John Smith•

• John Smith•

• John Smith•

X

Abstraction

Interactor =

Absrtraction Representation

+

Syntactic Sugar

Interactor/Abstraction

Interactor/Abstraction

Interactor

Page 42: Implementing Collaborative Applications

Dewan CS 290-063 42

Single-User Architecture

Interactor

User 1

Interactor

Interactor

Abstraction

Interactor

Page 43: Implementing Collaborative Applications

Dewan CS 290-063 43

Generic ArchitectureSemantics

Interactor Base

Interactor Interactor

User 1 User 2

Hardware

Ste

m

Bra

nch

InteractorVersion VersionInteractor

Interactor InteractorHardware

Bra

nch

Abstraction

Page 44: Implementing Collaborative Applications

Dewan CS 290-063 44

Example Layers Model

View

Windows Windows

User 1 User 2

Toolkit Toolkit

PC PC

Page 45: Implementing Collaborative Applications

Dewan CS 290-063 45

Varying Replication Degree

Windows

User 1 User 2

Toolkit

PC PCDegree 0

Pure Centralized

Team Workstation

Model

View

Page 46: Implementing Collaborative Applications

Dewan CS 290-063 46

Varying Replication Degree

Windows

User 1 User 2

Toolkit

PC PC

Degree 1

“Centralized”

Shared Window Systems

Model

View

Windows Windows

XTV

Rapport

NetMeeting

Page 47: Implementing Collaborative Applications

Dewan CS 290-063 47

Varying Replication Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

Degree 2

Page 48: Implementing Collaborative Applications

Dewan CS 290-063 48

Varying Replication Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

Degree 3 View Hybrid

Page 49: Implementing Collaborative Applications

Dewan CS 290-063 49

Varying Replication Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

Replicated

View

Model

+ Divergence + Concurrency + Distribution

- Duplication - Non- Idempotent Operations

Page 50: Implementing Collaborative Applications

Dewan CS 290-063 50

Varying Concurrency Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

Degree 0

Serial

Page 51: Implementing Collaborative Applications

Dewan CS 290-063 51

Varying Concurrency Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

Semi-concurrent

Degree 1 < R

Page 52: Implementing Collaborative Applications

Dewan CS 290-063 52

Varying Concurrency Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

ViewDegree = Replication Degree

Concurrent

Suite Rendezvous Weasel Clock

+ Fairness + Concurrency + Distribution

- Scheduling Overhead - Programming Overhead

Page 53: Implementing Collaborative Applications

Dewan CS 290-063 53

Varying Distribution Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

Degree 0

Single-Site

Page 54: Implementing Collaborative Applications

Dewan CS 290-063 54

Varying Distribution Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

ViewRendezvous

Degree 1 < Concurrency Degree

Semi-Distributed

Page 55: Implementing Collaborative Applications

Dewan CS 290-063 55

Varying Distribution Degree

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

ViewSuite Weasel Clock

Degree = Concurrency Degree

Distributed

+ Local Response + Compact Communication

- Programming Overhead- Pointers

Page 56: Implementing Collaborative Applications

Dewan CS 290-063 56

Varying Collaboration Awareness

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

Degree 0

Hardware-support

Team Workstation

Page 57: Implementing Collaborative Applications

Dewan CS 290-063 57

Varying Collaboration Awareness

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

Degree 1

Window-support

Shared Window Systems

XTV

Rapport

NetMeeting

Page 58: Implementing Collaborative Applications

Dewan CS 290-063 58

Varying Collaboration Awareness

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

+ Sharing Flexibility

- Interaction Flexibility

Suite Weasel Clock

Lower layer cannot see upper layers

shared interactor => shared abstraction

shared abstraction => shared interactor

Page 59: Implementing Collaborative Applications

Dewan CS 290-063 59

Partitioned Support

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

+ Separation of Concerns

- Duplication - Coordination

Page 60: Implementing Collaborative Applications

Dewan CS 290-063 60

Adding Collaboration Awareness

Colab. Transp.

Colab. Aware

Extend Single-User Class

JCE

Colab. Transp. Colab. Aware

Ad-HocSuite

Colab. Aware

Colab. Transp.

Extend Colab. Aware Class

Sync

Colab. Aware Colab. Transp.

Colab. Aware DelegateColab. Beans

Page 61: Implementing Collaborative Applications

Dewan CS 290-063 61

Colab. Transparent Delegate

Colab. Aware Proxy Colab. Transp.

Colab. Aware Proxy

XTV

X Server

X Client

Pseudo Server COLA

Called Object

Calling Object

Adapter Object

Page 62: Implementing Collaborative Applications

Dewan CS 290-063 62

Replication Granularity

Coarse Grained

Fine-Grained

XTV

Suite, DistView

Page 63: Implementing Collaborative Applications

Dewan CS 290-063 63

A1 A2

Autonomous Name Assignment

Translator

Replica Naming

XTV

Global Name Assignment

SuiteName Manager

Efficient

Reusable

A A

Page 64: Implementing Collaborative Applications

Dewan CS 290-063 64

Peer-Peer Coupling

II’

Remote Input

Shared X

I

I’

Peer Input

XTV

I

Windows

I’

I

I I I

Peer Multi-layer InputSuite

Page 65: Implementing Collaborative Applications

Dewan CS 290-063 65

Peer-Peer Coupling

MM’

Remote Method

GroupKit

M

M’

Peer Method

Colab.

Copy

Getters Setters

Object Object

Page 66: Implementing Collaborative Applications

Dewan CS 290-063 66

Peer-to-Peer Coupling

Windows

Update

Update’Data

Event

Data

Remote Active Update

GroupKit

Event

Page 67: Implementing Collaborative Applications

Dewan CS 290-063 67

Display Consistency

C1 C2

C1 C2

ABCAST

ISIS

C1 C2

C2 C1

Optimistic

Rep. SW

C1 U (C2)

Check &Abort

Xerox’s Colab

C2 U (C1)

C1 C2

Undo/redo

C2 C1 U (C2) C2

move rotate

Commute check

GroupDesign

rotate move

insert a,1 insert b,3

Operation Transform

Grove

insert b,2 insert a,1

Page 68: Implementing Collaborative Applications

Dewan CS 290-063 68

Algorithm

t (Ii Ij) { if Pi > Pj { t = Ii(Ci, Pi+1) } elsif Pi < Pj { t = Ii(Ci, Pi) } elsif Ci = Cj { t = null } else { ???? }

Page 69: Implementing Collaborative Applications

Dewan CS 290-063 69

Algorithm

t (Ii, pi, Ij, pj) { if Pi > Pj {t = Ii(Ci, Pi+1) } elsif Pi < Pj {t = Ii(Ci, Pi) } elsif Ci = Cj {t = null } elseif pi > pj {t = Ii(Ci, Pi)) else {t = Ii(Ci, Pi+1)}

Page 70: Implementing Collaborative Applications

Dewan CS 290-063 70

Inserting at Same Position

Site 1

O1 = Insert (A, 1) O2 = Insert (B, 1) O3 = Insert (C, 1)

Site 2 Site 3

A B C

O2 = Insert (B, 1)

O3 = Insert (C, 1)

O3 = Insert (C, 1)

O1 = Insert (A, 1) O2 = Insert (B, 1)

BC C

O1 = Insert (A, 2)O1 = Insert (A, 3)

A

O1 = Insert (A, 1)O1 = Insert (A, 2)

A

O2 = Insert (B, 2)

CBA

Page 71: Implementing Collaborative Applications

Dewan CS 290-063 71

Tricky Case

Site 1

O1 = Insert (A, 1)

O2 = Insert (B, 1) O3 = Insert (C, 1)

Site 2 Site 3

O3 = Insert (C, 1)

O1 = Insert (A, 1)

C C

O1 = Insert (A, 2)

AABC

O3 = Insert (C, 1) O1 = Insert (A, 1)

ABC

O2 = Insert (B, 1)

CAB

O2 = Insert (B, 2)

O2 = Insert (B, 1)O2 = Insert (B, 2)

ABC

Page 72: Implementing Collaborative Applications

Dewan CS 290-063 72

Implementing Undo

C1

Full Check Point

Full Check Point

C2

Full Check Point

C1

Check Point C1’s Effects

Check Point C2’s Effects

C2

Partial Check Point

Page 73: Implementing Collaborative Applications

Dewan CS 290-063 73

Implementing Undo

C1

Full Check Point

Partial Check Point

C2

C3

Partial Check Point

C1

Inverse(C1)

Inverse(C2)

C2

Inverse Commands

Hybrid Approach

Page 74: Implementing Collaborative Applications

Dewan CS 290-063 74

Ins 1, B

Ins 1, A

Del 1, C Ins 1, C

Selective Undo

Del 1, C

Ins 1, A

Ins 1, B

Del 1, C

U

U

U

R

R

Ins 2, C

Ins 3, C

Page 75: Implementing Collaborative Applications

Dewan CS 290-063 75

Multi-Layered Undo

C CO U UO C CO U UO

C CO U UO

Page 76: Implementing Collaborative Applications

Dewan CS 290-063 76

History & Command Object

C CO R ROC CO U UO

C CO

History

RU

C

Add

C

Add

Page 77: Implementing Collaborative Applications

Dewan CS 290-063 77

Distributed Undo

56

5.0 5.0

Inc

Inc

Inc

Inc

6.0 6.0

Undo

Undo

Undo

Undo

5.0 5.0

5

Inc Undo

Page 78: Implementing Collaborative Applications

Dewan CS 290-063 78

Collaborative Undo

56

5.0 5.0

Inc

Inc

Inc

Inc

6.0 6.0

Undo

Requesting Object

Originating Object

Undo (c)

Page 79: Implementing Collaborative Applications

Dewan CS 290-063 79

Composable Support

User 1 User 2

Model

View

Windows Windows

Toolkit Toolkit

PC PC

View

+ Separation of Concerns - Coordination

Com

posa

ble

Log

ger

Collaboration Bus

Page 80: Implementing Collaborative Applications

Dewan CS 290-063 80

Coupling Awareness

IPC

Manual

Object ObjectCopy

Semi-Automatic

Getters Setters

Object Object

Copy

Automatic Copy

Data Data Replay

Automatic Log/Replay

Object Object

Page 81: Implementing Collaborative Applications

Dewan CS 290-063 81

Collaboration BusCollaboration Bus

Service 2, Instance 1: Meeting Environment

No Computer-Supported Control

Service 1:Single User

Ship Walk-through

Colab. Bus Com

posi

tions

Translations

Reference Model

Service 2, Instance 2:Meeting Environment

Computer-Supported Floor ControlIntra-Service Interoperation(Translation):

CombinedMeeting

Environment

Inter-Service Interoperation (Composition):

Multi-Person Ship Walk-through

Page 82: Implementing Collaborative Applications

Dewan CS 290-063 82

9. References

Given below are references to papers from which some of this material is drawn. These include threesurvey papers I have written on desiging [12] and implementing [11,14] collaborative applications, papers onthe following collaborative applications: Grove [17], PREP [34,35], GroupSketch and GroupDraw [23] MUD [8],Coordinator/ActionWorkflow [33], Quilt [19], and FLECSE [10]; papers on the following issues: SessionManagement [16], Coupling [13], Undo [3,6,37], and Awareness [15,20,28] and papers on the followingcollaboration systems: Team Workstation [25], Xerox's Colab programming environment [38], VConf [31], Rapport[18], XTV [1], Shared X [21], MMConf [7], Rendezvous [24], Suite [9], ISIS [4], Coda [29], Rover [27],GroupDesk [20] and PLAYBACK [32].

[1] Hussein Abdel-Wahab and Kevin Jeffay, "Issues, Problems and Solutions in Sharing X Clients on Multiple Displays," Internetworking: Research and Experience 5 (94), pp. 1-15.

[2] Steve Benford, Chris Brown, Gail Reynard, and Chris Greenhalgh, "Shared Spaces: Transportation, Artificiality, and Spatiality," Proceedings of the ACM Conference on Computer Supported Cooperative Work, November 1996, pp. 77-86.

[3] Thomas Berlage, "A Selective Undo Mechanism for Graphical User Interfaces," ACM Transactions on Computer-Human Interaction 1:3 (September 1994), pp. 269-294.

[4] K. Birman and T. Joseph, "Exploiting Virtual Synchrony in Distributed Systems," Proceedings of the Eleventh ACM Symposium on Operating Systems Principles, 8-11 November 1987, pp. 123-138. In ACM Operating Systems Review 21:5.

[5] W. Buxton and A. Sellen, "Interfaces for Multiparty Video Conferences," Technical Report , University of Toronto, 191.

[6] Rajiv Choudhary and Prasun Dewan, "A General Multi-User Undo/Redo Model," Proceedings of European Conference on Computer Supported Work, October 1995, pp. 231-246.

[7] Terrence Crowley, Paul Milazzo, Ellie Baker, Harry Forsdick, and Raymond Tomlinson, "MMConf: An Infrastructure for Building Shared Multimedia Applications," Proc. of ACM Conference on Computer Supported Cooperative Work, October 1990, pp. 329-342.

Page 83: Implementing Collaborative Applications

Dewan CS 290-063 83

[8] Pavel Curtis, "Muddings: Social Phenomena in Text-Based Virtual Reality," CSL-92-4, Xerox Palo Alto Research Center, 1992.

[9] Prasun Dewan and Rajiv Choudhary, "A High-Level and Flexible Framework for Implementing Multiuser User Interfaces," ACM Transactions on Information Systems 10:4 (October 1992), pp. 345-380.

[10] Prasun Dewan and John Riedl, "Toward Computer-Supported Concurrent Software Engineering," IEEE Computer 26:1 (January 1993), pp. 17-27.

[11] Prasun Dewan, "Tools for Implementing Multiuser User Interfaces ," Trends in Software: Issue on User Interface Software 1, Wiley (1993), pp. 149-172.

[12] Prasun Dewan, Rajiv Choudhary, and HongHai Shen, "An Editing-based Characterization of the Design Space of Collaborative Applications," Journal of Organizational Computing 4:3 (1994), pp. 219-240.

[13] Prasun Dewan and Rajiv Choudhary, "Coupling the User Interfaces of a Multiuser Program," ACM Transactions on Computer Human Interaction 2:1 (March 1995), pp. 1-39.

[14] Prasun Dewan, "Multiuser Architectures," Proc. of IFIP WG2.7 Working Conference on Engineering for Human-Computer Communication, August 1995, Chapman & Hall, 1996, pp. 247-270.

[15] Paul Dourish and Sarah Bly, "Portholes: Supporting Awareness in a Distributed Work Group," Proceedings of CHI '92., 1992, pp. 541-547.

[16] Keith Edwards, "Session Management for Collaborative Applications," Proceedings of the ACM Conference on Computer Supported Cooperative Work, October 1994, pp. 323-330.

[17] Clarence A. Ellis, Simon J. Gibbs, and Gail L. Rein, "Groupware: Some Issues and Experiences," CACM 34:1 (January 1991), pp. 38-58.

[18] J.R. Ensor, S.R. Ahuja, D.N. Horn, and S.E. Lucco, "The Rapport Multimedia Conferencing System: A Software Overview," Proceedings of the 2nd IEEE Conference on Computer Workstations, March 1988, pp. 52-58.

Page 84: Implementing Collaborative Applications

Dewan CS 290-063 84

[19] R. Fish, R. Kraut, M. Leland, and M. Cohen, "Quilt: a Collaborative Tool for Cooperative Writing," Proceedings of ACM SIGOIS Conference, 1988, pp. 30-37.

[20] Ludwig Fuchs, Uta Pankoke-Babatz, and Wolfgang Prinz, "Supporting Cooperative Awareness with Local Event Mechanisms," Proceedings of European Conference on Computer Supported Work, October 1995, pp. 247-262.

[21] Daniel Garfinkel, Bruce Welti, and Thomas Yip, "HP Shared X: A Tool for Real-Time Collaboration," Hewlett-Packard Journal, April 1994, pp. 23-24.

[22] T.C. Nicholas Graham, Tore Urnes, and Roy Nejabi, "Efficient Distributed Implementation of Semi- Replicated Synchronous Groupware ," Proceedings of the Ninth Conference on User Interface Software and Technology, October 1996, pp. 1-10.

[23] Saul Greenberg, Mark Roseman, Dave Webster, and Ralph Bohnet, "Issues and Experiences Designing and Implementing Two Group Drawing Tools," Proceedings of 25th Annual Hawaii International Conference on System Sciences, January 1992, pp. Vol. 4: 139-150.

[24] Ralph Hill, Tom Brinck, Steven Rohall, John Patterson, and Wayne Wilner, "The Rendezvous Architecture and Language for Constructing Multiuser Applications," ACM Transactions on Computer Human Interaction 1:2 (June 1994).

[25] Hirsoshi Ishii and Masaaki Ohkubo, "Design of a Team Workstation," Multi-User Interfaces and Applications, North Holland, , pp. 131-142.

[26] Hiroshii Ishii and Minoru Kobayashi, "Integration of Inter-Personal and Shared Workspace: Clearboard Design and Experiments," Proceedings of the ACM Conference on Computer Supported Cooperative Work, November 1992, pp. 33-42.

[27] Anthony D. Joseph, Alan F. deLespinasse, Joshua A. Tauber, David K. Gifford, and M. Frans Kaashoek, "Rover: A Toolkit for Mobile Information Access," Proceedings of the 15th Symposium on Operating System Principles, 1995.

[28] Alain Karsenty, Christophe Tronche, and Michel Beaudouin-Lafon, "GroupDesign: Shared Editing in a Heterogeneous Environment," Usenix Computing Systems 6:2 (Spring 1993), pp. 167-195.

Page 85: Implementing Collaborative Applications

Dewan CS 290-063 85

[29] J. J. Kistler and M. Satyanaraynan, "Disconnected Operation in the Coda File System," ACM Transactions on Computer Systems 10:1 (February 1992), pp. 3-25.

[30] Hideaki Kuzuoka, Toshio Kosuge, and Masatomo Tanaka, "GestureCam: A Video Communication System for Sympathetic Remote Collaboration," Proceedings of the ACM Conference on Computer Supported Cooperative Work, October 1994, pp. 35-43.

[31] J.C. Lauwers and K.A. Lantz, "Collaboration Awareness in Support of Collaboration Transparency: Requirements for the Next Generation of Shared Window Systems," Proceedings of ACM CHI'90, April 1990, pp. 303-312.

[32] Nelson R. Manohar and Atul Prakash , "The Session Capture and Replay Paradigm for Asynchronous Collaboration," Proceedings of European Conference on Computer Supported Work, October 1995, pp. 149-164.

[33] Raul Medina-Mora, Terry Winograd, Rodrigo Flores, and Fernando Flores, "The Action workflow Approach to Workflow Technology," ACM CSCW'92 Proceedings, October 1992, pp. 281-288.

[34] Christine M. Neuwirth, David S. Kaufer, Ravinder Chandok, and James H. Morris, "Issues in the Design of Computer Support for Co-authoring and Commenting," Proceedings of ACM Conference on Computer Supported Cooperative Work, October 1990, pp. 183-195.

[35] Christine M. Neuwirth, Ravinder Chandok, David S. Kaufer, Paul Erion, James H. Morris, and Dale Miller, "Flexible Diff-ing in a Collaborative Writing System," Proceedings of ACM Conference on Computer Supported Cooperative Work, October 1992, pp. 147-154.

[36] Ken-ichi Okada, Fumihiko Maeda, Yusuke Ichikawaa, and Yutaka Maatsushita, "Multiparty Videoconferencing at Virtual Social Distance: MAJIC Design," Proceedings of the ACM Conference on Computer Supported Cooperative Work, October 1994, p. 385-393.

[37] Atul Prakash and Michael J. Knister, and December 1994, "A Framework for Undoing Actions in Collaborative Systems," ACM Transactions on Computer-Human Interaction, pp. 295-330.

Page 86: Implementing Collaborative Applications

Dewan CS 290-063 86

[38] Mark Stefik, Gregg Foster, Daniel G. Bobrow, Kenneth Kahn, Stan Lanning, and Lucy Suchman, "Beyond the Chalkboard: Computer Support for Collaboration and Problem Solving in Meetings," CACM 30:1 (January 1987), pp. 32-47.

[39] Dadong Wan and Philip M. Johnson, "Computer Supported Collaborative Learning Using CLARE: the Approach and Experimental Findings," Proceedings of the ACM Conference on Computer Supported Cooperative Work, October 1994, pp. 187-198.