Implementing Collaborative Applications
description
Transcript of 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
Dewan CS 290-063 2
Infrastructures
ApplicationsA
ppli
cati
ons Infrastructures
Dewan CS 290-063 3
Evaluation Criteria
Flexibility
Automation
Efficiency
Reuse of Existing Code
Automation vs Flexibility Tradeoff
Programmer User
Favouring the Programmer
Programmer User
Favouring the User
Programmer User
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
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
Dewan CS 290-063 9
User 1 User 2
X Server
X Client
X Server
X Client
Pseudo Server Pseudo Server
Replicated ArchitectureRapport VConf
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
Dewan CS 290-063 11
User 1 User 2
X Server
X Client
X Server
Pseudo Server Pseudo Server
Migrate Central Client
Dewan CS 290-063 12
User 1 User 2
X Server X Server
X Client
Pseudo Server Pseudo Server
Migrate Central ClientChung & Dewan ‘96
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
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
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
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.
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
Dewan CS 290-063 18
Interprocess Communication
Process 1 Process 1
User 1
Session Manager
User 2
register, get peers
+ Absolute Flexibility
- No Automation
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
Dewan CS 290-063 20
Multiple Views
Model
View View
Window Window
User
notify notifyrequest
Host 1
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.
Dewan CS 290-063 22
2-Phase Model-View Protocol
Figure originally appears in [22]
Dewan CS 290-063 23
Clock: Optimized MVC
Figure originally appears in [22]
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
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
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
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 { ... }
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''} }
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]
Dewan CS 290-063 30
Text Editor
Dewan CS 290-063 31
Text Editor
/*dmc Editable String */ String text = "hello world"; Load () { Dm_Submit (&text, "Text", "String"); Dm_Engage ("Text"); }
Dewan CS 290-063 32
Multiuser Outline
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");}
Dewan CS 290-063 34
Talk
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"); }}
Dewan CS 290-063 36
Command Interpreter
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");}
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
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
Dewan CS 290-063 40
Single-User Architecture
Windows
User 1
Toolkit
PC
Model
View
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
Dewan CS 290-063 42
Single-User Architecture
Interactor
User 1
Interactor
Interactor
Abstraction
Interactor
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
Dewan CS 290-063 44
Example Layers Model
View
Windows Windows
User 1 User 2
Toolkit Toolkit
PC PC
Dewan CS 290-063 45
Varying Replication Degree
Windows
User 1 User 2
Toolkit
PC PCDegree 0
Pure Centralized
Team Workstation
Model
View
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
Dewan CS 290-063 47
Varying Replication Degree
User 1 User 2
Model
View
Windows Windows
Toolkit Toolkit
PC PC
Degree 2
Dewan CS 290-063 48
Varying Replication Degree
User 1 User 2
Model
View
Windows Windows
Toolkit Toolkit
PC PC
Degree 3 View Hybrid
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
Dewan CS 290-063 50
Varying Concurrency Degree
User 1 User 2
Model
View
Windows Windows
Toolkit Toolkit
PC PC
View
Degree 0
Serial
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
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
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
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
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
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
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
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
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
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
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
Dewan CS 290-063 62
Replication Granularity
Coarse Grained
Fine-Grained
XTV
Suite, DistView
Dewan CS 290-063 63
A1 A2
Autonomous Name Assignment
Translator
Replica Naming
XTV
Global Name Assignment
SuiteName Manager
Efficient
Reusable
A A
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
Dewan CS 290-063 65
Peer-Peer Coupling
MM’
Remote Method
GroupKit
M
M’
Peer Method
Colab.
Copy
Getters Setters
Object Object
Dewan CS 290-063 66
Peer-to-Peer Coupling
Windows
Update
Update’Data
Event
Data
Remote Active Update
GroupKit
Event
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
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 { ???? }
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)}
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
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
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
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
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
Dewan CS 290-063 75
Multi-Layered Undo
C CO U UO C CO U UO
C CO U UO
Dewan CS 290-063 76
History & Command Object
C CO R ROC CO U UO
C CO
History
RU
C
Add
C
Add
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
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)
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
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
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
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.
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.
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.
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.
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.