This is awesome. Tim Bray echoes exactly what I've been saying about Namespaces.
Right now, in the context of the Pie/Echo/Atom/whatever project, people assert that crystallizing the meaning of embedded namespaces is the key to interoperability, the central problem, and so on. Huh? When someone proposes markup from another namespace for inclusion in a syndication feed, there are three possible outcomes:
1. Nobody pays attention and it isn't much adopted.
2. It gets widely adopted, with semantics along the lines originally proposed.
3. It gets widely adopted, with some semantic drift away from the original proposal becoming evident in the implementations. (Note that this has already happened with some RSS 2.0 markup).
Oddly enough, this is exactly what will happen with proposed tags and attributes that aren't in a different namespace.
Earlier he makes the point that I've made repeatedly, that the meaning of something is only present in someone's mind, not in some text labels inside angle brackets. And it's great to see him make exactly the same point I've made, that the evolution of markup proceeds the same regardless of whether tags are segmented into different namespaces.
At the end of the day, markup is just a bunch of labels. We should be grateful that XML makes them (somewhat) human-readable and internationalized, and try to write down what we want them to mean as clearly as and cleanly as we can, with a view to the needs of the downstream implementors and users.
But we shouldn't try to kid ourselves that meaning is inherent in those pointy brackets, and we really shouldn't pretend that namespaces make a damn bit of difference.
Software has to be written to deal with the markup, and putting something in a namespace doesn't do anything to make writing the software easier or more automatic, or encapsulate any more meaning in the document than is present in the community understanding of a given tag and codified in source code meant to deal with those tags. In addition, besides being useless "semantic bloat", they just plain make XML harder to use.
What it comes down to is that if you normalize every tag, say, in the Dublin Core namespace and change how it appears in a document from "dc:tagname" to "http://purl.org/dc/elements/1.1/:tagname", the "namespace" goes away. It's all just strings that you're trying to keep unique.
Dave: "Namespaces create elements with names with colons in them." - exactly!
Feel free to post a comment below. Please see my comment policy.
Formatting Rules (No HTML):