A month stale new, but I was happy to see Thorsten Behrens' blog entry SmartArt Import and More. Thorsten works on the graphics engine for OpenOffice's presentation application Impress. SmartArt is the name Microsoft give to a feature in Office 2007 where the user enters various kinds of two or three level lists, and these are converted to some pretty diagrams or graphics: structured data to graphics.
Anyway, what I want to call out is a sequence in Thorsten's blog:
Since I needed a SmartArt layouting engine anyways, it was quite natural to (re)use that for actually editing and relayouting the content in Impress! For that to work, of course either the ooxml input fragments or some derived data structure have to be available at the shape; again the most straight-forward way was to use ooxml directly (in the form of an in-memory representation of the xml tree, aka DOM).
- He wanted to allow SmartArt import in Impress. —Better interoperability requires feature matching.
- In order to do this, he found he may as well provide editing too. —The minimal implementation required more functionality than might be minimal, but it in turn meant some new low-hanging fruit. Merely being able to edit the rendered version of some structured data is not much compensation for the convenience of editing (simple) structured data directly.
- The OOXML was usable and indeed "the most straight-forward way". —I am not surprised.
A requirement for ODF Next Gen?
The kicker is in the comments at the end. A contributor asked:
George: >So I"m curious, can you save this to ODF format >once you have the slides done?
> George, yeah you can, but it's a hack. ;-)
I suspect ODF Next-Gen will need enhancements to cope.
Thorsten's wasn't the only effort in this. It turned out that there is also another effort for the same thing coming out of the RedOffice team in China: Intelligent Groups. I hope they will all be talking and that we will see a good implementation in due course, because it is a really neat feature.
This is one area where ODF could really have used an alternative content facility like OOXML's MCE. The rendered graphic in standard ODF 1.n could be the default, and the smarter structured data in another part, and there would be backward compatability. It seems to me to be completely topsy-turvy to leave the features that will allow backwards compatability to some later time, when it will be too late for them to be any use. But that is what the ODF 1.2 spec will do. Wasted opportunities like this spring out of an underestimation of the advantages of plurality, in my book. A lack support for plurality makes things that should be a small problem (a smarter version of data which can be rendered using current graphics) into a non-interoperable problem.
The effect is that whatever SmartArt-alike gets incorporated into ODF-Next Gen (which may be finished in 2010, but more likely 2014) will not be compatible with today's OpenOffice applications. But not because of any technical reasons.
Having no MCE-alike in ODF 1.2 also increases the burden on implementers for coping with ODF Next-gen features. With MCE, they could put in code now to always chose the fallback version of any alternative content, only allowing that fallback to be strict ODF 1.2. Then any new ODF Next-Gen features (such as Intelligent Groups) would be gracefully coped with. The developer would be free to incrementally support additional Next-Gen features rather than having to support them all in a big bang. This would help smaller projects in particular.
Note: If you look through the OOXML standard IS29500 (publicly available) you won't find any reference to SmartArt. It is the name of a user interface feature that is backed up by some simple...err straightforward markup: the DrawingML vocabulary has an element called dataModel which is a graph of pt elements (data points). The primary reference is of course the ISO standard, IS29500 Part 1, s21.4 - Diagrams. There is a little language including forEach and constraints for different graphical compents too: there are sections for the datapoints list, the connections lists, styles and so on.