Interoperable
OfficeCollaboration
Svante Schubert
TIRANA | 12 Sept. 2019

What is Collaboration?
Collaborative real-time editor (2 modes)
In the end all “copies” are the same!
1) Real-Time Mode
Good for working with a group of trusted
members.
2) Non-Real-Time Mode
Users like to be in control of all changes.
Legal departments of two companies
collaborating.

What is Collaboration?
Collaborative real-time editor (2 modes)
1) Real-Time Mode(e.g. Etherpad, Google Docs, etc.)
Users can edit the same document
simultaneously.
2) Non-Real-Time Mode(similar revision control systems)
Users edit a copy of document and merge
later.

What is Collaboration?
Collaborative real-time editor (2 modes)
In the end all “copies” are the same!
1) Real-Time Mode
Automatic fix of merge conflicts!
(for convenience).
2) Non-Real-Time Mode
Merge conflicts have to be resolved by theuser!

How do real-time editors work?
- No documents are dispatched!atching d
As stupid as developers sending
software repos!
- Sendingchanges/operations/differences/DIFFs!
Best not text/syntax based, buthigher abstraction level:
semantic changes!

Requirements to implement
Collaboration in LibreOffice?
„Some time-machine would beappropriate..“Why is Collaboration a Problem?
“Collaboration“ in the 80ths!
Design based on former Requirements●●

In the 80ths: One person on
single machine
Exchanging document by floppy discor modemDocument Collaboration Today
New Requirements●●●

With Smartphones everyone has
multiple machines(Smartphone & PC/Laptop)
Exchanging documents faster via
Internet, Mail, Dropbox, etc. will
not solve the merge problem!
Key Collaboration Question:
What have you changed?

Document Collaboration Idea
New Change Design●●●

Allow collaboration functionality
similar as software developers havewith repositories
Exchanging changes (commits)
instead of documents (repositories)
via Internet, Mail, Dropbox, etc.
Solving Key Question:
What have you changed?

ODF Collaboration Prototype
Upcoming Goals●●

Prototype of Collaboration of Editors
based on ODF Changes (ODFDOM)WYSIWYG Editors with different
feature set editing sameODT Document:– LibreOffice (ODT)– Emacs (Text)– CKEditor 5 (HTML 5)ODF Toolkit – CKEditor5
Proof of Concept●

Build your CKEditor5 example:
git clone -b stable https://github.com/ckeditor/ckeditor5-build-classic.git
npm install
npm run build●

Open local editor in browser (& add eventlistener from notes)./sample/index.html

ODF Toolkit – CKEditor5

Demo results in Chrome console●●

enventinfo[object Object] args[{"baseVersion":12,"position":{"root":"main","path":[0,6],"stickiness":"toNone"},"nodes":[{"data":"X"}],"shouldReceiveAttributes":true,"__className":"InsertOperation"}]index.html:48 enventinfo[object Object] args[{"baseVersion":13,"range":{"start":{"root":"main","path"[0,3],"stickiness":"toNext"},"end":{"root":"main","path"[0,7],"stickiness":"toPrevious"}},"key":"italic","oldValue":null,"newValue":true,"__className":"AttributeOperation"}]Bringing ODF Changes toODF Specification●●●ODF XML base of interoperability
Define „User Semantic Entities“ (e.g.
table, image) from ODF XML
Define how „User Semantic Entities“are changed via parameters of APIODF Collaboration Resources
Resources●●●●Website (in progress):
https://tdf.github.io/odftoolkit/docs/odfdom/operations/operations.html
Sources:
https://github.com/tdf/odftoolkit
3 Pages:The Next Millenium File Format
ODF Specification
http://docs.oasis-open.org/office/v1.2/os/