The future of the Simple API is that it will be discontinued after 0.9.0
due to copied source code parts and the resulting inability to add the new
Still, the very idea of a high-level API will be continued.
In the future, we should have some architecture as the following
Slide 16 from last year's LO presentation:
Currently, we have unfortunately up to two to three places where the
functionality of this future high-level API resides. This has to be
1. In the Simple API (deprecated)
2. In the ODFDOM doc package
(the origin of Simple API fork, deprecated afterwards in favour of the
Simple API and now likely being enabled again)
3. In the ODFDOM changes packages
which embraces the functionality to 'compile' an OpenDocument text file
into an equivalent sequence of (JSON) changes
and allows merging of new changes back. Why are compiling an ODT into
changes? Because sending documents around for collaboration is as clever as
if software developer would be zipping their source code repositories and
sending those instead of change commits!
There is already some change API documentation
and it will be improved for the 1.0.0 release.
The transforming concept is as follows: Transforming an ODT into the user
changes creating it:
Slide 13 (above) and 14 (below) from last year's LO presentation:
Thanks again to the PrototypeFund project who had supported this
And the other way around, it is a merging of new user changes back into the
These changes are currently serialized as JSON, for instance, to be sent to
a web editor such as OX Documents
(FYI - I implemented several years for Open-XChange this implementation in
AL2 license on their fork of ODFDOM).
But changes could be serialized for other reasons, for instance in XML and
being added to the ODT zip for Office change-tracking. I have suggested
this approach to the OASIS TC and my approach succeded against DeltaXML and
Microsoft to be implemented in ODF for change-tracking, but currently,
aside of us/me nobody is implementing it yet, therefore the Subcommittee of
"Advanced Document Collaboration" of OASIS - which I am chairing - is
I have applied/looking for funding to refactor the implementation of the
In the nutshell, to describe declaratively this bidirectional
transformation (ODT <=> changes) and generate source code (and the OASIS
changes specification) from it.
Basically, the ODT grammar will be mapped to an API (a way to change the
XML, like explaining what happens during an insertRow).
Naturally, aside from the underlying DOM alterations, the higher-level API
would be generated as well, but this work is not done at once, but step by
step exchanging existing manual written code.
By this, we could work on one logic creating also C++ code for LibreOffice
or a TypeScript implementation for the browser or testing it in RUST.
For more information, I have tried to explain all the above (and the larger
picture) within two talks at the XML Prague this year:
1. https://www.xmlprague.cz/day2-2020/#xmlpp (slides)
2. https://www.xmlprague.cz/day3-2020/#nmdf (slides)
and earlier written the final vision down on 3-4 pages for a poster session
and short presentation at the ACM symposium end of last year here in Berlin.
It is a summary of all the pain points I met in the past 20 years working
on document formats and standardization: "The Next Millennium Document
Looking forward to questions and feedback,
PS: I plan to add in the future the pictures from the slides directly to
our project online documentation.
Currently aiming for the end of May to focus my work on the ODF Toolkit
releases (and documentation).
To unsubscribe e-mail to: email@example.com
Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette
List archive: https://listarchives.odftoolkit.org/dev/
- [dev] The Future of the Simple API (and ODF Toolkit) · Svante Schubert
Impressum (Legal Info)
: 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