Implementing Collaborative Applications Prasun Dewan Department of - - PowerPoint PPT Presentation

implementing collaborative applications
SMART_READER_LITE
LIVE PREVIEW

Implementing Collaborative Applications Prasun Dewan Department of - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

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 dewan@cs.unc.edu http:/www.cs.unc.edu/~dewan

slide-2
SLIDE 2

Dewan CS 290-063 2

Infrastructures

Applications Applications Infrastructures

slide-3
SLIDE 3

Dewan CS 290-063 3

Evaluation Criteria

  • Flexibility
  • Automation
  • Efficiency
  • Reuse of Existing Code
slide-4
SLIDE 4

Automation vs Flexibility Tradeoff

Programmer User

slide-5
SLIDE 5

Favouring the Programmer

Programmer User

slide-6
SLIDE 6

Favouring the User

Programmer User

slide-7
SLIDE 7

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

slide-8
SLIDE 8

Dewan CS 290-063 8

User 1 User 2 X Server X Client X Server Pseudo Server Pseudo Server

Centralized Architecture

XTV (‘88) VConf (‘87) Rapport (‘88) NetMeeting

slide-9
SLIDE 9

Dewan CS 290-063 9

User 1 User 2 X Server X Client X Server X Client Pseudo Server Pseudo Server

Replicated Architecture

Rapport VConf

slide-10
SLIDE 10

Dewan CS 290-063 10

User 1 User 2

Insert e,2 Insert d,1 Insert e,2 Insert d,1 dabc aebc deabc 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

slide-11
SLIDE 11

Dewan CS 290-063 11

User 1 User 2 X Server X Client X Server Pseudo Server Pseudo Server

Migrate Central Client

slide-12
SLIDE 12

Dewan CS 290-063 12

User 1 User 2 X Server X Server X Client Pseudo Server Pseudo Server

Migrate Central Client

Chung & Dewan ‘96

slide-13
SLIDE 13

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
slide-14
SLIDE 14

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
slide-15
SLIDE 15

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

slide-16
SLIDE 16

Dewan CS 290-063 16

DC -> C

  • rep. 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

  • ld data replication

replication schedule write access type replication record replication ACL rep.

  • rep. param. rep.

immediate rep.

slide-17
SLIDE 17

Dewan CS 290-063 17

Coda: Connection Degree

Client 1 Client 2 User 1 User 2 Data Cache Cache Server get uncached send update send update & cache SC SC SC DC -> SC send updates send updates & cache DC -> SC WC trickle updates WC WC

slide-18
SLIDE 18

Dewan CS 290-063 18

Interprocess Communication

Process 1 Process 1 User 1 Session Manager User 2 register, get peers

+ Absolute Flexibility

  • No

Automation

slide-19
SLIDE 19

Dewan CS 290-063 19

ISIS: Causal and Atomic Broadcast

P1 ISIS P2 P3 ISIS create_group, join_group, leave_group ISIS m1 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

  • perations

m1 = color red m1’ = magnify non-commuting

  • perations

m1’ = Insert b, 1 m1 = Insert a, 2

slide-20
SLIDE 20

Dewan CS 290-063 20

Multiple Views

Model View View Window Window User notify notify request Host 1

slide-21
SLIDE 21

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.

slide-22
SLIDE 22

Dewan CS 290-063 22

2-Phase Model-View Protocol

Figure originally appears in [22]

slide-23
SLIDE 23

Dewan CS 290-063 23

Clock: Optimized MVC

Figure originally appears in [22]

slide-24
SLIDE 24

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 lm lm

slide-25
SLIDE 25

Dewan CS 290-063 25

GroupKit: Environment Replication

Environment Procedures K1, V1 P R K2, V2 I K1, V1 Q I Multicast Session-based Calls Active Environments K2, V2 I S T T all U V

  • thers,

usernum

slide-26
SLIDE 26

Dewan CS 290-063 26

GroupKit: Open Session Management

