<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="/style/browser.xsl" type="text/xsl"?>
<essay xmlns="http://docbook.org/ns/docbook"
       xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
       xmlns:dc='http://purl.org/dc/elements/1.1/'
       xmlns:dcterms="http://purl.org/dc/terms/"
       xmlns:gal='http://norman.walsh.name/rdf/gallery#'
       xmlns:foaf="http://xmlns.com/foaf/0.1/"
       xml:lang="en"
       version='5.0'>
<info>
<title>XML FTW!</title>
<volumenum>13</volumenum>
<issuenum>4</issuenum>
<pubdate>2010-01-25T17:21:37-05:00</pubdate>
<author><personname>
<firstname>Norman</firstname><surname>Walsh</surname>
</personname></author>
<copyright><year>2009</year><holder>Norman Walsh</holder></copyright>
<abstract>
<para>On the serendipitous joy of finding XML.</para>
</abstract>
</info>

<para xml:id='p1'>As I've
<link xlink:href="http://norman.walsh.name/2009/11/01/evernote#p7">said</link>
<link xlink:href="http://norman.walsh.name/2008/12/08/whichEndIsUp#p6">before</link>,
I'm <emphasis>very reluctant</emphasis> to use your application if it's
a roach motel for <emphasis>my</emphasis> data.
It would not be fair to say that I'll <emphasis>refuse</emphasis> to use your
application, it's just a lot less likely.
</para>

<para xml:id='p2'>For example, when it came to <link xlink:href="gsd">GSD</link>, I decided
that open access wasn't as important as picking an application that I'd actually use.
If I let myself get distracted by exploring APIs, there'd be other things
not getting done! (Priorities!)</para>

<para xml:id='p3'>Having made my bed, I figured I should see what I was lying in.
Today I took a peek at how <wikipedia>OmniFocus</wikipedia>
stores data. Now, the title of this essay no doubt gives away the
punch line, so consider for a moment how this would have been done in
the time before XML.</para>

<para xml:id='p4'><emphasis>…go on, have a think, I'll wait…</emphasis></para>

<para xml:id='p5'>In my experience it would probably have been in some proprietary
format, almost certainly binary, and utterly opaque. How many tools
document(ed) their proprietary data formats? On some platforms, there
might have been system services for storing data, some sort of
platform-supported database perhaps. Those systems are (often) only
marginally better. They produce, instead of an opaque stream of bits, an
opaque stream of atomic values. (Don't get me wrong, I've done the
reverse-engineering thing on binary formats, I'd prefer the stream of
atomic values, believe you me.)</para>

<para xml:id='p6'>What did I find when I went looking at the OmniFocus data? A directory
full of ZIP files. And what's in each ZIP file? Why <filename>contents.xml</filename>,
of course!</para>

<para xml:id='p7'>Now, it would not be fair to assert that this is perfectly
transparent. XML isn't magic. There are clearly some cross-reference
relationships in there that will take a little mental gymnastics to
decode. But still, I'll trade this:
</para>

<programlisting><![CDATA[...
<task id="pJhk6REkEHC" op="update">
  <task idref="ggQv63WgCbw"/>
  <added>2010-01-21T16:23:08.983Z</added>
  <modified>2010-01-24T21:01:41.632Z</modified>
  <name>Add server-side support for multipart MIME to tests.xproc.org</name>
  <rank>2113929216</rank>
  <context idref="jYnYAAVroBT"/>
  <due>2010-01-27T22:00:00.000Z</due>
  <completed>2010-01-24T21:01:41.622Z</completed>
  <order>parallel</order>
</task>
...]]></programlisting>

<para xml:id='p8'>for <emphasis>anything</emphasis> I would <emphasis>ever have
gotten</emphasis> at <emphasis>any other point</emphasis> in the
history of file formats!</para>

<para xml:id='p9'>XML has its detractors. It would not be fair to say they are all
wrong. But I'll take XML over fair any day!</para>

</essay>
