W3C home > Mailing lists > Public > www-tag@w3.org > August 2009

RE: namespaces vs. language versions

From: Larry Masinter <masinter@adobe.com>
Date: Sat, 8 Aug 2009 03:38:54 -0700
To: "noah_mendelsohn@us.ibm.com" <noah_mendelsohn@us.ibm.com>
CC: "www-tag@w3.org" <www-tag@w3.org>
Message-ID: <8B62A039C620904E92F1233570534C9B0118DB6E09C4@nambx04.corp.adobe.com>
Larry Masinter writes:

> It is pretty clear to me given the fairly broad definition of “version”
> as it applies to language-as-used, language-as-specified that multiple
> ‘versions’ of an XML-based language might share the same namespace,
> and that therefore the “namespace” alone could not serve as the
> sole indicator of version. On the other hand, two languages which
> use different namespaces are different languages, clearly.

> I agree with your conclusion, but even this formulation tends, if 
> indirectly, to promote the myth that "the namespace" can be identified, at 
> least for a given version of a language. 

I'm not sure "myth" is the right word. If namespaces are vocabularies,
then a "language" (whether language-as-used or language-as-specified)
has associated with it one or more vocabularies.

> It's not just that "multiple 
> versions...might share a namespace"; even a single "version" of a language 
> might be built of markup from many namespaces, and that markup in turn 
> might be used in other nearly unrelated languages.

Here is an analogy: If a bilingual community engages in
a conversation, they might converse using a hybrid of the two
languages they share. The hybrid itself is a kind of "language",
which has a vocabulary consisting of words from both of the
constituent languages.  The hybrid language might even, in
some circumstances, have meanings or usage rules which are
not directly inherited from either.

In that sense, XML with namespaces provides a mechanism for
creating hybrid languages which use many namespaces. The 
hybrids themselves evolve over time.

> Example:  ...

(good example)


> For any one document type, there will be a root element, and if we believe 
> in the TAG's (incomplete) work on XML Functions [1] (ISSUE-34 [2]), the 
> documentation for that root element will determine the meaning in context, 
> and thus the "versioning rules"  of the subelements it uses, regardless of 
> namespace.  

I'm not familiar with this work, and the cited documents aren't
enough for me to quite get it. I don't understand the
"documentation for [that] root element" insofar as what the
relationship might be between the "documentation" for a root
element and the languages and their versions which allow that
(namespaced) root element as their root -- what is the scope
of the documentation, how would the documentation evolve, etc.?



> Of course, it would in many cases (though not all, IMO) be a 
> good thing if the documentation for a root element <orders:purchaseOrder> 
> delegated to the documentation for its children <shipping:label> as to how 
> that subelement may change with versioning. 

There is certainly an issue of "who is on top"; I can see how
it is possible to define a "language" for purchase orders
to define or constrain the interpretation and versioning rules
for shipping labels, but I would argue that it is *not*
a good thing, from a design point of view.

An *application* which is built using the purchase order language
with instances of the shipping label language within *should* 
define the versions of purchase orders and shipping labels
that interoperable implementations (at any point in time) should
use; such a set of requirements might form a useful applicability
statement which would aid in building interoperable implementations.

However, those rules are not *language* constraints, or at least,
they should not be. This is part of the orthogonality principle:
the languages should be allowed to evolve independently.

Combining language definition with interoperability applicability
statements is one of the major flaws of the current HTML5 document.


> So in this example, the 
> <billing:purchaseOrder> documentation could say "A <shipping:label> 
> element specifies the label to be printed for shipping the order;  future 
> versions of <shipping:label> are supported insofar as these are properly 
> documented in (future versions of) the specification for 
> <shipping:label>".  

This kind of statement in standards leads to serious difficulties
(I'll have to search to find some examples.), because it attempts
to predict or constrain, in one document, the future evolution path
of another for which it is not normative.

> Or, the documentation for <billing:purchaseOrder> 
> could say:  "A <shipping:label> element specifies the label to be printed 
> for shipping the order, and the contents are to be interpreted per the 1 
> January 1999 version of the specification for <shipping:label>; later 
> versions of that specification are not allowed by this version of the 
> <billing:purchaseOrder> specification."

Yes, you could say that, but again, I think it is unfortunate and
not the preferred path. 

> In short, I want to try and convince everyone that namespaces are pretty 
> much orthogonal to the whole versioning discussion.  

I argue the complete opposite: getting clarity on how specific
languages can evolve independently, including those which are
distinguished by namespaces, root elements, and version indicators
of those root elements, is a very important aspect of "the
whole versioning discussion".

Otherwise, we will see HTML redefining RDFa and SVG and any other
language, or inappropriately constraining the versioning of 
included subsets.

> What matters in XML 
> are tag names and their (potentially evolving) specifications.  For 
> documents, versions and namespaces, it's pretty much mix-n-match in the 
> general case.  So, I think we should be careful about referring to "the 
> namespace", even for a particular version.

I'm a big fan of being careful, and I admit my original posting
about "the" namespace left out discussion of the very common case
of hybrid languages build out of sublanguages in multiple namespaces,
where each sublanguage evolves independently, and there are also
some idioms of usage which assign special meanings to combinations.


[1] http://www.w3.org/2001/tag/doc/elabInfoset-20071127/elabInfoset.html  
[2] http://www.w3.org/2001/tag/group/track/issues/34

 



Larry Masinter <masinter@adobe.com>
Sent by: www-tag-request@w3.org
08/05/2009 05:00 PM
 
        To:     "www-tag@w3.org" <www-tag@w3.org>
        cc:     (bcc: Noah Mendelsohn/Cambridge/IBM)
        Subject:        namespaces vs. language versions


I think I still had an action item on the HTML working group to insure
that the versioning document touched on the relationship of namespaces
to language versions.
 
It is pretty clear to me given the fairly broad definition of “version”
as it applies to language-as-used, language-as-specified that multiple
‘versions’ of an XML-based language might share the same namespace,
and that therefore the “namespace” alone could not serve as the
sole indicator of version. On the other hand, two languages which
use different namespaces are different languages, clearly.
 
I’m not sure if there is general advice about when new namespaces
SHOULD be used when defining a new language version/variant,
except to point out that changing namespaces can have bad
backward compatibility issues.
 
Larry
--
http://larry.masinter.net

 

Received on Saturday, 8 August 2009 10:39:33 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:48:15 GMT