Real-time compatible ODF change-tracking
The OASIS Advanced Document Collaboration subcommittee is working on an update of OpenDocument change-tracking (CT). The update will not only enhance the existing CT feature set to the current state of the art, e.g. tracking style changes, but lay the foundation for the standardization of real-time collaboration (RTC) by making CT compatible to RTC. In the first part Svante shows on beginner level the design of the new change-tracking in a nutshell. In the second part Peter shows the prototype of a LibreOffice extension based on the new ideas.
Details of the Talk
The theory part - new design in a nutshell
Pattern of trackable changes of OpenDocument will be derived from common user actions and defined as "operations". The overall design of ODF change-tracking will change from a before/after XML design to a sequence of serialized operations, improving the merge ability using Operational Transformation. To split overall complexity the overall set of valid documents defined by the RelaxNG schema will be split into smaller XML components based on semantic entities known by the user, e.g. table, image, paragraph and character. A complete XML document tree is mappable to a component tree and operations are always referring to a component they are altering, choosing one of the 6 meta operation types: add, remove, split, merge, move and replace.
The practise part - the prototype based on LibreOffce
MultiRatio Ltd. is currently developing the first implementation of the merge-enabled change tracking (MCT) proposal. The developed implementation can be used in LibreOffice Writer as an extension utilizing the Python-UNO bridge. All recorded changes are grouped into change sets, that can be undone or redone in the document separately. A well defined hierarchy of change sets also enables the editor to merge changes from another copies of the edited document, hence the extension fulfills the requirements of collaborative document editing. Currently the extension supports change tracking of added/deleted/moved text content, style changes of characters, paragraphs and ordered/unordered lists. Change tracking of embedded text graphic objects is also supported by the extension.