- From: David G. Durand <david@dynamicdiagrams.com>
- Date: Wed, 24 May 2000 17:30:31 -0400
- To: <xml-uri@w3.org>
I started this note responding to Tim, but in the process, I came up
with a new compromise strategy that might address _all_ the problems.
It's not possible to do that with any single technical solution, but
I think it is possible if we formulate a longer-term plan with a
clear goal, and a series of small steps to reaching that plan.
If that sounds intriguing, read on, and see if you agree with me.
At 2:02 PM -0400 5/24/00, Tim Berners-Lee wrote:
>XSLT uses XPath which is included, I understand in the "lower layer" in your
>scenario.
>[If not, then what is?]
>Supose I use XSLT to filter a document to ensure it doesn't have
>any of an http://example.com/detonator namespace in it, because processing
>this
>would allow the document to destroy the chemical plant.
>The XSLT sees "/detonator" in an incoming document
>http://example.com/doc.xml
>but it does not notice it as it does not absolutize it. The checked result
>is
>passed to the main control system. However, when
>this "upper layer" runs it absolutizes it to find out what in upper layer
>terms it really means, and
>instantiates a chemical plant handler to handle the http://example.com/foo.
>Bang.
This is an excellent example of why software should be able to avoid
absolutizing URIs because that process depends on the knowledge of a
base URI, and this is demonstrably fragile information, especially
with regards to the unique identification of singular objects. The
use cases around relative URIsfor namespaces all revolve around the
rare applications that can deal with namespaces that are not globally
unique.
The situation you describe can more readily be used to argue that
allowing relative URIs _at all_ was the real problem. This is
especially true, since the stated goal of namespaces was to supply
globally-unique names to enable definition management in a very
loosely coupled distributed system.
>Is this or is this not a problem?
>
>I wouldn't be sitting here plowing though all this mail if I didn't htink it
>was.
>
>You can do different consistent things betwen different layers but you
>cannot mess with identity of things common to both layers.
There is a claim that we can't forbid relative URIs, and the bug you
describe, because documents exist that use them. We have no way of
determining the extent of this problem.
There are also documents in existence that depend on the current
definition of identity in the namespaces specification. We can't
quantify the number of those documents either.
Requiring absolutization will fix this problem, but will break an
unknown number of documents that were made in the belief that the
namespaces spec. means what it says.
Eliminating URI reference syntax and requiring absolute URIs for
namespaces also fixed the problem. It does not, under any reasonable
interpretation conflict with the relevant RFCs. There is at least one
extant example in the HTML BASE tag, as well as in the http protocol
iteself. However, this solution also breaks documents, in this case,
those that contain relative URI references.
Keeping things as they are but explicitly deprecating relative URIs
and documenting the possible problems, the solution chosen earlier
inside the W3C, avoids the evil of turning conformant data
non-conformant, and recognizes the potential for erroneous behavior
where relative namespace IDs are used.
There are no perfect solutions to the situation we are in.
The use of absolute URIs only is the best fit to the goals of the
namespace specification, but breaks documents.
The requirement of full relative URI processing as a part of
namespaces is not that close a fit to the design goals of namespaces,
and breaks a different set of documents in a different way. It does
leave open an attractive evolutionary path to a more dynamic
namespace mechanism, one based on retrieval of content. This
evolution depends critically on the completion of other
infrastructure is in place, e.g. a standard format for namespace
definitions, and metadata about them, a way to support multiple kinds
of definition for a single namespace, etc.
I think the best way to get to the "fully evolved" version of
namespaces is to do the following:
+ instantly deprecate relative URIs in namespaces. (but preserve the
status quo in all its yuckiness). We thus preserve a version of
namespaces that does not break existing documents.
+ instantly create a new revision, namespaces 1.1, that allows only
absolute URIs. We instantly provide a way for people to avoid getting
burned by the possible unintended consequences of using relative URIs
carelessly.
+ publicly declare that namespaces 2.0 will re-introduce relative URI
references, in a consistent way, coordinated with the creation of a
standard resource body format for referencing multiple namespace
definitions, that can be stored at a namespace URI. We now provide a
clean, path to a new meaning for the relative URI syntax.
+ declare that the next revision of XML will include a normative
reference to a specific version of the namespace specification. In
this way, the XML version can be used to determine what sort of
namespace processing is appropriate. This won't eliminate all
confusion, but will make it easier for software to check for errors
and report them. By linking XML and namespaces, we recognize the fact
that most XML projects are using namespaces, and we introduce a way
for an application to tell what sort of namespace processing is
appropriate. We also provide an incentive for people to move to the
most recent namespace specification over time.
I'm _way_ behind on this list, so I apologize if this option has been
raised before, but I don't think it was explicitly raised in the
internal discussion. This is another kind of compromise: it doesn't
ease the confusion right away, but it sets a clear direction, and
gives software authors a way to deal with a complex transition
strategy.
It is conceivable that one could go right from deprecating relative
URIs to absolutizing them, but to do that responsibly, the relevant
namespace retrieval infrastructure and policies would have to be
created almost immediately. It would clearly be better if time is
taken to make those decisions carefully.
-- David
>Tim BL
--
_________________________________________
David Durand dgd@cs.bu.edu \ david@dynamicDiagrams.com
http://cs-people.bu.edu//dgd/ \ Chief Technical Officer
Graduate Student no more! \ Dynamic Diagrams
--------------------------------------------\ http://www.dynamicDiagrams.com/
\__________________________
Received on Wednesday, 24 May 2000 17:38:53 UTC