<?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>DITA 2006</title>
<volumenum>9</volumenum>
<issuenum>33</issuenum>
<pubdate>2006-03-24T19:41:49-05:00</pubdate>
<date>$Date$</date>
<author><personname>
<firstname>Norman</firstname><surname>Walsh</surname>
</personname></author>
<copyright><year>2006</year><holder>Norman Walsh</holder></copyright>
<abstract>
<para>I only saw a few hours of the DITA conference, but I think it was
a good show. I wish I'd seen more. I remain skeptical about some
aspects of the DITA vision, but that's not really important.
Reasonable people can disagree about the details.</para>
</abstract>
<dc:coverage rdf:resource="http://norman.walsh.name/knows/where/us-nc-raleigh-durham"/>
</info>

<para xml:id='p1'>As I write this, flying back from Raleigh-Durham, a
destination that I flew towards only a small number of hours ago, I am
trying to capture my impressions of the day.</para>

<para xml:id='p2'>It felt a little strange to be invited to speak at the DITA
conference. DocBook and DITA are competitors of a sort and my position
as chair of the DocBook Technical Committee, and my role as an
unwavering DocBook advocate, afforded me a kind of minor celebrity
that was both flattering and strange.</para>

<para xml:id='p3'>What I said is transcribed below. I think it was well received;
at least no one said otherwise to me. Which isn't to say that everyone
agreed with me. I'm afraid I let the Q&amp;A slide into somewhat deeper
technical waters than would have been ideal for the larger audience
as <personname><firstname>Eliot</firstname>
<surname>Kimber</surname></personname>,
<personname><firstname>Michael</firstname>
<surname>Priestley</surname></personname>,
<personname><firstname>Paul</firstname>
<surname>Prescod</surname></personname>, and I engaged in a spirited
exchange of views on the merits of specialization. We carried
that over to the break where debate continued on such diverse topics
as globally unique identifiers and the value of indirection.</para>

<mediaobject role="flickr"><!--Eliot commands attention-->
  <imageobject xlink:href="http://www.flickr.com/photos/ndw/118279386/">
    <imagedata fileref="http://static.flickr.com/43/118279386_089baf2326.jpg"/>
  </imageobject>
</mediaobject>

<para xml:id='p4'>Being challenged to think differently by smart, articulate
people who've thought deeply about hard problems and who are
passionately committed to making a difference—it doesn't get much
better than that.</para>

<para xml:id='p5'><personname><firstname>Don</firstname><surname>Day</surname>
</personname> and I, chairs of our respective Technical Committees,
reaffirmed publicly our determination to work together, to cooperate
rather than bicker, which I'm sure is a good thing for everyone.
</para>

<mediaobject role="flickr"><!--Don and Norm at DITA 2006-->
  <imageobject xlink:href="http://www.flickr.com/photos/ndw/118279028/">
    <imagedata fileref="http://static.flickr.com/36/118279028_e6cb3a09bc.jpg"/>
  </imageobject>
</mediaobject>

<para xml:id='p6'>It was great to meet you all. If you invite me back, I'll
definitely come. I wonder if DocBook should hold a conference so we
can send out some invites?</para>

<para xml:id='p7'>Contributing to the surreal “celebrity” experience,
after my presentation, I was interviewed. Twice. Once for a live
<link xlink:href="http://www.mytechnologylawyer.com/cgi-bin/FormManager/WebForms.pl?Session=MTL.114329065439&amp;Action=ShowFile&amp;File=/media/radio_1.html">internet
radio broadcast</link> on
<link xlink:href="http://www.mytechnologylawyer.com/">MyTechnologyLawyer.com</link>
and once
by <personname><firstname>Rahel Anne</firstname>
<surname>Bailie</surname></personname> of
<link xlink:href="http://www.intentionaldesign.ca/">Intentional
Design, Inc.</link> for a podcast of some sort. I'll add pointers down
in the comments if/when I ever find out where these things are
archived.</para>

<section xml:id="presentation">
<title>Reflections on DocBook and DITA</title>

<para xml:id='p8'>This is a transcript of my presentation to the DITA 2006
conference in Raleigh-Durham,&#160;NC on 24 Mar 2006. The slides I
presented are interjected as sidebars.</para>

