a 'mooh' point

clearly an IBM drone

OOXML is defective #2 (depends on proprietary technologies)

A standard is not "free enough" if implementation of it depends on existance of a proprietary technology on the specific platform. Ideally it should be possible simply to buy the specification and implement it without any other financial requirements.

This is where OOXML fails.

OOXML heavily depends on "Object Linking and Embedding Technology" also known as "OLE-technology". Section 9.3.3 of the specification deals with how objects are embedded in the file format. The section is divided in two where the first section specifies how to embed documents otherwise defined in this standard. These documents are defined as

  • Formulas
  • Charts
  • Spreadsheets
  • Text documents
  • Drawings
  • Presentations

This is one of the clear cases where it is obvious that Microsoft continiously tries to preserve their main cash-cow: The Microsoft Office eco system! OOXML not only depends on Microsoft's proprietary technology OLE, the specification itself also makes it more easy to embed it's own "cousins" than any other file format. Talk about "first class citizens" of OOXML!

The section goes on telling us about binary objects:

Objects that do not have an XML representation. These objects only have a binary representation [...] (see [OLE]).

WTF? Once again a reference and requirement to use proprietary technologies like OLE! What if I want to embed my own JLSObjectType? What if I want to embed some object from the Linux-world like Bonobo-elements or KParts? The schema-elements only emphasizes my point:

<draw:object/> and <draw:object-ole/>

Are you also puzzled by this? Well, I don't blame you. To wrap up - we can embed "our own documents" and we can embed everything else. There are even two seperate elements from the draw-namespace that specifies this for us: <draw:object/> and <draw:object-ole/>. The entire schema-fragment is included here for your pleasure:

<define name="draw-object">
    <element name="draw:object">
        <ref name="draw-object-attlist"/>
            <ref name="common-draw-data-attlist"/>
            <ref name="office-document"/>
            <ref name="math-math"/>

<define name="draw-object-ole">
    <element name="draw:object-ole">
        <ref name="draw-object-ole-attlist"/>
            <ref name="common-draw-data-attlist"/>
            <ref name="office-binary-data"/>

This is yet another example of Microsoft on one hand claiming "openness" and with the other hand forcing everyone to use their own proprietary, undocumented technology.

But we're not done:

The embedded object is referenced through an XLink attribute in the enclosing frame-element. The behaviour is described as (bold typeface is my addition, /JLS):

The xlink:href attribute links to the object representation, as follows:

  • For objects that have an [OO]XML representation, the link references the sub package of the object. The object is contained within this sub page exactly as it would as it is a document of its own.
  • For objects that do not have an XML representation, the link references a sub stream of the package that contains the binary representation of the object.

Wow - wait a minute: Is this it? Don't you think a bit of clarification would be in order?

The fileformat for the physical file is a Zip-archive with a number of files and folders in it. But this archive also contains a "TOC"-list of the files and the mime type of the entire package. The latter is not an XML-file - where do I put this? Where do I put the TOC-file? What if my spreadsheet contains an image? Since the image is not in XML-format (it's binary) ... would my entire spreadsheet qualify as having "an XML representation"? And did you notice the part "the link references a sub stream of the package that contains the binary representation of the object."? A stream? Binary representation? Again totally unspecified behaviour and noone will ever be able to implement this apart from Microsoft and Microsoft Office 2007.

Microsoft had a good chance to specify this properly in the beginning. They could have made an open format to enable competition or a format that would stiffle competetion. So what does Microsoft do? Yup, the anti-competitive choice. Anyone surprised?

Hyprocrisy 101

Software politics: Hypocracy 101

Course Title: Hypocrisy 101
Major: Software politics
Points earned: 10 ECTS
Prerequisites: none
Attending professor: Mr. Rob Weir, IBM

Course abstract:

When participating in the ever evolving landscape of software politics you need to master a variety of tools essential to ensure your success and accomplish your goals. This course will give you the ability to master any discussion involving software politics and to blow your opponents off the field

Course contents:

Deny, deny, deny: 5 lessons

Introduction: You will have to be able to deny anything at any place without flinching. Even if your opponent has fact-based arguments, simply dismiss these as either

  1. wrong
  2. from questionable resources
  3. or based on faulty assumptions

Remember, you choose what you want to comment on and you choose which arguments to take. 

You’re fucked either way: 4 lessons

Introduction: Never say anything wrong but also never say anything correct. If you are challenged on something you said, simply take any valid and solid resource and pick something out of context. If you are challenged on this, do one more iteration. Most documents can be interpreted either way, and only your imagination limits you in what you can do. 

Talk is silver but silence is gold: 6 lessons

Introduction: This is tricky to apply in a real-world, offline, discussion – but when applied to an asynchronous discussion on a blog, it works wonders. Whenever you feel challenged or cornered up in a discussion, simply leave for at few days. This will effectively dampen down the discussion and cool everything off. Then come back after a few days and pick up another, more easy, discussion as if nothing happened. If someone complains about you leaving the discussion – simply argue that you have a day-job to do to support wife and kids and bloggin’ is your secondary activity.'

Beat around the bush: 8 lessons

Introduction: Aside from not being concrete on anything, you will have to be able to master appearing to answer a question - when you are really not. A real-world example of a perfect example of this is from the blog of Brian Jones.

Brian Jones said:

You know what Rob, how about if you just take the questions and responses and post them on your own site? You are a member of the US national body and you have access to all of the materials. If it's no big deal, then post them for everyone.

Where to the attending Professor, Rob Weir, replyed:

I wouldn't want to give the Ecma password out, because the Ecma server is already slow as it is, and I wouldn't want to put more load on it.  Best to keep that for NB-access only.

Notice how this should be mastered? It appears that the question is answered ... when really, it's not.


With regards to which books and resources will be used throughout the course, feel free to contact the attending professor, preferably on his blog at http://www.robweir.com/blog/ .