GNOME Support of OOXML

Russell Ossendryver, who sits on the OpenDocument Fellowship, recently heavily criticized GNOME for supporting Microsofts Office Open XML (OOXML) format. While I agree with the basic intent of Russell’s post, that the Open Document Format is already an ISO standard and there is no need for a new standard, I feel that he does a poor job of understanding the events he’s commenting on.

There are only a few instances that I am aware of where GNOME Foundation Members, or Developers have given any indication that OOXML is a worthwhile format. Earlier this year, Miguel de Icaza posted several large posts about why he felt that OOXML was a good standard. A large part of this, was simply that he felt it was a more complete standard than ODF was. Miguel claims that ODF has 4-10 pages devoted to documenting Spreadsheet formulae and functions, while OOXML has 324. This raises an interesting point, as many people have criticized the OOXML standard heavily, due to it’s 6000+ pages, compared to ODFs trim 722. Miguel’s point is that to implement an ODF spreadsheet application based on the ODF documentation, would force a user to examine an already implemented solution. I suppose he would know.

Finally, the gnumeric team has said that it was easier to implement support for OOXML than ODF. When you look at the history of gnumeric, this really isn’t a surprise. gnumeric used to be criticized for being such a perfect Microsoft Excel clone, that they even reproduced several of the more insidious bugs in Excel. Humorous, yes. But not necessarily good. In effect, gnumeric was structured internally in a fashion very similar to Excel, which made supporting OOXML very easy for the gnumeric team.

Really, this all comes down to which is the better standard. An open standard is an open standard, regardless of who drafted it. Admittedly, I am as wary as Microsoft as most long-time Linux users, but any technology they’ve released that has been loosed upon the world as an open standard, doesn’t make me as nervous, which is why I support Mono. Again, I can’t argue with Miguel about which spec is more complete, but there are others who can. According to Rob Weir, OOXML’s forumalae descriptions are deeply flawed, such that all that description doesn’t matter since the answer won’t be correct anyhow. Plus, OOXML is nothing more than an XML-ized version of Microsoft’s old binary formats. Microsoft did nothing to clean up the format to be human-readable and editable. It’s still covered in optimizations that were made 15 years ago, but simply don’t make sense in today’s world. The file format used in Office 2007 isn’t actually the same format submitted to ECMA and ISO. I could go on.

OOXML is a poor standard, not because it comes from Microsoft, but because it doesn’t offer any of the benefits that XML should offer. It’s a binary format wrapped up in XML, where there are so many interdependencies that the only good way to modify a OOXML file programmatically is to use the Office COM objects, since editing the XML directly is almost certainly going to break something. OOXML isn’t even a step forward in Microsoft Office documents, let alone in Open Standards. Plus, ODF is better for business, since it natively supports document-wide options to ensure that calculations are done with correct precision, which is very important in accounting. Microsoft Office has a long history of rounding errors which can cause problems, and there are no signs that they’ve gotten any better with Office 2007.

While I agree with Mr. Ossendryver on the overall point that ODF is simply the better format, his criticism of GNOME for supporting .NET as well is simply foolish. No Open Source project (aside from Mono, obviously) can compare to what .NET is. Even Java is a poor comparison to .NET, as it lacks many of the features that make .NET so interesting. The ability to easily share code from different languages, and share variables between those languages. Plus, in my opinion, C# is simply a superior language to Java, though it’s existence has begun to push Java to new heights I don’t believe it aspired to before. Ultimately, Mono wasn’t about Microsoft Interoperability. It was about making development for GNOME easier, and I think it’s done that. However, interoperability with Microsoft technologies is not a bad thing for Linux as a whole.

It’s not secret that Microsoft has been pushing .NET incredibly hard since it’s inception. With .NET 2.0 and the new .NET 3.5 being released soon, developers for the Windows platform have really embraced the tehcnology. Mono provides a means to show developers that the application they developed in .NET can be made to support Linux with relative ease. Making it relatively simple for developers to target multiplete platforms with a single codebase increases our choices of applications on all platforms. In his interview on FLOSS Weekly, Ryan ‘icculus’ Gordon makes an observation based on his time at Loki Games. Targetting individual games wasn’t going to get Linux anywhere. It was in the best interest of Linux and Linux Gaming to target platforms, such as iD’s engines (which iD has always been good enough to port), and the Unreal Engine.

By making these game Engines available on many platforms, developers can choose to target multiple platforms without having to work too hard at it. While few licensed games for Unreal Engine have been released for Linux to the general public, this has evidently made a large impact on Arcade Game manufacturers, who can cut costs by using Linux and only having to license Unreal. Mono serves a similar purpose. It provides developers with an option to use a different platform, and it’s apparently become fairly popular among ASP.NET deployments.

I still feel that .NET is a good Open Standard, and a solid platform, and I’m pleased with the work that Mono team has done to develop it. While I fully support ODF, and hope it becomes the format of choice, I argue that we should fight against OOXML because it’s a substandard format, not because it was written up by Microsoft.