Divshot / Intridea
Fellow at @intridea, co-founder of @divshot, creator of @quptv, purveyor of fine open source software for the web.
Thanks for your vote and feedback!
It isn't very well done :) I guess that you saw the video - we were really trying not to break things :P
The fact is that the syncing algorithm was the biggest challenge. We couldn't follow Google Doc's way, because they aren't using contenteditable. They aren't using HTML. They rendering every letter from scratch and listen for every user action.
CKEditor is based on contenditable and that lets us integrate it directly with websites. We don't listen on every user action and draw editor contents, browser does this. Unfortunately, then we have to sync DOM, not user actions. And here problems begin :) It's very hard to diff and sync DOM without breaking caret and many other things. We wrote these algorithms from scratch and they can do basic diffing and syncing (we prevent diverging, because we implemented kind of SCM :).
The problem is that now, when someone type, text node or element is removed and new one is inserted on the same level. This is enough when two users type in separate blocks, but when they do this in one, then their carets are reset because I'm deleting&inserting text nodes in which they are :). Another problem is with synchronising changes like paragraph -> h1, because we should restore other carets that were there. Etc. etc. A lot of problems have to be solved to make EPIC usable.
But we're planning to try this. Luckily, we're CKEditor core developers, so we have some background that is essential for this project. I hope we'll be able to solve some critical issues and we definitely open source this project. In fact, we'll publish code in few days.
We got knocked up AGAIN? ;)
Thank you! We have some ideas how to differentiate, we will see :)
Thanks for your advice! This was a concept that we wanted to test with other people around the world and with the nodeknockout community =D