<para xml:id='p9'>Thank you, Ken. (I was ably introduced by
<personname><firstname>Ken</firstname><surname>Berger</surname>
</personname> of
<link xlink:href="http://www.siberlogic.com/">SiberLogic</link>,
one of the conference's platinum sponsors.)</para>

<para xml:id='p10'>Good morning.</para>

<para xml:id='p11'>I'd like to start by thanking Kay and the rest of the program
committee for inviting me to speak to you today. I have to admit that
given my longstanding association with DocBook, it feels a little
strange to be presenting at the DITA conference.</para>

<para xml:id='p12'>I work for Sun Microsystems and I'm the chair of the DocBook
Technical Committee. I'm also active in about a half-a-dozen other
working groups spread across the W3C, OASIS, and the Java Community
Process.</para>

<para xml:id='p13'>I have to start with a disclaimer however, and that is that
I'm not representing any of those organizations today.</para>

<sidebar role="foil">
<title>Disclaimer</title>
<blockquote>
<attribution><personname>
<firstname>Jim</firstname><surname>Melton</surname>
</personname></attribution>
<para xml:id='p14'>“Facts are facts. But any opinions expressed are the opinions
only of myself and may or may not reflect the opinions of anybody
else with whom I may or may not have discussed the issues at hand.”
</para>
</blockquote>
</sidebar>

<para xml:id='p15'>The ideas and opinions in this presentation aren't necessarily
shared by my colleagues on the DocBook Technical Committee, my
employer, or anybody else.</para>

<sidebar role="foil">
<title>No cutlery please</title>

<mediaobject>
<imageobject>
<imagedata fileref="images/rolls.jpg" align="center"/>
</imageobject>
<textobject>
<phrase>Jeeves Saves the Cow-Creamer</phrase>
</textobject>
</mediaobject>
</sidebar>

<para xml:id='p16'>Disclaimer aside, Given that this is a lunchtime presentation, I
would like to request that you limit your throwing of any projectiles
to dinner rolls.</para>

<para xml:id='p17'>Actually, the subject of fights and throwing things segues
directly into the topic that I'd like to start with.</para>

<sidebar role="foil">
<title>Opposition</title>

<itemizedlist>
<listitem><para xml:id='p18'>Emacs vs. vi</para></listitem>
<listitem><para xml:id='p19'>Linux vs. Windows</para></listitem>
<listitem><para xml:id='p20'>Python vs. Perl</para></listitem>
<listitem><para xml:id='p21'>REST vs. WS-*</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p22'>People generally have a habit of placing things in opposition,
especially when the things in question serve a common purpose but have
been adopted by different communities. On my more cynical days, I
attribute this to consultants and marketing departments trying to stir
up excitement about their latest products or services.</para>

<para xml:id='p23'>But it's also simply harder to cooperate than to fight.
Cooperation requires developing a shared understanding of problems,
and mutual respect in the face of different choices. Whatever the
reason for the tendency towards competition, I want very much to avoid
having “DocBook vs. DITA” make it onto that list. At the very least, I
don't want to play that game.</para>

<sidebar role="foil">
<title>Healthy Competition</title>

<itemizedlist>
<listitem><para xml:id='p24'>DocBook and DITA can solve similar problems</para>
</listitem>
<listitem><para xml:id='p25'>Users are asking: DITA? DocBook? Both?</para>
</listitem>
<listitem><para xml:id='p26'>Competition challenges us</para></listitem>
<listitem><para xml:id='p27'>Challenges inspire us to improve</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p28'>At the same time, we can all see that DocBook and DITA are able
to solve similar problems.</para>

<para xml:id='p29'>Their approaches differ somewhat, and there are a lot of
differences down in the details, but I doubt that there's any
significant documentation problem that you could solve with DITA that
you couldn't also solve with DocBook, and vice-versa.</para>

<para xml:id='p30'>So the question of which schema to use isn't a question about
what one can do and the other can't. It's about design patterns, the
richness of the vocabulary, the maturity and capability of tools,
familiarity, comfort, and other tangible and intangible things.</para>

<para xml:id='p31'>For that reason I think it's much more useful and interesting to
look at the things DocBook and DITA offer, what they have in common,
where they really differ, and what they can learn from each
other.</para>

<para xml:id='p32'>That's mostly what I want to talk about in this presentation,
though I promise to end with just a little bit of controversy so it
isn't just the coffee keeping you awake.</para>

<sidebar role="foil">
<title>DocBook</title>
<itemizedlist>
<listitem><para xml:id='p33'>DocBook is more than 10 years old and is still
actively maintained</para></listitem>
<listitem><para xml:id='p34'>Historically, DocBook models traditional print publishing</para></listitem>
<listitem><para xml:id='p35'>Tends not to be prescriptive</para></listitem>
<listitem><para xml:id='p36'>Deeply committed to extension and customization</para></listitem>
<listitem><para xml:id='p37'>Completely suitable for modular documentation</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p38'>One of the ways that DocBook and DITA differ is age. DocBook
started in roughly 1991. My personal involvement extends back to about
1994 when the Davenport Group, the first official DocBook maintenance
organization, was formed to guide its development.</para>

<para xml:id='p39'>Back then it was, of course, an SGML DTD. Today it's an XML (or
SGML) DTD and in the near future it will also be a RELAX NG Grammar.
But back in the early nineties, SGML is what we had and development
continued for several years until around 1996 or 97 when almost
everyone involved turned their attention to developing something else.
Can anyone guess what?</para>

