uwog.net

Latest news entries

AbiCollab Session Takeover

In AbiWord's collaboration model there is always 1 document 'leading' in a collaboration session. We need this leader role mostly to resolve merge conflicts, and also to keep the algorithms relatively simple. The annoying part of this design is ofcourse that the 'leading' document can't leave the collaboration session. Fortunately the algorithms were designed with 'session takeover' in mind, so that any participant in the session would be able to take over the leadership role... At least in theory, since I never actually implemented it. OLPC users that use Write's sharing functionality are bugged by this. The same holds for abicollab.net users.

So over the last two weeks I finally found the time to implement support for session takeover in AbiCollab's core. The different transport backends will need implement 3 or so new functions to enable this functionality, which I alread did for the abicollab.net backend. The Sugar Tubes based backend should be able to support this, as well as the XMPP backend. The plain old TCP backend will probably not support this feature, as the new leader would have to start a server, open up/forward the required TCP port for people behind NATs, etc. I don't feel like dealing with that mess :)

It looks pretty nice so far... maybe except for the fact that I need to lock the document during session takeover. We don't need locks anywhere in the protocol, so I still hope to come up with an improved solution that doesn't need it anymore. OTOH, it's mostly nitpicking as in practice the takeover requires just 5 tiny packet roundtrips, which on the abicollab.net backend takes less than a second to complete.