Re: XML Schema working with DTDs?

Dan, I think you're presuming answers to a versioning architecture for XML 
and namespaces.  I believe that to be a known hard problem which, in spite 
of my suggestions to the contrary [1], the XML activity has so far 
declined to formally consider (I believe it was discussed informally at a 
CG meeting, perhaps in Montreal last year.)

Everything you propose, i.e. immutable namespaces, makes sense in 
isolation.  The problem I see is that none of the other necessary XML 
machinery has been developed.  Let's assume that some particular 
vocabulary undergoes within a year 20 minor modifications, mostly bug 
fixes,introducing little incompatibilities that are not of concern to the 
vast majority of users.  So, over the course of the year, 100,000 
documents are written to this vocabulary, 5,000 in each of the 20 
namespaces.  Question: how do I build and maintain 30 XSL stylesheets that 
do the right thing with these documents?  For the sake of discussion, none 
of the stylesheets happen to make use of any of the features that were 
affected by the 20 bug fixes.  Were it not for the decision to make 
namespaces immutable, a single set of 30 stylesheets would suffice, and 
none of the 30 would have required change through the year.  Presuming 
immutable namespaces, which do indeed have many desirable architectural 
properties, I either need 600 stylesheets (30 useful sheets x 20 
namespaces used in the instances), or some rather messy disjunctions in 
each of my XPaths.

I do not propose that we go into an extensive discussion of versioning 
here.  I merely wish to agree with Henry that the answers are far from 
clear, and in that sense we are feeling our way.  I think we are far from 
having worked out the practical ramifications of any particular fixed 
design for versioning, including any that might be based on immutable 
namespaces.  It is my opinion that almost anything practical we do for 
robust versioning of XML vocabularies will require some serious 
engineering in one or another of our existing XML specifications (e.g. 
XPath, if you believe the analysis above).  Pending such developments, I 
think we in the schemas group will have to make decisions that are 
somewhat ad hoc at times, perhaps republishing minor fixes as changes to 
the same namespace, with some means of deploying new ones for major 
changes.  In short, I think we are about to get bitten by an overall lack 
of investment in figuring out how to do namespace and vocabulary 
versioning in a robust manner.  Maybe I am just being too pessimistic.

[1] http://lists.w3.org/Archives/Member/w3c-xml-plenary/1999Oct/0019.html
(My apologies to those on the schema comments list who cannot access this 
member-only e-mail archive.  The note basically suggests that versioning 
is an important problem that will rear its head soon, and points out some 
of the issues to be considered.)

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







Dan Connolly <connolly@w3.org>
04/28/00 06:48 PM

 
        To:     "Henry S. Thompson" <ht@cogsci.ed.ac.uk>
        cc:     "Joseph M. Reagle Jr." <reagle@w3.org>, www-xml-schema-comments@w3.org, 
"C. M. Sperberg-McQueen" <cmsmcq@acm.org>, Noah_Mendelsohn@lotus.com
        Subject:        Re: XML Schema working with DTDs?



"Henry S. Thompson" wrote:
> 
> "Joseph M. Reagle Jr." <reagle@w3.org> writes:
> 
> > I used to both schema and DTD validate, but I didn't realize these 
things
> > had moved. I'll try using these URLs and see if it still works. 
However,
> > this policy of locating the schema and DTD at the namespace is pretty
> > confusing. I appreciate you don't want to change the namespace every 
time
> > you issue a new draft and I hope you would try every time you made a
> > substantive change, because now the result is that even if I write my 
XML
> > instance that (today) validates under [1,2] next time you pout out a 
new
> > draft it won't! Before, not updating your namespace violated a 
philosphical
> > point (but the actual dtd and schema were in a more specific (month) 
date
> > space). Now you are violating a more practical point, if I have an 
example
> > that works now based on something in date space it won't in the 
future. (I
> > think, right?)
> >
> > [1] http://www.w3.org/1999/XMLSchema.dtd
> > [2] http://www.w3.org/1999/XMLSchema.xsd
> 
> Well, it's a difficult point.  I'd say we don't _have_ a namespace
> yet, we're just working towards having one, and using the same name so
> people will get used to it as the XML Schema namespace.

Really? That seems like an odd way of looking at things, to me.
It's quite clear to me that we have a namespace; the definition
is what you get back from http://www.w3.org/1999/XMLSchema.

And if we change the definition, it's sort of antisocial
to re-use the old address, as Joseph has observed. Though this
is work-in-progress stuff, and we don't really plan to support drafts
once they've been superceded, we might as well avoid
the sort of problems Reagle is having when it's easy
to do.

> I appreciate your point about things going stale -- if we ever make a
> backwards incompatible change, we'll put the old schema and dtd
> somewhere in date space and you can use them for your stale documents.

Again, that seems backwards; if we make backwards-incompatible
changes, the thing to do is to leave the old one alone
and use a new identifier for the new definition. It's not
really fair to expect folks to change pointers in old documents.

If we decide to break their old documents, i.e. to not
support them, that's one thing.
But the way to support them, if we're going to go to
any trouble at all, is to just leave the old
definition in place if we make a new, incompatible one.


> We're in new territory here (never before has there been a definitive
> and operational anything _at_ a namespace URI before),

I don't really see how this is all that novel... namespaces
are just like any other resource, and Joseph is just
reminding us that immutable resources solve a lot of
versioning problems. COM uses this idea:

"Interfaces are immutable contracts ? you cannot
define a new version of an old interface and give it the
same identifier. Adding or removing methods of an
interface, or changing semantics creates a new
interface, not a new version of an old interface. Therefore
a new interface cannot conflict with an old interface."
                 -- Interface Pointers and Interfaces
                 January 05, 2000
                 http://msdn.microsoft.com/library/psdk/com/com_37w3.htm


Ted Nelson calls it "stable publishing". 

The RDF spec uses this idiom too:

"Since changing the logical structure of
         a schema risks breaking other RDF models which depend on that
schema, this
         specification recommends that a new namespace URI should be
declared
         whenever an RDF schema is changed. "
http://www.w3.org/TR/2000/CR-rdf-schema-20000327/#s4.1.2

> Dan and I have
> been making policy by the seat of our pants, by all means lets keep
> discussing this, but move the archiving to the public comments list
> (see addresses above).

to the exclusion of xmlschema-dev? why pass up the opportunity for
mutual education?

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Friday, 28 April 2000 19:16:57 UTC