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
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
Dewan CS 290-063 1
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 2
Applications Applications Infrastructures
Dewan CS 290-063 3
Programmer User
Programmer User
Programmer User
Dewan CS 290-063 7
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
XTV (‘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
Rapport VConf
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
abc abc
Dewan CS 290-063 11
User 1 User 2 X Server X Client X Server Pseudo Server Pseudo Server
Dewan CS 290-063 12
User 1 User 2 X Server X Server X Client Pseudo Server Pseudo Server
Chung & Dewan ‘96
Dewan CS 290-063 13
Application Window Window
User 1 User 2 Coupling Audio/Video WYSIWIS
+ Tightly-Coupled Meetings + Easy to Understand + Application-Independent + Automatable
Dewan CS 290-063 14
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
Grained
Dewan CS 290-063 15
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 -> C
Process 1 Process 1 User 1 User 2 “Replica” IDS M “Replica” IDS M source determines destination determines read access delete replication
replication schedule write access type replication record replication ACL rep.
immediate rep.
Dewan CS 290-063 17
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
Dewan CS 290-063 18
Process 1 Process 1 User 1 Session Manager User 2 register, get peers
+ Absolute Flexibility
Automation
Dewan CS 290-063 19
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
m1 = color red m1’ = magnify non-commuting
m1’ = Insert b, 1 m1 = Insert a, 2
Dewan CS 290-063 20
Model View View Window Window User notify notify request Host 1
Dewan CS 290-063 21
Model View View Window Window User 1 User 2 Multiple threads Prevent starvation Host 1 Host 2
Phase Comm. +Multi Views
Arch.
Dewan CS 290-063 22
Figure originally appears in [22]
Dewan CS 290-063 23
Figure originally appears in [22]
Dewan CS 290-063 24
Association
Model View Window User 1 Model View Window User 2 bm Broadcast method Associates/ Replicas Associates/ Replicas lm lm lm lm lm
Dewan CS 290-063 25
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
usernum
Dewan CS 290-063 26
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
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
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]
Dewan CS 290-063 30
Dewan CS 290-063 31
/*dmc Editable String */
String text = "hello world"; Load () { Dm_Submit (&text, "Text", "String"); Dm_Engage ("Text"); }
Dewan CS 290-063 32
Dewan CS 290-063 33
/*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
Dewan CS 290-063 35
/*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
Dewan CS 290-063 37
/*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
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
Dewan CS 290-063 39
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
Windows User 1 Toolkit PC Model View
Dewan CS 290-063 41
{“John Smith”, 2234.57}
Abstraction Interactor = Absrtraction Representation + Syntactic Sugar Interactor/ Abstraction Interactor/ Abstraction Interactor
Dewan CS 290-063 42
Interactor User 1 Interactor Interactor Abstraction Interactor
Dewan CS 290-063 43
Semantics Interactor Base Interactor Interactor User 1 User 2 Hardware Stem Branch Interactor Version Version Interactor Interactor Interactor Hardware Branch Abstraction
Dewan CS 290-063 44
Model View Windows Windows User 1 User 2 Toolkit Toolkit PC PC
Dewan CS 290-063 45
Windows User 1 User 2 Toolkit PC PC Degree 0 Pure Centralized Team Workstation Model View
Dewan CS 290-063 46
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
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC Degree 2
Dewan CS 290-063 48
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC Degree 3 View Hybrid
Dewan CS 290-063 49
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC Replicated View Model + Divergence + Concurrency + Distribution
Idempotent Operations
Dewan CS 290-063 50
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree 0 Serial
Dewan CS 290-063 51
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Semi- concurrent Degree 1 < R
Dewan CS 290-063 52
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree = Replication Degree Concurrent Suite Rendezvous Weasel Clock + Fairness + Concurrency + Distribution
Overhead
Overhead
Dewan CS 290-063 53
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree 0 Single-Site
Dewan CS 290-063 54
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Rendezvous Degree 1 < Concurrency Degree Semi- Distributed
Dewan CS 290-063 55
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Suite Weasel Clock Degree = Concurrency Degree Distributed + Local Response + Compact Communication
Overhead
Dewan CS 290-063 56
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View Degree 0 Hardware- support Team Workstation
Dewan CS 290-063 57
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
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View + Sharing Flexibility
Flexibility Suite Weasel Clock Lower layer cannot see upper layers shared interactor => shared abstraction shared abstraction => shared interactor
Dewan CS 290-063 59
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View + Separation
Dewan CS 290-063 60
Extend Single- User Class JCE
Ad-Hoc Suite
Extend Colab. Aware Class Sync
Colab. Beans
Dewan CS 290-063 61
XTV X Server X Client Pseudo Server COLA Called Object Calling Object Adapter Object
Dewan CS 290-063 62
Coarse Grained Fine-Grained XTV Suite, DistView
Dewan CS 290-063 63
A1 A2 Autonomous Name Assignment Translator
XTV Global Name Assignment Suite Name Manager Efficient Reusable A A
Dewan CS 290-063 64
I I’ Remote Input Shared X I I’ Peer Input XTV I
Windows
I’ I I I I Peer Multi-layer Input Suite
Dewan CS 290-063 65
M M’ Remote Method GroupKit M M’ Peer Method Colab.
Copy Getters Setters Object Object
Dewan CS 290-063 66
Windows
Update Update’ Data Event Data Remote Active Update GroupKit Event
Dewan CS 290-063 67
C1 C2 C1 C2 ABCAST ISIS C1 C2 C2 C1 Optimistic
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
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
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
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
Dewan CS 290-063 71
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
Dewan CS 290-063 72
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
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
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
C CO U UO C CO U UO C CO U UO
Dewan CS 290-063 76
C CO R RO C CO U UO C CO History R U C Add C Add
Dewan CS 290-063 77
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
Dewan CS 290-063 78
5 6 5.0 5.0 Inc Inc Inc Inc 6.0 6.0 Undo Requesting Object Originating Object Undo (c)
Dewan CS 290-063 79
User 1 User 2 Model View Windows Windows Toolkit Toolkit PC PC View + Separation
Composable Logger Collaboration Bus
Dewan CS 290-063 80
IPC
Manual
Object Object Copy
Semi-Automatic
Getters Setters Object Object Copy
Automatic Copy
Data Data Replay
Automatic Log/Replay
Object Object
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
Dewan CS 290-063 82
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
[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),
[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),
[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.