DESIGNING COLLABORATIVE APPLICATIONS Modeling Single and Multi-User Interactions Design Dimensions Coupling Concurrency Control Undo/Redo
MODELING SINGLE-USER INTERACTION Application Active Display User Editing Commands Flexible Commitment
MODELING MULTI-USER INTERACTION ApplicationActive Display User 1 Active Display User 2 Editing Commands Coupling Concurrency Control Undo/Redo
DESIGN DIMENSIONS – SEMANTIC ISSUES Session Management Single-User Interface Coupling Access Control Concurrency Control Process Control Merging Undo/Redo Awareness Focus
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
STRICT WYSIWIS COUPLING User 1 User 2 If user 1 moves green window Then green window moves on user 2’s screen If user 2 scrolls up in orange window Then orange window scrolls up on user 2’s screen
STRICT WYSIWIS COUPLING User 1 User 2 Pros Easy to understand Application-independent Automatable Cons Window and scroll wars Size and view wars Communication Overhead
COUPLING OF UNEXPOSED REGIONS?
RELAXED WYSIWIS COUPLING Independent Window Positions Independent Window State
SEMANTICS COUPLING
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
Lock Granularity Explicit/Implicit Locking Releasing the Lock Social Protocol Display Consistency Mechanism? FREE VS. CONTROLLED Controlled (Locks)Free Allow Concurrent Operations?
Session Application Window Paragraph/Drawing LOCK GRANULARITY Char Fine-grained Coarse-grained (Floor Control) Variable-grained Ensemble GroupKit DCS XTV Finer Control Locking Overhead
EXPLICIT/IMPLICIT LOCKING ExplicitSelection-implied Lock O Append O, E1 Delete O, E2 Unlock O Select Object Lock + Select Object Move Object Resize Object Unselect Object Unselect + Unlock Object Key-implied (no failure) Press Key -> Lock Buffer + Insert Character Release Key Unlock Buffer Dragging-implied (no failure) Stop Dragging Lock + Drag + Unlock Object Dragging-implied Start Dragging Lock Object + Start Dragging Move Object Stop Dragging Stop Dragging + Unlock Object
Con: Accidental Locking Pro: Low Wait Time Pro: Priority Pro: Consistency Lock O Insert O, E1 Delete O, D1 Unlock O Lock O Insert O, E2 … Lock O Insert O, E1 Lock O Insert O, E2 … Lock O Insert O, E1 Lock O Insert O, E2 … RELEASING LOCKS Non-PreemptivePreemptiveTickle-Locks t > T System: MMConfSystem: CES
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
MULTI-USER UNDO Undo Reasons Single-UserMulti-User Recover from self errors system errors Explore alternatives Recover from others errors system errors Replay facility for newcomers
MULTI-USER UNDO FACTORS Multi- User Undo Single-User Undo Coupling Concurrency Control Linear Single-User Undo Model WYSIWIS Coupling Model
SINGLE-USER UNDO MODEL C1 C2 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1C2C3Undo Redo
GLOBAL (LAST COMMAND) UNDO C1 C2 C1 C2 C3 C1 C2 C3 C1 C2 C1 C2 C3 C1 C2 C3 Undo Semantics Undo or
GLOBAL (LAST COMMAND) UNDO O1 O3 Insert O1, e1 Delete O2, e2 Insert O3, e2 Undo Insert O1, e1 Delete O2, e2 Insert O3, e2 Disjoint Manipulation O2
GLOBAL (LAST COMMAND) UNDO C1 C2 C1 C2 C3 C1 C2 C3 C1 C2 Concurrent Manipulation C1 C2 C3 C1 C2C3 & Undo C3 & Undo Atomic Broadcast Non-Atomic Broadcast
LOCAL, CORRESPONDING UNDO C1 C2 C1 C2 C3 C1 C2 C3 C1 C2 C1 C2 C3 C1 C2 C3 Undo Semantics
Undoing Non-Last Command Create O Rotate O Move O Resize O C1 C2 C1 C2 C3 C4 C3 C4 C1 C2 C1 C2 C3 C4 C3 C4 C1 C2 C1 C2 C3 C4 C3 C4 C1 C2 C1 C2 C3 C4 C3 C4 Undo Dependent action cannot be undone!
SELECTIVE, CORRESPONDING UNDO C1 C2 C3 C1 C2 C3 By Reference C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 UndoUndo (C1)
SELECTIVE, CORRESPONDING UNDO By Filter Rotate O2 Rotate O1 Create O2 Create O1 Rotate O2 Create O1 Rotate O1 Filter (Blue User) Filter (O1)
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo