Re: How to Version XML Applications

This is not a new issue.  In October 1999, I raised essentially the same
set of concerns to the XML Plenary at [1].  Since that is a member-only
list, but I don't see anything in my note that could be viewed as private
to anyone but me as the sender, I am taking the liberty of reproducing the
text below, for the benefit of non-W3C members who are reading this thread.

I should give credit to Tim Bray for consistency.  His response to me on
behalf of the XML Plenary at that time is essentially identical to the ones
he's offering today.  Tough problem, no one solution, probably not
appropriate for W3C to launch a frontal assault (and I infer, maybe some
good practice to be promoted.)  I still think we might do well to give this
area a bit more organized thought, but Tim is absolutely right that we
should proceed with caution and with modest expectations if at all.

Also, most of the analysis I've seen, including in this thread, seems a bit
oversimplified.  See my note of 3 years ago for the issues that I think are
significant.  Among them:  my intuition is that bug fixes may be different
from major revisions to a vocabulary, and may need different sorts of
support.  Depending on the approaches taken, changes may be needed to
XPath, maybe XQuery and Schema.  I think XPath and Query are most impacted
if Namespaces are used.  What good is it if when I search for an HTML <P> I
only get the one from version 42.6 of the HTML vocabulary (which might have
changed over time due to bug fixes?)  You want the search and query
functions to have some ability to work across versions.  Similarly, you get
very tricky substitutability questions in schema:  if my original
vocabulary expected a verion 1 <p>, will it also accept a later one?  Which
later ones?  How do I control this?  Are versions arranged linearly, in a
hierarchy, or with some more elaborate dependencies?

I do NOT think we should debate the above here in this thread.  I'm only
reinforcing Tim's point that this stuff is subtle, and it potentially
involves many pieces of W3C architecture.   I also think that sooner or
later solutions will be needed.

Note that, in the SOAP arena, there is a partial solution in the form of
mustUnderstand headers, and also a limited facility for negotiating which
version of SOAP you are using;  a SOAP 1.2 processor has a defined response
when confronted with a SOAP 1.1 or SOAP 1.3 message that it chooses not to
support, for example.




Message-ID: <>
Date: Mon, 4 Oct 1999 17:58:28 -0400
Subject: Versioning and Evolution of XML Vocabularies, Namespaces, Schemas,

This note is to fulfill an action that Jon assigned to me at the plenary
in France last week.  During the meeting, we were gathering lists of
issues that would require attention by the XML community in the coming
months.  I suggested that we should consider the evolution and versioning
of XML vocabularies, namespaces, and schemas.  Jon asked me to send an
introductory note to this list.  The purpose of this note is not to begin
a detailed discussion now, but rather to ensure that these issues are
considered for inclusion on our agenda at the right time.   (Right, Jon?)

With that caveat, here is a brief outline of some aspects of the problem,
so you will at least know what I have in mind:

* In what ways can an XML vocabulary evolve? Through addition
  of elements and attributes?  Deletion?  Elimination and/or
  imposition of co-constraints? Changes to the definitions of
  element content models?  Changes to rules expressed in prose
  that describe the proper use of the vocabulary? etc., etc.

* Do versions form a linear sequence or is branching accommodated?
  Do we architecturally distinguish major changes from minor ones?

* Do we provide any architectural underpinnings to facilitate
  partial interoperation across versions?  Seems necessary, or
  even a trivial change will require recoding of applications.

* What is the appropriate use of namespaces as a vocabulary evolves?
  Should names of versions somehow be encoded in the URI of namespaces?
  Should the namespace change at all as a new version is created?
  (The recent controversy over namespaces for HTML can be seen in that
  light: essentially, we are trying to capture the evolution of a single
  vocabulary into a number of related vocabularies, while maintaining
  reasonable interoperability and usability, and eventually
  deprecating certain undesirable constructions.)

* In what ways should any new packaging or resource discovery mechanism
  be sensitive to or aid in the maintenance of versioned resources?

* How do we develop schemas for the successive versions of an XML
  vocabulary? How is the appropriate version of the schema bound to
  a document using a particular version of a vocabulary?  This
  question seems intimately bound with the use of namespaces, and
  with the question of whether a single schema document can contribute
  definitions to more than one namespace (currently under debate in
  the schema workgroup).

etc., etc.

I'm sure that this is not an exhaustive list, and I've probably left out
or poorly presented some important points.  I hope this is a good enough
start to help us remember to deal with the versioning question at the
right time.

Noah Mendelsohn                                    Voice: 1-617-693-4036
Lotus Development Corp.                            Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142

Noah Mendelsohn                              Voice: 1-617-693-4036
IBM Corporation                                Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142

Received on Thursday, 12 September 2002 20:20:00 UTC