<para xml:id='p40'>The answer is XML. DocBook was developed by some of most
respected markup specialists in the world. The overlap between
Davenport Group members and the folks driving the development of “SGML
on the web”, which would eventually become XML, is pretty remarkable.
</para>

<para xml:id='p41'>DocBook development stalled for a bit in the dot-com boom. I
think we were all busy with other things. In order to make sure that
it would continue to have a maintenance organization, and that it
could continue to evolve to support the needs of it's ever growing
user base, DocBook became one of the first OASIS Technical Committees
in July, 1998.</para>

<para xml:id='p42'>Our long history has made us think about maintenance issues that
weren't always readily apparent when we first started. We have
policies for, and experience with, managing change and maintaining
stability and usability for a large and diverse user community. I
imagine that DITA will find it has similar maintenance issues as time
goes by.</para>

<para xml:id='p43'>DocBook's history is firmly rooted in traditional techdoc
publishing. Heck, we even managed to get “book” in its name. New
techniques, like hypertext and topic-oriented authoring, are an
evolutionary improvement over traditional words-on-papyrus and their
descendants. They may even be revolutionary. But traditional,
words-on-papyrus and their descendants have a successful history of
knowledge and information transfer spanning back thousands of
years.</para>

<para xml:id='p44'>I don't think books are going away any time soon
and I think DocBook has a lot of strength in that domain.</para>

<para xml:id='p45'>That said, DocBook has supported lots of topic-oriented media
for a long time including web pages, slides (like the ones you're
seeing now), HTML Help, Java Help, and other formats. The ability to
adapt to new authoring and publishing techniques, of course, requires
a mechanism to support extension and customization.</para>

<para xml:id='p46'>DocBook is perhaps the largest, most successfully parameterized
public DTD ever created. There's almost nothing that you can't change
in DocBook through the parameter entity mechanism. In fact the only
thing I think you can't change are the actual names of the elements. I
wouldn't go so far as to say that all of the changes you might like to
make are equally easy with parameter entities. (As an aside, I'm happy
to report that many of them are much easier with RELAX NG.)</para>

<para xml:id='p47'>DocBook's commitment to customizability continues in the DocBook
V5.0 efforts which are based on RELAX NG instead of DTDs. Once again,
with the exception of the element names, we're working hard to make
sure that the patterns defined in the schema provide a complete
framework of extensibility points.</para>

<para xml:id='p48'>Another aspect of extensibility is supporting authors who have
different mental models of the artifacts defined in the schema.
Sometimes these are cultural differences, sometimes they're a
consequence of an author pushing the boundaries of the domain you had
in mind when you wrote the schema, sometimes authors are just…well,
let's just say “unique”.</para>

