Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Hi Riccardo,

On Thursday, 2012-03-08 10:39:47 +0000, Michael Meeks wrote:

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.

Right, let's coordinate things a bit. Seems this topic comes up more
frequently recently, we should really avoid conflicting approaches.


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.

That's what I had in mind as well. My approach would be to use
a change-tracking enabled document, because (besides that it gives you
the benefit of being able to display who changed what when) then
actually only trackable (content, not attributes) features are enabled,
and the current file based collaboration (aka shared document) uses this
mode as well, as does the compare/merge document feature. It talso
provides functionality to accept/reject changes. Note that I'm Calc
biased here, Writer doesn't have the shared document feature yet, though
it does have change-tracking.


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 ? :-)

I can commit the remainders of what I have (threw away the first
unpromising approach) to a feature branch this week.


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 ;-).

Actually not that much ;-)

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.

This is absolutely a must, especially when it comes to edits that move
things in the document, such as inserting/deleting rows/columns or
moving cells.

      * Jabber provides this guarentee :-) and a beautiful way of
        bootstrapping communication from an existing communication
        tool: telepathy/empathy/IM

Yup, and a hard one to deal with..

      * Those edits need to do -exactly- the same thing, ie. we'd want
        the same major version of LibreOffice at each end.

I'd rather version the collaboration feature, so each end can
announce/handshake on the minimum collaboration version required,
instead of tie it to the LibO version.

      ** 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.

That would be a long run, but yes, at the end that's probably what we
want.

      * 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.

I don't think tracking cursor locations is needed. An edit action would
be transmitted as "at position (or range) so and so do this and that".

Maybe locking a region to announce "I'm going to edit here" would come
handy to prevent clashes.

In Calc, the ScDocFunc provides almost what's needed and is already used
by UI and API (not consistently, but to a great amount), feeding it from
edit actions as an intermediate layer should be possible. This again
made me think of reusing the existing API and serialize it through
online editing, not sure how far we could go there, but once the basics
were implemented we'd cover a great deal of functionality almost at no
cost.

  Eike

-- 
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3  9E96 2F1A D073 293C 05FD

Attachment: pgp0vs970neQN.pgp
Description: PGP signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.