Realtime Collaborative Editing


#1

I am curious if there is a way to have multiple users edit a diagram at the same time. I have built a workaround (for now) that reloads the diagram anytime another user makes a change. The problem though is that this essentially reloads the model and removes any undo history. Additionally, if two users make the changes at the same time, one overwrites the other’s changes.


#2

By coincidence we are working on such a sample right now. But I cannot promise that it will be finished at any particular time.


#3

Okay great! Will this question be updated when you have this implemented? Or do I need to routinely check for changes?


#4

The former.


#5

Partly implemented: https://gojs.io/collab/ This is alpha-quality software.

No support for undo/redo. And I’m confident there are a lot of bugs, since it hasn’t been tested a lot.

Each user has their own Diagram.position, Diagram.scale, Diagram.selection and anything else that isn’t stored in the model.

I was going to show other people’s selection visually in the diagram, but haven’t figured out how to do that in a nice manner. Originally I thought it would be good to show translucent node or link backgrounds where the color would match up with one assigned to the other person, much like how you see different insertion point cursors in Google Docs. This could be done without modifying any templates. But I’m not so keen on that design. For now the “Other users” line shows their user ids and their selected part keys.


#6

This is a great start! I look forward to seeing how this progresses and seeing undo/redo functionality in particular.