K1, V1 K2, V2 P R I K1, V1 K2, V2 Q I Registrar User 1 User 2 Session Manager Session Manager updateEntrant userReqNewConf newUserApproved new invite new invite newUserArrived newUserArrived

+Flexible

  • Collaboration

Aware

slide-27
SLIDE 27

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 { ... }

slide-28
SLIDE 28

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’’} }

slide-29
SLIDE 29

Dewan CS 290-063 29

Suite: Parameterized Generator

int[] 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]

slide-30
SLIDE 30

Dewan CS 290-063 30

Text Editor

slide-31
SLIDE 31

Dewan CS 290-063 31

Text Editor

/*dmc Editable String */

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

slide-32
SLIDE 32

Dewan CS 290-063 32

Multiuser Outline

slide-33
SLIDE 33

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"); }

slide-34
SLIDE 34

Dewan CS 290-063 34

Talk

slide-35
SLIDE 35

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"); } }

slide-36
SLIDE 36

Dewan CS 290-063 36

Command Interpreter

slide-37
SLIDE 37

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"); }

slide-38
SLIDE 38

Dewan CS 290-063 38

Web

Form 1 Cgi scripts HTTP Server Form 1 Display Web Browsers edit form1 User 1 User 2 Rendered HTML Document Form 1 Display update +Wide-Area Naming and Sharing get get notify +High-level Local UI commit

  • Async
  • Jittery
slide-39
SLIDE 39

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

slide-40
SLIDE 40

Dewan CS 290-063 40

Single-User Architecture

Windows User 1 Toolkit PC Model View

slide-41
SLIDE 41

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

slide-42
SLIDE 42

Dewan CS 290-063 42

Single-User Architecture

Interactor User 1 Interactor Interactor Abstraction Interactor

slide-43
SLIDE 43

Dewan CS 290-063 43

Generic Architecture

Semantics Interactor Base Interactor Interactor User 1 User 2 Hardware Stem Branch Interactor Version Version Interactor Interactor Interactor Hardware Branch Abstraction

slide-44
SLIDE 44

Dewan CS 290-063 44

Example Layers

Model View Windows Windows User 1 User 2 Toolkit Toolkit PC PC

slide-45
SLIDE 45

Dewan CS 290-063 45

Varying Replication Degree

Windows User 1 User 2 Toolkit PC PC Degree 0 Pure Centralized Team Workstation Model View

slide-46
SLIDE 46

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

slide-47
SLIDE 47

Dewan CS 290-063 47

Varying Replication Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC Degree 2

slide-48
SLIDE 48

Dewan CS 290-063 48

Varying Replication Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC Degree 3 View Hybrid

slide-49
SLIDE 49

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

slide-50
SLIDE 50

Dewan CS 290-063 50

Varying Concurrency Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree 0 Serial

slide-51
SLIDE 51

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

slide-52
SLIDE 52

Dewan CS 290-063 52

Varying Concurrency Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree = Replication Degree Concurrent Suite Rendezvous Weasel Clock + Fairness + Concurrency + Distribution

  • Scheduling

Overhead

  • Programming

Overhead

slide-53
SLIDE 53

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

slide-54
SLIDE 54

Dewan CS 290-063 54

Varying Distribution Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Rendezvous Degree 1 < Concurrency Degree Semi- Distributed

slide-55
SLIDE 55

Dewan CS 290-063 55

Varying Distribution Degree

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Suite Weasel Clock Degree = Concurrency Degree Distributed + Local Response + Compact Communication

  • Programming

Overhead

  • Pointers
slide-56
SLIDE 56

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

slide-57
SLIDE 57

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

slide-58
SLIDE 58

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

slide-59
SLIDE 59

Dewan CS 290-063 59

Partitioned Support

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View + Separation

  • f Concerns
  • Duplication
  • Coordination
slide-60
SLIDE 60

Dewan CS 290-063 60

Adding Collaboration Awareness

  • Colab. Transp.
  • Colab. Aware

Extend Single- User Class JCE

  • Colab. Transp.
  • Colab. Aware

