OpenXML vs ODF: Round 2
One of the most hotly debated areas in the OpenXML spec is the number of partially documented compatibility flags. But as we see, ODF isn't innocent in this area either.
One of the goals of the OpenXML spec is to faithfully represent preexisting file formats in their entirety. It isn't an idealized spec designed to be "correct" from the start, but rather a continuation of the file formats dating back from the early years of programs like WordPerfect and Lotus 1-2-3.
As we reported last time, this resulted in some ugliness like treating the year 1900 as a leap year. However, this isn't the only problem facing the spec.
Rob Weir of IBM has pointed out several places where the OpenXML format is incomplete. While the spec mentions the compatibility flags for older document formats, it doesn't go into detail on how to implement them. One example he cites is:
126.96.36.199 suppressTopSpacingWP (Emulate WordPerfect 5.x Line Spacing)
This element specifies that applications shall emulate the behavior of a previously existing word processing application (WordPerfect 5.x) when determining the resulting spacing between lines in a paragraph using the spacing element (§188.8.131.52). This emulation typically results in line spacing which is reduced from its normal size.
[Guidance: To faithfully replicate this behavior, applications must imitate the behavior of that application, which involves many possible behaviors and cannot be faithfully placed into narrative for this Office Open XML Standard. If applications wish to match this behavior, they must utilize and duplicate the output of those applications. It is recommended that applications not intentionally replicate this behavior as it was deprecated due to issues with its output, and is maintained only for compatibility with existing documents from that application. end guidance]
Two things should be noted about this. First, there is clearly not enough information to faithfully implement this part of the specification. As Rob says, "So not only must an interoperable OOXML implementation first acquire and reverse-engineer a 14-year old version of Microsoft Word, it must also do the same thing with a 16-year old version of WordPerfect."
The other thing one should note is that the spec states, "It is recommended that applications not intentionally replicate this behavior". Or in other words, the spec creators expect only MS to worry about the flag and that others should think about it. Though of course that means other programs cannot faithfully reproduce older documents that use it.
So how does ODF, which was designed without the baggage of backwards compatibility, stand up. Surprising, not very well at all. Brian Jones of Microsoft created a blank document using Open Office and posted the raw file to his blog. In it are over 60 compatibility flags are completely undocumented in the ODF spec. Not only is there no guidance on how to implement them, there is no mention of their existence at all. As Brian says,
So what part of this is defined in the ODF spec? Well all of the elements are defined, but the problem is that there are only 4 elements used. The actual data can't be determined by the name of the element, but rather the value of the attribute "config:name".
None of those values are defined in the specification though, so there is no way for two applications that follow the spec to share any of these properties without the two applications working together to define a completely new standard within the standard.