<para xml:id='p49'>It isn't always a case of needing new or even different markup,
sometimes it's a question of allowing elements where you didn't expect
them. For example, DocBook used to have a fairly complex content model
for the content of the “book” element. We tried to make sure that some
elements came only at the beginning or the end, or in a particular
relative order, or what-have-you. To be honest, I don't even really
remember what we were trying to accomplish exactly. But at some point,
it just became clear that it wasn't worth the effort. There was a lot
of unexpected variety out there and we weren't really helping our
users by forcing some of them to write customization layers just so
they could put an appendix between two chapters or a colophon at the
beginning of a book, if that's what they really thought they
needed.</para>

<para xml:id='p50'>I'm not saying there are no rules, of course, but the rules in
DocBook tend to divide the elements up at a fairly course level of
granularity.</para>

<para xml:id='p51'>I think there's a natural tension between the desire to guide
authors with fairly prescriptive markup and the need to support
authors who have broader or different approaches to
documentation.</para>

<para xml:id='p52'>The bottom line is, if you start with a group of people as
talented as I've had the pleasure to work with on DocBook, and you
spend a decade iterating over a problem as interesting and challenging
as documenting what computer hardware and software actually is and
does, you develop a quite rich vocabulary.</para>

<para xml:id='p53'>We have markup for concepts, for tasks, for reference materials,
for publication details, for technical details, for programming
language concepts and user interfaces, for metadata, bibliographies,
glossaries, indexes, and many other things. If it's about computer
hardware or software, we've probably thought about it.</para>

<para xml:id='p54'>To some extent, whether you build books or topic sets or
articles or reference pages or something else from this vocabulary is
a separate question.</para>

<para xml:id='p55'>Turning my attention to DITA, about which I do not claim to
really be an expert, it seems to stack up this way.</para>

<sidebar role="foil">
<title>DITA</title>
<itemizedlist>
<listitem><para xml:id='p56'>DITA is younger (though it was certainly inspired by earlier
work)</para></listitem>
<listitem><para xml:id='p57'>Designed to support a topic-oriented authoring paradigm</para></listitem>
<listitem><para xml:id='p58'>Tends to be prescriptive</para></listitem>
<listitem><para xml:id='p59'>Deeply committed to extension and customization</para></listitem>
<listitem><para xml:id='p60'>Topics can be presented linearly</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p61'>DITA is a lot younger than DocBook. I don't have an opinion
about whether younger is better than older or vice-versa. But youth
doesn't last, and we'll both be old eventually. I mention this
difference only to point out that I think some of the “us versus them”
tension I've seen may be motivated by the fact that DITA is shiny and
new and exciting in ways that DocBook isn't anymore. And to point out
that I don't think that fact has any interesting technical bearing on
the problems you might be trying to solve.</para>

<para xml:id='p62'>I think the topic-oriented authoring paradigm is DITA's
outstanding feature. It's great because it attacks one of the hardest
problems of writing reusable documentation: one of the
<emphasis>non</emphasis>-technical problems.</para>

<para xml:id='p63'>Let me explain what I mean. I used to do consulting. It was my
job to go out to companies that were considering XML and explain how
it was going to help them achieve the same goals many of you are
probably here to learn about: how could XML help them deliver the same
content in multiple ways (print, web, help, etc.) and how could it
help them author content that could be reused in different ways
(product catalogs, reference guides, tutorials, what-have-you).</para>

<para xml:id='p64'>No two consulting gigs are exactly the same, but they often have
strong similarities. The meetings I'm talking about now generally went
like this: first, I'd try to figure out what the company actually did,
then we'd talk about how they were currently doing documentation, then
I'd try to get them to explain what they wanted to be able to do and,
if XML was a good fit, I'd tell them a little bit about XML and how it
had features that would help them achieve some of their goals.</para>

<para xml:id='p65'>Then I told them the bad news.</para>

