Collaborative Editing

Marcus Rohrmoser edited this page Mar 29, 2011 · 1 revision

Table of Contents

Goal

JCurlShotPlanner should become a collaborative real time editing tool. Every editing action (change to the underlying datamodel) is replicated to all participating users. Including "file open / reset" and the like - though vetoable.

Means

  • use a Jabber/XMPP chat session to transport real text communication and graphical changes
  • hook this communication layer into the Undo

Problems

  • avoid restrictive locking whenever possible

Approach

Scenario

Let's assume Bob and Sally want to discuss some curling tactics, then

  1. Bob launches JCurlShotPlanner
  2. Bob configures his jabber account and connects the jabber server
  3. Bob starts a new file
  4. Sally launches JCurlShotPlanner
  5. Sally configures her jabber account and connects the jabber server
  6. Bob sees Sally in his presence list
  7. Sally invites Bob to join a "session"
  8. Bob sees the invitation (dialog) and a warning that he'd loose the pending file changes.
  9. Bob chooses to save this current file and then accept the conversation.
  10. Sally's current file gets wired to Bob
  11. both edit concurrently.
  12. dragged objects are locked on "startdrag" (first change) and unlocked on drop.
  13. undo/redo operations are pushed as new edits ontop the other's undo stack

Consequences

  • some housekeeping dialogs required (jabber account and session management, presence display)
  • chat text input & output display required
  • display current participants (most important for multi-user chats)
  • display a edit-history labelled with originating user
  • mark the locked objects somehow (use a enabled property? Or does this need to be personalised? Something like a nullable lockholder property?)
  • add a "force break lock" command

Links

Wikipedia

Papers

  • Consistency maintenance in real-time collaborative graphics editing systems<bibref>Sun2002</bibref>
  • Undoing any operation in collaborative graphics editing systems<bibref>Chen2001</bibref>
  • Undo any operation at any time in group editors<bibref>Sun2000</bibref>
  • A framework for undoing actions in collaborative systems<bibref>Prakash1994</bibref>
  • Multi-User Undo/Redo<bibref>Choudhary1992</bibref>
  • Enable collaborative graphics editing in mobile environment<bibref>Jiang2005</bibref>

References

<bibreferences></bibreferences>

Category:Design

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.