Q: Is [collaboration] of some interest? [yes!]

Riccardo Bernardini framefritti at gmail.com
Fri Mar 9 13:10:16 PST 2012

Hi Michael,
quite a reply you wrote! To be honest, I am quite in a rush right now,
so I just skimmed it, but I plan to read it with more leisure later
tomorrow. I like to see that this idea has been positively received.
I'll come back in the next few days.


On Thu, Mar 8, 2012 at 11:39 AM, Michael Meeks <michael.meeks at suse.com> wrote:
> Hi Riccardo,
> On Wed, 2012-03-07 at 15:39 +0100, Riccardo Bernardini wrote:
>> I believe this is the right list for this message.  If it is not,
>> please point me to the right list (and accept my apologizes).
>        No - this is a great place to do this.
>> For several reasons (let me skip them), at my University we are
>> thinking about starting a project involving ODF and we would like to
>> know if there is already something similar to what we would like to
>> produce and it the  LibreOffice community could have some interest in
>> it.
>        Wonderful - there is already some similar work underway that Eike is
> looking into, it would be great to have you work with him.
>> The project is about providing LibreOffice with a "Google Docs-like"
>> simultaneous editing capability, but with some improvements and a
>> bazaar (or git) flavor.
>        Ok - so, in the model I'm recommending, the git flavour would be
> something orthogonal.
>> In our vision, each user has control about a "section" of the text
>> (for simplicity, we are aiming mainly to text documents) and every
>> changes made to the document are propagated to all the users currently
>> on-line (with an experience similar to "Google Docs").
>        Right,
>>   The difference with Google Docs is that the document is not in some
>> fuzzy "cloud," but on the user's disk and the user can edit it while
>> off-line, encrypt it, ...  If the user does some changes while off-line,
>> the other copies will receive the updates as soon as the user returns
>> on-line.  Different copies will exchange updates in a peer-to-peer
>> fashion, without the need of a centralized repository (the bazaar/git
>> flavor).
>        Ok - so, (I hope) our focus first would be the on-line co-editing, and
> then use/fall-back to (and improve) the document merging / comparison
> functionality to do on-line/off-line merges.
>> This feature is my "personal itch" since I would actually use to write
>> "many-hands" documents together with colleagues. Moreover, it would be
>> an important feature of LibreOffice, not shared by other editing
>> solutions.
>        Sure.
>> We are aware that there are many technical issues.  For some issues we
>> have solutions, for others we are still "combing our ideas."  However,
>> before going beyond the "idea combing" stage, I would like to ask the
>> following questions:
>        :-)
>> 1.  Are you aware if this type of capability is already available (I
>> do not think so) or currently developed?
>        There is work underway, to bootstrap this via instant messaging, and
> particularly the Telepathy framework - it would be great to make that
> more public / visible and get more hands onto playing with it. Eike - do
> you have something that could go into a feature branch ? :-)
>> 2. Has the LibreOffice community some interest in this idea?  If it
>> has, this would give us a stronger motivation.
>        Yes - of course, we're here to help guide you towards a design that is
> complementary to what we're doing, fits well with the code-base, and
> other people etc. :-) And to some degree I'm here to try to support
> others to help them do cool things with the code-base, of which this is
> clearly one.
>> 3. Do you have some general suggestions for us?  Especially about
>> interfacing the rest of the developers.
>        So - first, talk to Eike (preferably CC'ing the list here). Second -
> here is what I was trying to persuade Eike was a sensible way of doing
> it (which he's prolly detected as insane already ;-). Please bear in
> mind we're starting with calc here ...
>        Here are my thoughts:
>        * It doesn't matter what you do to the document, as long as
>          everyone's document does the same thing.
>        * Thus - whatever protocol you use, it needs to enforce hard
>          ordering, such that edits 'A1', 'B1', 'A2' 'C1' end up in
>          the same order for A, B, and C regardless of latency /
>          topology etc.
>        * Jabber provides this guarentee :-) and a beautiful way of
>          bootstrapping communication from an existing communication
>          tool: telepathy/empathy/IM
>        * Those edits need to do -exactly- the same thing, ie. we'd want
>          the same major version of LibreOffice at each end.
>        ** But ** - and here is where the work starts
>        * We need to ensure that all edits to the document are not
>          applied immediately, but described and dispatched to the
>          Jabber server, and only the events returned are applied.
>        * This means we need a -clean- Controller <-> Model split
>          which we currently don't have ;-) -although- some things
>          are really quite pleasant, eg. dialogs often tend not to be
>          instant apply, and to collect up their changes into
>          abstract SfxItemSets (PropertyBags to you and me) so with
>          work we can tease out the controller perhaps.
>        * And of course, some thinking of good ways of managing
>          cursor locations, and transmitting other people's
>          movement around documents to maintain sensible editing state
>          is necessary.
>        This is not a perfect model of course, but it is conceptually very
> simple & I hope robust. It may mis-behave, but it should -always-
> mis-behave identically everywhere :-)
>        Here are some anti-thoughts, ie. steer clear below :-)
>        * Hooking Undo / Redo is not a better model
>                + other approaches tend to serialize undo information,
>                  this provides a similar approach, it relies on
>                  mostly matching semantics
>                + yet really you need to serialize the undo information
>                  from just before your edit was applied, since
>                  otherwise state can get out of sync, yet you can't
>                  know what that is until all edit events have come in
>                  to your latest one.
>                + also you only want to send 1/2 the undo information -
>                  consider deleting a row or column in calc - this can
>                  generate a staggering volume of undo data.
>                + ergo - I think that building and testing a clean MV-C
>                  split is a better way-point, and layering some clever
>                  undo/re-do presentation on top of that would be
>                  better.
>        * inspect & synchronise is not either
>                + most lame collaboration solutions do instant local
>                  apply (ie. at least you see your edit fast)
>                + then they try (often via UNO - ie. with one hand
>                  chopped off ;-) to detect those changes to the
>                  document
>                + then they try to serialise that, and send it remotely
>                + as you can imagine running into conflicting edits here
>                  is a disaster of trying to unwind and re-apply code
>                  changes.
>        Anyhow - as you can see, I'm personally rather interested in this
> topic, and would love to watch / help out from time to time with it. It
> is one of the last big missing pieces in our development picture - it
> would be awesome to have more people working on it. I really do think
> that Calc is the best place to prototype this too.
>        Will you be working this summer ? and/or would you like to be involved
> in a Google Summer of Code project on this topic ?
>        All the best,
>                Michael.
> --
> michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot

More information about the LibreOffice mailing list