<para xml:id='p66'>There are two kinds of problems, I would explain, that had to be
overcome: there were technical problems and there were non-technical
problems. The technical problems, I'd say, developing markup to
identify the significant facets of their information, managing their
content, combining it in different ways, and publishing it to
different media were hard problems. But we could help them with those
problems. We could sell them products and professional services, and
we had teams of engineers trained to tackle those problems. Simple
Matter of Information Architecture and Programming.</para>

<para xml:id='p67'>The non-technical problems, I'd explain, were the fact that
writing reusable document is different, often very different, from the
way the authors had been writing. And authoring within a strict
structure is different, often very different, from the way author's
had been writing. And different means change and change is hard. In
other words, training authors to write reusable documentation and
training them to write correctly structured documentation, usually in
a totally different kind of editing tool, is really, really hard. And
there was basically nothing we could do to help them with that
problem.</para>

<para xml:id='p68'>I'm not sure the sales guys always appreciated my
determination to tell the whole story. But I don't think we lost any
sales because of it either. I think most folks appreciated the fact
that we were being honest.</para>

<para xml:id='p69'>But I think DITA really attacks the non-technical, writing
reusable documentation problem head on. I don't know if it can do
anything to soften the human propensity for discomfort when faced with
change, but it's definitely a framework that encourages authors to
write documentation in reusable modules.</para>

<para xml:id='p70'>And that's really cool.</para>

<para xml:id='p71'>At the same time, I'm not sure it's the right strategy for every
kind of document.Topics give the author the flexibility to pull
loosely coupled components together for different purposes. Writing in
the traditional, linear fashion gives the author the ability to
provide continuity for the reader. Pulling a set of very loosely
coupled topics together into something that has a fluid, coherent
end-to-end narrative that satisfies the readers expectations of
continuity strikes me as seriously, really, very hard.</para>

<para xml:id='p72'>Impossible, I think, except in the most unique of circumstances.
Of course, I'm not saying that it's impossible to write excellent
documentation using the topic paradigm, but I'm sure we've all
experienced the pain of using a badly built system.
</para>

<para xml:id='p73'>Writing is hard work.</para>

<para xml:id='p74'>On the one hand, you're attempting to satisfy the needs of the
author, and the author's employer: to manage a large collection of
information that changes over time and needs to be tailored quickly
for different presentation formats, audiences, and purposes. And on
the other hand, you're attempting to satisfy the needs of the reader:
to find the information they need when they need it in a form that is
physically and intellectually accessible to them.</para>

<para xml:id='p75'>Those are sometimes conflicting requirements.</para>

<para xml:id='p76'>Looking at DITA markup, DITA seems inclined to somewhat more
prescriptive content models than DocBook. As I said before, I think
there's a tension between prescriptiveness and flexibility. DocBook
provides enormous flexibility.</para>

<para xml:id='p77'>But it's possible that the prescriptiveness is comforting to new
users who just want to know what to do. Anyway, exactly how to manage
that tension is something you probably just have to figure out over
time. It's also possible that the DITA specialization techniques will
somehow mitigate that tension. I'll come back to specialization in a
few minutes.</para>

<para xml:id='p78'>Being a markup geek, I can't write a presentation about an
XML-related topic without sticking some angle brackets in somewhere.
Let's take a look at a little bit of markup.</para>

<sidebar role="foil">
<title>DITA Tasks</title>
<programlisting><![CDATA[<task id="changeoil" xml:lang="en-us">

<title>Changing the oil in your car</title>
<taskbody>
<context>
<p>Once every 6000 kilometers…</p>
<p>To change the oil:</p></context>
<steps>
<step><cmd>Remove the old oil filter.</cmd></step>
<step><cmd>Drain the old oil.</cmd></step>
<step><cmd>…</cmd></step>
</steps>
</taskbody>
</task>]]></programlisting>
</sidebar>

<para xml:id='p79'>Here we see a DITA task, slightly abbreviated to fit on the
slide. If you've downloaded the DITA toolkit, this will be a familiar
example. It's a task for changing your oil.</para>

<para xml:id='p80'>So let's look at the same task in DocBook.</para>

