InfoQ

News

OpenXML vs ODF: Round 2

Posted by Jonathan Allen on Jan 22, 2007 06:00 AM

Community
.NET
Topics
Interop
Tags
Standardization ,
OpenXML ,
OpenDocument Format

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:

2.15.3.51 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 (§2.3.1.33). 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.

 

No comments

Reply

Exclusive Content

Composite Oriented Programming with Qi4j

We introduce the concept of Composite Oriented Programming, and show how it avoids the issues with OOP and reignites the hope of being able to compose domain models with reusable pieces.

Dan Farino About MySpace’s Architecture

Dan Farino talks about the system architecture and the challenges faced when building a very large online community. Dan explains how a .NET product scales on hundreds of servers.

The Maxine VM

Bernd Mathiske discusses Maxine VM, Java compatibility, swapping major VM components, research areas, Object handling, code examples, optimizing compiler, snippets, bytecode generation, JNI and JIT.

Joe Armstrong About Erlang

Joe Armstrong speaks on various aspects of the Erlang language, presenting its roots, how it compares with other languages and why it has become popular these days.

The Limits of Code Optimization: a new Singleton Pattern Implementation

The java double-check singleton pattern is not thread safe and can’t be fixed. In this article, Dr. Alexey Yakubovich provides an implementation of the Singleton pattern that he claims is thread-safe.

Pressure and Performance – The CTO's Dilemma

Diana and Jim talk about patterns observed in CTOs' activity. CTOs emerge as real people caring for other people in their organization, and are put under a lot of pressure and constraints.

Biztalk Services in the Cloud

Cloud computing feels like a tomorrow technology. Simon Thurman shows how developers can use Biztalk to create an Internet Service Bus which can be deployed locally or in the cloud.

Java FX Technology Preview

InfoQ takes a look at the JavaFX preview build and talks to Sun Staff Engineer Joshua Marinacci about the upcoming version 1 release expected this autumn.