Ad-Hoc Suite

  • Colab. Aware
  • Colab. Transp.

Extend Colab. Aware Class Sync

  • Colab. Aware
  • Colab. Transp.
  • Colab. Aware Delegate

Colab. Beans

slide-61
SLIDE 61

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

slide-62
SLIDE 62

Dewan CS 290-063 62

Replication Granularity

Coarse Grained Fine-Grained XTV Suite, DistView

slide-63
SLIDE 63

Dewan CS 290-063 63

A1 A2 Autonomous Name Assignment Translator

Replica Naming

XTV Global Name Assignment Suite Name Manager Efficient Reusable A A

slide-64
SLIDE 64

Dewan CS 290-063 64

Peer-Peer Coupling

I I’ Remote Input Shared X I I’ Peer Input XTV I

Windows

I’ I I I I Peer Multi-layer Input Suite

slide-65
SLIDE 65

Dewan CS 290-063 65

Peer-Peer Coupling

M M’ Remote Method GroupKit M M’ Peer Method Colab.

Copy Getters Setters Object Object

slide-66
SLIDE 66

Dewan CS 290-063 66

Peer-to-Peer Coupling

Windows

Update Update’ Data Event Data Remote Active Update GroupKit Event

slide-67
SLIDE 67

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

slide-68
SLIDE 68

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 { ???? }

slide-69
SLIDE 69

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)}

slide-70
SLIDE 70

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)

B C C

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

A

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

A

O2 = Insert (B, 2)

CBA

slide-71
SLIDE 71

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)

A ABC

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

A B C

O2 = Insert (B, 1)

CAB

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

ABC

slide-72
SLIDE 72

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

slide-73
SLIDE 73

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

slide-74
SLIDE 74

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

slide-75
SLIDE 75

Dewan CS 290-063 75

Multi-Layered Undo

C CO U UO C CO U UO C CO U UO

slide-76
SLIDE 76

Dewan CS 290-063 76

History & Command Object

C CO R RO C CO U UO C CO History R U C Add C Add

slide-77
SLIDE 77

Dewan CS 290-063 77

Distributed Undo

5 6 5.0 5.0 Inc Inc Inc Inc 6.0 6.0 Undo Undo Undo Undo 5.0 5.0 5 Inc Undo

slide-78
SLIDE 78

Dewan CS 290-063 78

Collaborative Undo

5 6 5.0 5.0 Inc Inc Inc Inc 6.0 6.0 Undo Requesting Object Originating Object Undo (c)

slide-79
SLIDE 79

Dewan CS 290-063 79

Composable Support

User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View + Separation

  • f Concerns
  • Coordination

Composable Logger Collaboration Bus

slide-80
SLIDE 80

Dewan CS 290-063 80

Coupling Awareness

IPC

Manual

Object Object Copy

Semi-Automatic

Getters Setters Object Object Copy

Automatic Copy

Data Data Replay

Automatic Log/Replay

Object Object

slide-81
SLIDE 81

Dewan CS 290-063 81

Collaboration Bus

Service 2, Instance 1: Meeting Environment No Computer-Supported Control Service 1: Single User Ship Walk-through

Colab. Bus

Compositions Translations

Reference Model

Service 2, Instance 2: Meeting Environment Computer-Supported Floor Control Intra-Service Interoperation (Translation): Combined Meeting Environment

Inter-Service Interoperation (Composition): Multi-Person Ship Walk-through

slide-82
SLIDE 82

Dewan CS 290-063 82

  • 9. References

Given below are references to papers from which some of this material is drawn. These include three survey papers I have written on desiging [12] and implementing [11,14] collaborative applications, papers on the 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: Session Management [16], Coupling [13], Undo [3,6,37], and Awareness [15,20,28] and papers on the following collaboration 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

  • f 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.

slide-83
SLIDE 83

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.

slide-84
SLIDE 84

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.

slide-85
SLIDE 85

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.

slide-86
SLIDE 86

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.