<sidebar role="foil">
<title>DocBook Tasks</title>
<programlisting><![CDATA[<article xmlns="http://docbook.org/ns/docbook" version="5.0"
	 xml:id="changeoil" xml:lang="en-us">
<title>Changing the oil in your car</title>


<para>Once every 6000 kilometers…</para>
<para>To change the oil:</para>
<procedure>
<step><para>Remove the old oil filter.</para></step>
<step><para>Drain the old oil.</para></step>
<step><para>…</para></step>
</procedure>
</article>]]></programlisting>
</sidebar>

<para xml:id='p86'>Remarkably similar, isn't it? What's different? The document
element is article instead of task. I have a customization layer that
has topic and task elements, for this presentation I chose to use
plain, uncustomized DocBook.</para>

<para xml:id='p87'>You can see from the namespace and the version
attribute that this is DocBook V5.0. Other than that, the markup is
pretty much what you'd expect.</para>

<para xml:id='p88'>What about a concept? In DITA:</para>

<sidebar role="foil">
<title>DITA Concepts</title>
<programlisting><![CDATA[<concept id="oilconcept" xml:lang="en-us">

<title>Oil</title>
<conbody>
<p>Motor oil keeps your car's engine running smoothly…</p>
</conbody>

<related-links>
  <link href="../tasks/changingtheoil.xml" format="dita" type="task">
    <linktext>Changing the oil</linktext>
  </link>
</related-links>
</concept>]]></programlisting>
</sidebar>

<para xml:id='p89'>And in DocBook:</para>

<sidebar role="foil">
<title>DocBook Concepts</title>
<programlisting><![CDATA[<article xmlns="http://docbook.org/ns/docbook" version="5.0"
	 xml:id="oilconcept" xml:lang="en-us">
<title>Oil</title>

<para>Motor oil keeps your car's engine running smoothly…</para>

<section role="links"><title>Related links</title>
<itemizedlist>
  <listitem><para><link xlink:href="../tasks/changingtheoil.xml" xmlns:xlink="http://www.w3.org/1999/xlink"
    >Changing the oil</link></para>
</listitem>
</itemizedlist>
</section></article>]]></programlisting>
</sidebar>

<para xml:id='p92'>The big difference here is the related links section. Where DITA
has a specialized element for that, I've just used a normal section
for this example. One question we could ask is, do I need a
specialized element there. Would there be advantages or disadvantages?
More broadly, what about this whole idea of specialization?</para>

<sidebar role="foil">
<title>Specialization</title>
<itemizedlist>
<listitem><para xml:id='p93'>Is it a good idea?</para></listitem>
<listitem><para xml:id='p94'>Does it work?</para></listitem>
<listitem><para xml:id='p95'>Are there better ways to do it?</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p96'>Remember when I promised to keep you awake with some
controversy. We've reached that point now, so if you still have any
dinner rolls left, now's the time to start warming up your throwing
arm.</para>

<para xml:id='p97'>I think specialization is really clever.</para>

<para xml:id='p98'>But I don't think it's the panacea that some of the reports I've
read suggest. And, with respect, I don't think it's instantiation in
the DTD is very attractive. The marketing folks behind DITA products
and consultancies have latched onto specialization as if it were some
sort of silver bullet to slay the document interchange dragon.
Interchange is a challenge, there's no question about it. The DocBook
reference documentation has a chapter on interchange that includes a
list of almost fifty questions that you need to work out with your
interchange partners. And any particular interchange exercise will
certainly generate it's own unique questions.</para>

<para xml:id='p99'>They're detailed questions and answering them requires careful
review of your documentation, your processing expectations, your
formatting expectations, and your processing tools. Unfortunately, it
also requires careful review of your interchange partner's
documentation, processing and formatting expectations, and
tools.</para>

<para xml:id='p100'> A little web searching for “DITA specialization” will turn up
plenty of hype that suggests it can replace that long list.</para>

<para xml:id='p101'>I don't believe it.</para>

<para xml:id='p102'>I'm not saying specialization isn't useful. The idea behind
specialization, as I understand it, is that when I invent a new
element, I declare what existing element it “specializes”.
In theory, this declaration allows a tool processing my document
to fall back to some default processing if it doesn't understand my
specialization.</para>

<para xml:id='p103'>The thing to remember is, the extent to which this fall back
processing is useful or correct depends largely on the importance of
the semantics of my new element.</para>

<para xml:id='p104'>To the extent that you're creating a new kind of inline as a
specialization of another kind of inline, or a new div-like structure
as a specialization of another div, and I'm not saying these aren't
common cases, it probably works pretty well. It's certainly easy to
work up some use cases where it does what you want, but let's consider
a more interesting case. Suppose, as is also often the case, that you
want to add something with quite specific semantics.</para>

<para xml:id='p105'>The example that I used when I wrote about this once before
was the
<link xlink:href="http://en.wikipedia.org/wiki/Extended_Backus-Naur_form">EBNF</link>
diagram. EBNF is short for Extended Backus-Naur Form, it's a way
of representing grammars.</para>

<sidebar role="foil">
<title>EBNF</title>
<para xml:id='p106'>[See
<link xlink:href="http://docbook.org/tdg5/en/html/productionset.html#ebnf.expression">EBNF diagram</link> in
<link xlink:href="http://docbook.org/tdg5/en/html/">DocBook 5.0: The
Definitive Guide</link>.
There's currently an unresolved issue with
formatting EBNF diagrams in this blog—ed.]</para>
</sidebar>

<para xml:id='p107'>If you're familiar with EBNF diagrams, that probably looks
pretty familiar. If you aren't, well, don't worry about it too much.
Exactly what it means isn't really important here. Without going into
a lot of detail, although it's formatted something like a table here,
the markup doesn't really have that structure.</para>

<para xml:id='p108'>The markup is a set of productions. Each production has a “left
hand side”, which appears before the “::=” and a “right hand side”
that appears after. Right hand sides include both literals and
non-terminals, that is, references to other left hand sides. There are
also optional annotations and constraints.</para>

<para xml:id='p109'>So here we see that an expression is either an arithmetic
expression or a multiplicative expression, with an annotation about
precedence, an arithmetic expression is a kind of expression, and a
multiplicative expression is another kind of expression with a
constraint regarding division by zero.</para>

<para xml:id='p110'>The point is that there are a lot of semantics in there and it's
non-trivial to devise a presentation that can convey those semantics.
It strikes me as very unlikely that you'd be able to specialize those
elements from any other existing elements.</para>

<para xml:id='p111'>And if you did, suppose, for example, you made the left hand
sides, non-terminals, and the like specializations of some inline and
the set of productions (or maybe each production) a specialization of
some division. Then you could send it to someone else, and they would
produce some sort of rendering for it.</para>

<para xml:id='p112'>But you'd be completely mistaken if you believed that they'd
“successfully” handled it in any meaningful way.</para>

<para xml:id='p113'>Now, it may simply be the case that most specializations are of
topics, blocks, inlines and other sorts of elements where the fallback
is appropriate. But that's not obviously the case to me considering
the kinds of customizations people have used with DocBook over the
years.</para>

<para xml:id='p114'>Even in the case were this strategy is the right answer, I have
reservations about the particular technical mechanisms used by DITA to
achieve it. I think the long list of tokens in class attribute values
in the instance is going to lead to some painful compromises later
on.</para>

<sidebar role="foil">
<title>Concerns about specialization</title>
<itemizedlist>
<listitem><para xml:id='p115'>Long lists of class attribute values</para></listitem>
<listitem><para xml:id='p116'>Constrained selection of validation technologies</para>
</listitem>
<listitem><para xml:id='p117'>Well-formedness isn't enough</para></listitem>
<listitem><para xml:id='p118'>Stylesheets and other XPath or XQuery-based
technologies that operate on documents that rely on this technique
are…atypical at best</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p119'>First off, using the class attribute to enumerate the
specializations looks problematic. No one can actually be expected to
put all those values literally in the instance and that means you're
forced to rely on defaulted attribute values. Relying on defaults puts
some constraints on schema validation, and schema validation tools,
that I would find uncomfortable.</para>

<para xml:id='p120'>You're basically stuck with either DTD validation or W3C XML
Schema validation.</para>

<para xml:id='p121'>(Although there's a RELAX NG annotations framework to support
attribute value defaults, it's not a standard part of validation and
it's not clear to me that it's widely supported.)</para>

<para xml:id='p122'>So in the short term, you're stuck with DTDs or XSD.
DTDs are going to hamper namespace support in serious ways, and
you're eventually going to need namespaces, and simple XSD validation
won't be sufficient, you'll actually need the PSVI for the defaulted
attribute values.</para>

<para xml:id='p123'>(XSD also isn't my first choice for defining grammars for
documentation, but I guess that's a topic for another presentation.)
</para>

<para xml:id='p124'>Finally, stylesheets and other XPath or XQuery-based
technologies that operate on documents that rely on DITA's class
attribute technique are …atypical at best.
</para>

<para xml:id='p125'>Provocative words aside, and I did promise a little controversy,
I think the specialization idea is pretty damn clever.</para>

<para xml:id='p126'>It might be worth exploring further, in DocBook for example, but
I don't think I'd want to de-emphasize the importance of an explicit
interchange questionnaire and an extensibility strategy that allows
implementations to detect customization failures. I've written about
this a little bit before and I've been exploring how this might be
accomplished in schema annotations, for example.</para>

<para xml:id='p127'>It's all probably mostly irrelevant anyway. If experience with
DocBook is indicative very few users are every going to make
<emphasis>any customizations</emphasis> to the markup <emphasis>at
all</emphasis>. Sure, some big companies will hire consultants to
craft customizations for them, and some ambitious communities will
craft them themselves, but they're in the minority. Most users are
going to just grab the schema and start using it.</para>

<para xml:id='p128'>So I've rambled around a bit offering some reflections on
DocBook and DITA for a while now. I could probably go on for at least
as long in any of several directions, but that's not practical, so I
guess the real question is, what sort of conclusions can I draw before
turning this over to some Q&amp;A?</para>

<sidebar role="foil">
<title>Going forward</title>
<itemizedlist>
<listitem><para xml:id='p129'>DITA development may be informed by DocBook's historical
stability and design patterns</para></listitem>
<listitem><para xml:id='p130'>DocBook development may be informed by
DITA's innovations and design patterns</para></listitem>
<listitem><para xml:id='p131'>Some documents are topic oriented
and some aren't</para></listitem>
<listitem><para xml:id='p132'>Transformation may not be the only road to cooperation</para></listitem>
<listitem><para xml:id='p133'>Cooperation is worth the effort</para></listitem>
</itemizedlist>
</sidebar>

<para xml:id='p134'>Going forward, I think DITA's development may be informed by
DocBook's historical stability and design patterns. Similarly, DocBook
development may be informed by DITA's innovations and design
patterns.</para>

<para xml:id='p135'>Independent of how they're marked up, some documents are topic
oriented and some aren't. It may simply be the case that some of your
documents are better suited to narrative DocBook encodings and some
are better suited to topic-oriented DITA or DocBook encodings. In
other words, transformation may not be the only road to
cooperation.</para>

<para xml:id='p136'><personname><firstname>Michael</firstname>
<surname role="suppress">Priestley</surname></personname> and I have
also been discussing how some more dynamic mixing might be
possible.</para>

<para xml:id='p137'>No matter how we proceed, cooperation is worth the effort.</para>

<para xml:id='p138'>That's the best I can do on one slide, I think.</para>

<para xml:id='p139'>I hope those all make sense in the context of this presentation.
And I hope we can do this again sometime because I really do believe
that cooperation is the right strategy.</para>

<sidebar role="foil">
<title>Q&amp;A</title>
<itemizedlist>
<listitem><para xml:id='p140'>Me: Norman Walsh, <email>ndw@nwalsh.com</email></para></listitem>
<listitem><para xml:id='p141'>This presentation:
<link xlink:href="http://nwalsh.com/docs/presentations/dita2006/"/></para></listitem>
<listitem><para xml:id='p142'>Other writings on DITA and DocBook:
<link xlink:href="http://norman.walsh.name/topics#DITA"/></para></listitem>
</itemizedlist>
<para xml:id='p143'>Thank you very much.</para>
</sidebar>

<para xml:id='p144'>You may fire when ready!</para>
</section>
</essay>
