<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>W3C TAG Lines</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/blog/tag/" />
    <link rel="self" type="application/atom+xml" href="http://www.w3.org/QA/tag_feed.xml" />
   <id>tag:www.w3.org,2009:/QA//1</id>
    <updated>2009-11-20T14:06:32Z</updated>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.261</generator>
 

<entry>
    <title>Default Prefix Declaration</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/11/default_prefix_declaration.html" />
    <id>tag:www.w3.org,2009:/QA//1.8659</id>
    
    <published>2009-11-18T14:23:07Z</published>
    <updated>2009-11-20T14:06:32Z</updated>
    
    <summary type="html">In this posting, my intention is to provide a concise statement of an idea which is neither
particularly new nor particularly mine, but which needs a place that can be referenced in the context of the current debate about distributed extensibility and HTML5.  It&apos;s a very simple proposal to provide an out-of-band, defaultable, document-scoped means to declare namespace prefix bindings.</summary>
    <author>
        <name>Henry S. Thompson</name>
        
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 14 June 2007), see www.w3.org">
<meta name="copyright" content=
"Copyright (C) 2007 Henry S. Thompson">
<meta http-equiv="Content-type" content=
"text/html; charset=us-ascii">
<style type="text/css">
     @page { size: A4 portrait; margin: 2cm} 
     @media screen {
     body {width: 20cm; margin-left: auto; margin-right: auto}
       }
     body {font-size: 12pt}
       pre.code {font-family: monospace}
       pre {margin-left: 0em}
       ul.nolabel { margin: 0; margin-left: -2.5em}
       ul.naked li { list-style-type: none }
       ol ol {list-style-type: lower-alpha}
       div.ndli { margin-bottom: 1ex }
       .math {font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', serif}
       .sub {font-size: 80%; vertical-align: sub}
       .termref {text-decoration: none; color: #606000}
       div.toc h2 {font-size: 120%; margin-top: 0em; margin-bottom: 0em}
       div.toc h4 {font-size: 100%; margin-top: 0em; margin-bottom: 0em;
                   margin-left: 1em}
       div.toc h1 {font-size: 140%; margin-bottom: 0em}
       div.toc ul {margin-top: 1ex}
       .byline {font-size: 120%}
       div.figure {margin-left: 2em}
       div.caption {font-style: italic; font-weight: bold; margin-top: 1em}
       i i {font-style: normal}
</style>
<title>Default Prefix Declaration</title>
</head>
<body style=
"font-family: DejaVu Sans, Arial; background: rgb(254,250,246)">
<div style="text-align: center">
<h1>Default Prefix Declaration</h1>
<div class="byline">Henry S. Thompson</div>
<div class="byline">18 Nov 2009</div>
</div>
<div class="toc">
<h1>Table of Contents</h1>
<ul class="naked">
<li>
<h2>1. <a href="#disclaimer">Disclaimer</a></h2>
</li>
<li>
<h2>2. <a href="#intro">Introduction</a></h2>
</li>
<li>
<h2>3. <a href="#proposal">The proposal</a></h2>
</li>
<li>
<h2>4. <a href="#why_prefixes">Why prefixes?</a></h2>
</li>
<li>
<h2>5. <a href="#example">Example</a></h2>
</li>
</ul>
</div>
<div id="disclaimer">
<h2>1. <a name="disclaimer" id="disclaimer">Disclaimer</a></h2>
<p>The ideas behind the proposal presented here are neither
particularly new nor particularly mine. I've made the effort to
write this down so anyone wishing to refer to ideas in this space
can say "Something along the lines of [this posting]" rather than
"Something, you know, like, uhm, what we talked about, prefix
binding, media-type-based defaulting, that stuff".</p>
</div>
<div id="intro">
<h2>2. <a name="intro" id="intro">Introduction</a></h2>
<p>Criticism of <a href="http://www.w3.org/TR/xml-names/">XML
namespaces</a> as an appropriate mechanism for enabling distributed
extensibility for the Web typically targets two issues:</p>
<ol>
<li>Syntactic complexity</li>
<li>API complexity</li>
</ol>
<p>Of these, the first is arguably the more significant, because
the number of authors exceeds the number of developers by a large
margin. Accordingly, this proposal attempts to address the first
problem, by providing a defaulting mechanism for namespace prefix
bindings which covers the 99% case.</p>
</div>
<div id="proposal">
<h2>3. <a name="proposal" id="proposal">The proposal</a></h2>
<dl>
<dt><b><a name="Binding" id="Binding">Binding</a></b></dt>
<dd>Define a trivial XML language which provides a means to
associate prefixes with namespace names (URIs);</dd>
<dt><b><a name="Invoking_from_HTML" id=
"Invoking_from_HTML">Invoking from HTML</a></b></dt>
<dd>Define a link relation <code>dpd</code> for use in the (X)HTML
header;</dd>
<dt><b><a name="Invoking_from_XML" id="Invoking_from_XML">Invoking
from XML</a></b></dt>
<dd>Define a processing instruction <code>xml-dpd</code> and/or an
attribute <code>xml:dpd</code> for use at the top of XML
documents;</dd>
<dt><b><a name="Defaulting_by_Media_Type" id=
"Defaulting_by_Media_Type">Defaulting by Media Type</a></b></dt>
<dd>Implement a registry which maps from media types to a published
dpd file;</dd>
<dt><b><a name="Semantics" id="Semantics">Semantics</a></b></dt>
<dd>Define a precedence, which operates on a per-prefix basis,
namely xmlns: &gt;&gt; explicit invocation &gt;&gt; application
built-in default &gt;&gt; media-type-based default, and a semantics
in terms of <a href=
"http://www.w3.org/TR/xml-infoset/#infoitem.namespace">namespace
information items</a> or appropriate data-model equivalent on the
document element.</dd>
</dl>
</div>
<div id="why_prefixes">
<h2>4. <a name="why_prefixes" id="why_prefixes">Why
prefixes?</a></h2>
<p>XML namespaces provide two essentially distinct mechanisms for
'owning' names, that is, preventing what would otherwise be a name
collision by associating names in some way with some additional
distinguishing characteristic:</p>
<ol>
<li>By prefixing the name, and binding the prefix to a particular
URI;</li>
<li>By declaring that within a particular subtree,
<i>un</i>prefixed names are associated with a particular URI.</li>
</ol>
<p>In XML namespaces as they stand today, the association with a
URI is done via a <a href=
"http://www.w3.org/TR/xml-names/#ns-decl">namespace declaration</a>
which takes the form of an attribute, and whose impact is scoped to
the subtree rooted at the owner element of that attribute.</p>
<p>Liam Quin <a href=
"http://www.balisage.net/Proceedings/vol3/html/Quin01/BalisageVol3-Quin01.html">
has proposed</a> an additional, out-of-band and defaultable,
approach to the association for <i>un</i>prefixed names, using
patterns to identify the subtrees where particular URIs apply. I've
borrowed some of his ideas about how to connect documents to prefix
binding definitions.</p>
<p>The approach presented here is similar-but-different, in that its primary
goal is to enable out-of-band and defaultable associations of namespaces
to names <i>with</i> prefixes, with whole-document scope. The
advantages of focussing on prefixed names in this way are:</p>
<ul>
<li><i>Ad-hoc</i> extensibility mechanisms typically use prefixes.
The HTML5 specification already has at least two of these:
<code>aria-</code> and <code>data-</code>;</li>
<li>Prefixed names are more robust in the face of arbitrary
cut-and-paste operations;</li>
<li>Authors are used to them: For example XSLT stylesheets and W3C
XML Schema documents almost always use explicit prefixes
extensively;</li>
<li>Prefix binding information can be very simple: just a set of
pairs of prefix and URI.</li>
</ul>
<p>Provision is also made for optionally specifying a binding for the default namespace at the document element, primarily for the media type registry case, where it makes sense to associate a primary namespace with a media type.</p>
</div>
<div id="example">
<h2>5. <a name="example" id="example">Example</a></h2>
<p>If this proposal were adopted, and a dpd document for use in HTML 4.01 or XHTML1:</p>
<blockquote>
<div>
<pre class="code">
&lt;dpd ns="http://www.w3.org/1999/xhtml"&gt;
 &lt;pd p="xf" ns="http://www.w3.org/2002/xforms"/&gt;
 &lt;pd p="svg" ns="http://www.w3.org/2000/svg"/&gt;
 &lt;pd p="ml" ns="http://www.w3.org/1998/Math/MathML"/&gt;
&lt;/dpd&gt;</pre></div>
</blockquote>
<p>was registered against the <code>text/html</code> media type, the following would result in a DOM with <code>html</code> and <code>body</code> elements in the XHTML namespace and an <code>input</code> element in the XForms namespace:
</p>
<blockquote>
<div>
<pre class="code">&lt;html>
 &lt;body>
  &lt;xf:input ref="xyzzy">...&lt;/xf:input>
 &lt/body>
&lt/html></pre></div>
</blockquote>
</div>
</body>
</html>
]]>
        
    </content>
</entry>

<entry>
    <title>TAG Status Report: July, 2009</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/07/tag_status_report_july_2009.html" />
    <id>tag:www.w3.org,2009:/QA//1.6455</id>
    
    <published>2009-07-31T14:55:13Z</published>
    <updated>2009-07-31T14:57:55Z</updated>
    
    <summary type="html">The latest status report to the W3C membership from the TAG is available at http://www.w3.org/2001/tag/2009/sum07. Noah...</summary>
    <author>
        <name>Noah Mendelsohn</name>
        
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[The latest status report to the W3C membership from the <a href="http://www.w3.org/2001/tag/">TAG</a> is available at <a href="http://www.w3.org/2001/tag/2009/sum07">http://www.w3.org/2001/tag/2009/sum07</a>.

Noah]]>
        
    </content>
</entry>

<entry>
    <title> Orthogonality of Specifications</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/06/orthogonality_of_specification.html" />
    <id>tag:www.w3.org,2009:/QA//1.6371</id>
    
    <published>2009-06-24T13:03:36Z</published>
    <updated>2009-06-24T13:01:35Z</updated>
    
    <summary type="html">HTTP,HTML,URI The general principle of platform design is that platforms consist of a set of standard interfaces. Standard interfaces allow substitution of components across the interface boundary, while independence of interfaces allow evolution of the interfaces themselves. In a PC,...</summary>
    <author>
        <name>Larry Masinter</name>
        <uri>http://larry.masinter.net</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<!-- #BeginTags --><p class="tags"><a href="http://www.technorati.com/tag/HTTP" rel="tag">HTTP</a>,<a href="http://www.technorati.com/tag/HTML" rel="tag">HTML</a>,<a href="http://www.technorati.com/tag/URI" rel="tag">URI</a></p><!-- #EndTags -->
	<p>The general principle of platform design is that platforms consist of a set of standard interfaces. Standard interfaces allow substitution of components across the interface boundary, while independence of interfaces allow evolution of the interfaces themselves. In a PC, for example, the disk bus interface allows many different disk vendors to offer disk products independent of the model of display or keyboard, but the orthogonality of  interfaces allow evolution of the interfaces themselves. If the display interface were linked to the disk interface too tightly, it wouldn't be possible to evolve ISA to SATA without updating VGA.</p>
	<p>In the web platform, the three important interfaces are transport, format and reference, and the current definitions of those interfaces are HTTP, HTML and URI. The interfaces are standard, allowing many different implementations: HTTP standard lets you use HTTP servers from many vendors, the HTML standard lets you use many different HTML authoring tools or template systems, and the URI specification allows identification of many different components.</p>
	<p>While HTTP is the current "common denominator"  protocol that all web agents are expected to  speak, the web should continue to work if web content is delivered by other  protocols -- FTP, shared file systems, email, instant messaging, and so forth.  HTTP as it has evolved has severe  difficulties, and designing a Web that <strong>only works</strong> with HTTP as it is  currently implemented and deployed would unfortunate. We should work harder to  reduce the dependencies and isolate them.</p>
	<p>HTML is the 'lingua franca', the common language that all  agents are currently expected to be able to produce, process, read and interpret (or at  least a well-defined subset of it). Having a common language is important for  interoperability, but  the web should  also work for other formats -- extensions to HTML  including scripting, DOM APIs, but also other  formats and application environments such as XHTML, Java, PDF, Flash,  Silverlight, XForms, 3D objects, SVG, other XML languages and so forth. Certainly  HTML has it has evolved is overly complex for the purposes to which it is  designed.</p>
	<p>The URI is the fundamental element of reference, but the URI  itself is evolving to deal with internationalization, reference to session  state, IRIs, LEIRIs, HREFs and so forth. Many applications use URIs and IRIs,  not just the formats described above but other protocols and locations,  including databases, directories, messaging, archiving, peer-to-peer sharing  and so forth.</p>
	<p>The is just one of many communication applications  on the global Internet; for web browsing to integrate will with the rest of the  distributed networking, web components should be independent of the  application, and work well with messaging, instant messaging,  news feeds, etc etc.</p>
	<p>A sign of a breakdown of this architectural  principle would be for a specification of a format (say HTML) to attempt to  redefine, for its purposes, the protocol (say HTTP) or the method of reference  (URI).  The specifications should be independent, or at least, dependencies isolated, minimized, reduced. If those other elements of the  web architecture are incorrect, need to evolve to meet current practice or have  flaws in their definitions, they need to evolve independently, so that orthogonality of the specifications and reusability of the components are the  promoted.</p>
	<p>There may well be reasons to link some features of HTML to  the fact that it is delivered over an interactive protocol, but linking HTML  directly to HTTP in a way that features would work only for HTTP and not for  any other protocol with similar features – that would be unfortunate. It might  not matter in the short-term (that&rsquo;s all we have right now) but it is harmful  to the long-term evolution of the web.</p>
	<p>(Should go without saying, but just in case: this is a personal post, not reviewed by the TAG)</p>
	]]>
        
    </content>
</entry>

<entry>
    <title>Language semantics and operational meaning</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/05/language_semantics_and_operati.html" />
    <id>tag:www.w3.org,2009:/QA//1.6366</id>
    
    <published>2009-05-19T18:45:18Z</published>
    <updated>2009-05-19T18:45:39Z</updated>
    
    <summary type="html"> W3C and other standards organizations are in the business of defining languages -- conventions that organizations can choose to follow -- and not in mandating operational behavior -- telling organizations and participants in the network how they are supposed...</summary>
    <author>
        <name>Larry Masinter</name>
        <uri>http://larry.masinter.net</uri>
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[
	<p>W3C and other standards organizations are in the business of defining languages -- conventions that organizations can choose to follow -- and not in mandating operational behavior -- telling organizations and participants in the network how they are supposed to behave. Organizations (implementors, operators, administrators, software developers) are free to choose which standards they adopt, and what their operational behavior will be.</p>
	<p>In some <a href="http://lists.w3.org/Archives/Public/www-tag/2009Jan/0143.html">posts on the www-tag mailing list</a>, I was trying to point out the risks in defining languages such that the &quot;meaning&quot; of the language depends on operational behavior. In some ways, of course, this is a fallacy: in general, what an utterance &quot;means&quot; in some operational way depends on what the speaker intends and how the listener will interpret the utterance. </p>
	<p>However, as an organization, W3C can, and should, define languages in which the meaning is defined in the document, in terms of abstractions rather than in terms of operational behavior. The result is more robust standards, those that have wider applicability, that can be used for more purposes, and that create a more vibrant and extensible web.<BR/>
    </p>
  ]]>
        
    </content>
</entry>

<entry>
    <title>Search Engines take on Structured Data</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/05/structured_data_and_search_eng.html" />
    <id>tag:www.w3.org,2009:/QA//1.6362</id>
    
    <published>2009-05-13T16:18:42Z</published>
    <updated>2009-05-14T07:17:04Z</updated>
    
    <summary type="html">Structured data on the web got a boost this week, with Google&apos;s announcement of Rich Snippets and Rich Snippets in Custom Search. Structured data at such a large scale raises at least three issues:SyntaxVocabularyPolicyGoogle&apos;s documentation shows support for both microformats...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Semantic Web" />
    
        <category term="Web Architecture" />
    
        <category term="eGov" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>Structured data on the web got a boost this week, with Google's announcement of  <a href="http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html">Rich Snippets</a> and <a href="http://googlecustomsearch.blogspot.com/2009/05/enabling-rich-snippets-in-custom-search.html">Rich Snippets in Custom Search</a>. Structured data at such a large scale raises at least three issues:</p><ol><li>Syntax</li><li>Vocabulary</li><li>Policy<br /></li></ol><p>Google's <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=99170">documentation</a> shows support for both microformats and RDFa. It follows the hReview microformat syntax with small vocabulary changes (name vs fn). Support for RDFa syntax, in theory, means support for vocabularies that anyone makes; but in practice, Google is starting with a clean slate: <b>data-vocabulary.org</b>. That's a place to start, though it doesn't provide synergy with anyone who has uses FOAF or Dublin Core or the like to share their data.<br /></p><p>The policy questions are perhaps the most difficult. Structured data is a pointy instrument; if anyone can say anything about anything, surely the system will be gamed and defrauded. Google's rollout is one step at a time, starting with some trusted sites and an application process to get your site added. The O'Reilly <a href="http://radar.oreilly.com/2009/05/google-adds-microformat-parsin.html">interview</a> with Guha and Hansson is an interesting look at where they hope to go after this first step; if you're curious about how this fits in to HTML standards, see Sam Ruby's <a href="http://intertwingly.net/blog/2009/05/12/Microdata">microdata</a>.<br /></p><p>While issues remain--there are syntactic i's to dot and t's to cross and even larger policy issues to work out--between Google's rollout and <a href="http://developer.yahoo.com/searchmonkey/siteowner.html">Yahoo's searchmonkey</a> and the <a href="http://webbackplane.com/mark-birbeck/blog/2009/04/23/more-rdfa-goodness-from-uk-government-web-sites">UK Central Office of Information rollout</a>, it seems that the industry is ready to take on the challenges of using structured data in search engines.<br /></p>



]]>
        
    </content>
</entry>

<entry>
    <title>Data interchange problems come in all sizes</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/05/data_interchange_problems_come.html" />
    <id>tag:www.w3.org,2009:/QA//1.6360</id>
    
    <published>2009-05-08T21:10:44Z</published>
    <updated>2009-05-08T23:20:52Z</updated>
    
    <summary type="html"> I had a pretty small data interchange problem the other day: I just wanted to archive some play lists that I had compiled using various music player daemon (mpd) clients. The mpd server stores playlists as simple m3u files,...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Opinions &amp; Editorial" />
    
        <category term="Semantic Web" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[
<p>I had a pretty small data interchange problem the other day: I just
wanted to archive some play lists that I had compiled using various
music player daemon (<a href="http://en.wikipedia.org/wiki/Music_Player_Daemon">mpd</a>)
clients.
 The mpd server stores playlists as simple <a href="http://en.wikipedia.org/wiki/M3U">m3u</a> files,
i.e. line-oriented files with a path to the media file on each line. But
that's too fragile for archive and interchange purposes.

I had a similar problem a while back with iTunes playlists. In <a href="http://dig.csail.mit.edu/breadcrumbs/node/228">that episode</a>,
I chose <a href="http://microformats.org/wiki/haudio">hAudio</a>, an
HTML dialect in progress in the <a href="http://microformats.org/wiki/Main_Page">microformats
community</a>, as my target.</p>

<p>Unfortunately, hAudio changed out from under me between when I
started and when I finished.  So this time, a simple search found the
<a href="http://musicontology.com/">music ontology</a> and I tried it
with <a href="http://www.w3.org/TR/xhtml-rdfa-primer/">RDFa</a>, which
lets you use any RDF vocabulary in HTML<a href="#quibble">*</a>.
I'm mostly pleased with the results:
</p>


<blockquote>
<ol xmlns:mo="http://purl.org/ontology/mo/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<li about="#album1" typeof="mo:Record">
from <cite property="dc:title">A Song's Best Friend_ The Very Best Of John Denver [Disc 1]</cite>
<br /> by <span rel="foaf:maker"><b typeof="foaf:Agent" about="#agent1" property="foaf:name">John Denver</b></span>
<br /><a rel="mo:track" href="http://www.w3.org/QA/sununga/mt-static/html/artists-popular/John%20Denver/A%20Song%27s%20Best%20Friend_%20The%20Very%20Best%20Of%20John%20Denver%20%5BDisc%201%5D/1-04%20Poems%2C%20Prayers%20And%20Promises.mp3"><em property="dc:title">Poems, Prayers And Promises</em></a></li>

<li about="#album2" typeof="mo:Record">
from <cite property="dc:title">WOW Worship (orange)</cite>
<br /> by <span rel="foaf:maker"><b typeof="foaf:Agent" about="#agent2" property="foaf:name">Compilations</b></span>
<br /><a rel="mo:track" href="http://www.w3.org/QA/sununga/mt-static/html/artists-popular/Compilations/WOW%20Worship%20%28orange%29/1-01%20Did%20you%20Feel%20the%20Mountains%20Tremble.mp3"><em property="dc:title">Did you Feel the Mountains Tremble</em></a></li>

<li about="#album3" typeof="mo:Record">
from <cite property="dc:title">Family Music Party</cite>
<br /> by <span rel="foaf:maker"><b typeof="foaf:Agent" about="#agent3" property="foaf:name">Trout Fishing In America</b></span>
<br /><a rel="mo:track" href="http://www.w3.org/QA/sununga/mt-static/html/artists-popular/Trout%20Fishing%20In%20America/Family%20Music%20Party/14%20-%20Back%20When%20I%20Could%20Fly.flac"><em property="dc:title">Back When I Could Fly</em></a></li>
</ol>
</blockquote>

<p>The album names come before the track names because I didn't read
enough of the the <a href="http://www.w3.org/TR/xhtml-rdfa-primer/">RDFa primer</a> when I
was coding; RDFa includes <tt>@rev</tt> as well as <tt>@rel</tt>
for reversing subject/object order.
See
<a href="http://www.advogato.org/person/connolly/diary/67.html">an
advogato episode on m3uin.py</a> for details about the code.
</p>

<p>The Music Ontology was developed by a handful of people who
staked out a claim in URI space
(<tt>http://musicontology.org/...</tt>) and happily took comments from
as big a review community as they could manage, but they had no
obligation to get a really global consensus. The microformats process
is intended to reach a global consensus so that staking out a claim in
URI space is superfluous; it works well given certain initial
conditions about how common the problem is and availability of pre-web
designs to draw from. Perhaps playlists (and media syndication, as
hAudio seems to be expanding in scope to hMedia) will eventually reach
these conditions, but the music ontology already meets my needs, since
I'm the sort who doesn't mind declaring my data vocabulary with URIs.
</p>

<p>My view of Web architecture is shaped by episodes such as this
one. While giga-scale deployment is always impressive and definitely
something we should design for, small scale deployment is just as
important. The Web spread, initially, not because of global phenomena
such as Wikipedia and Facebook but because you <em>didn't</em> need
your manager's permission to try it out; you <em>didn't</em> even
<em>need</em> a domain name; you could just run it on your LAN
or even on just one machine with no server at all.</p>

<p>In an
<a href="http://www.w3.org/2008/10/22-tp-minutes.html#item02">Oct 2008
tech plenary session on web architecture</a>,
Henri Sivonen said:
</p>

<blockquote>
<p>I see the Web
as the public Web that people can access. The resources you can
navigate publicly. I define Web as the information space accessible to
the public via a browser.<br /> If a mobile operator operates behind
walls, this is not part of the Web.</p>
</blockquote>

<p>I can't say that I agree with that perspective. I'm no great fan of
walled gardens either, but freedom means freedom to do things we don't
like as well as freedom to do things we do like. And architecture and
policy should have a sort of church-and-state separation between
them.</p>

<p>Plus, data interchange happens not just at planetary scale, but
also within mobile devices, across devices, and across communities
and enterprises of all shapes and sizes.</p>

<p id="quibble"><small>I've gone a little outside the scope of current
standards; RDFa has only been specified for use in modular XHTML, with
the <tt>application/xhtml+xml</tt> media type, so far.</small>
</p>

<hr>
<p>See also:</p>

<ul>
<li>Feb 2009: <cite><a href="http://www.w3.org/QA/2009/02/palm_webos_approach_to_html_ex.html" rel="bookmark">Palm webOS approach to HTML extensibility:
x-mojo-*</a></cite></li>

<li>Aug 2008: <cite><a href="http://www.w3.org/QA/2008/08/the_details_of_data_in_documen.html">The details of data in documents: GRDDL, profiles, and HTML5</a></cite>
</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Once more into Versioning -- this time with HTML</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/05/once_more_into_versioning_--_t.html" />
    <id>tag:www.w3.org,2009:/QA//1.6359</id>
    
    <published>2009-05-04T17:39:46Z</published>
    <updated>2009-05-04T18:57:24Z</updated>
    
    <summary type="html">The W3C TAG has worked on the general issue of &quot;versioning&quot; for many years, and many TAG members may be worn out on the issue. However, undeterred by past history, I&apos;m taking another run at it, this time trying to...</summary>
    <author>
        <name>Larry Masinter</name>
        <uri>http://larry.masinter.net</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        The W3C TAG has worked on the general issue of &quot;versioning&quot; for many years, and many TAG members may be worn out on the issue. 

However, undeterred by past history, I&apos;m taking another run at it, this time trying to look specifically at the issues around versioning of HTML, CSS, JavaScript and other parts of the standard web browser landscape. 

Part of what&apos;s new (I think) is looking at the cost/benefits around deployment. See the www-tag mailing list archive for the HTML and versioning threads.
        
    </content>
</entry>

<entry>
    <title>Palm webOS approach to HTML extensibility: x-mojo-*</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/02/palm_webos_approach_to_html_ex.html" />
    <id>tag:www.w3.org,2009:/QA//1.6307</id>
    
    <published>2009-02-16T17:04:52Z</published>
    <updated>2009-02-26T17:34:22Z</updated>
    
    <summary type="html"> I got pretty excited about the iPhone, and even more about the openness of Android and the G1, and then I learn that the Palm Pre developer platform is basically just the open web platform: HTML, CSS, and JavaScript....</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Mobile" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>
I got pretty <a href="http://www.w3.org/QA/2007/08/iphone_developer_guidelines_pr.html">excited about the iPhone</a>,
and even more about the openness of Android and the G1, and then I
learn that the Palm Pre developer platform is basically just the open
web platform: HTML, CSS, and JavaScript.</p>
<p>Just after the <a href="http://www.w3.org/2009/Talks/02wdn/slides#%2844%29">mobile buzz at Web Directions North</a> and the TAG declared victory on how to build <a href="http://www.w3.org/2001/tag/doc/selfDescribingDocuments.html">The Self-Describing Web</a> with URI-based Extensibility , I get some <a href="http://developer.palm.com/webos_book/book7.html">details</a> on how Palm is building on the open web platform:</p>
<blockquote><p>A widget is declared within your HTML as an empty <b>div</b> with an <b>x-mojo-element</b> attribute.</p>
<pre>&lt;div <i>x-mojo-element=</i>"ToggleButton" <i>id=</i>"my-toggle"&gt;&lt;/div&gt;</pre>
</blockquote>

<p>Oh great; x- tokens... aren't those passe by now?</p>
<p>The suggestion in the HTML 5 draft is <a href="http://lists.w3.org/Archives/Public/public-html/2008Apr/0205.html">data-* attributes</a>. The <a href="http://www.w3.org/TR/wai-aria/">ARIA draft</a> suggests @role. The Palm design looks like new information for <a href="http://www.w3.org/html/wg/tracker/issues/41">issue-41, Decentralized-extensibility</a>, in the HTML WG.</p>
<p>Anybody know how frozen the Palm design is? Or if they looked at ARIA, data-* or URI-based namespaces?</p>]]>
        
    </content>
</entry>

<entry>
    <title>JavaScript required for basic textual info? TRY AGAIN</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2009/01/javascript_required_for_basic.html" />
    <id>tag:www.w3.org,2009:/QA//1.6297</id>
    
    <published>2009-01-27T22:01:19Z</published>
    <updated>2009-01-27T22:18:27Z</updated>
    
    <summary type="html">Sam says he&apos;s Online and Airborne. &quot;Needless to say, this is seriously cool.&quot; I&apos;ll say! But when I follow the link to details from the service provider, I get:Sorry. You must have JavaScript enabled to view this page. Click the...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="Accessibility" />
    
        <category term="HTML" />
    
        <category term="Security" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[Sam says he's <a href="http://intertwingly.net/blog/2009/01/27/Online-and-Airborne">Online and Airborne</a>. "Needless to say, this is seriously cool." I'll say! But when I follow the link to details from the service provider, I get:<br /><blockquote>Sorry. You must have JavaScript enabled to view this page. Click the
BACK button below or enable JavaScript in your browser preferences and
click TRY AGAIN.<br /></blockquote>Let's turn that around, shall we? Sorry, if you're a network provider and you want my business, read up on <a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">unobtrusive javascript</a> (aka the <a href="http://www.w3.org/2001/tag/doc/leastPower.html">rule of least power</a>), go BACK to work on your web site design and TRY AGAIN.<br />]]>
        
    </content>
</entry>

<entry>
    <title>How to evaluate Web Applications security designs?</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/12/web_applications_security_requ.html" />
    <id>tag:www.w3.org,2008:/QA//1.595</id>
    
    <published>2008-12-03T17:00:00Z</published>
    <updated>2008-12-04T08:43:15Z</updated>
    
    <summary type="html"> I could use some help getting my head around security for Web Applications and mashups. The first time someone told me W3C should be working on specs help the browser prevent sensitive data from leaking out of enterprises, I...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[
<p>I could use some help getting my head around security for Web
Applications and mashups.</p>

<p>The first time someone told me W3C should be working on specs help
the browser prevent sensitive data from leaking out of enterprises, I
didn't get it. "Use the browser as part of the trusted computing base?
Are you kidding?" was my response. I didn't see the bigger picture.
Crockford explains in an <a
href="http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=819"
>April 2008 item</a>:</p>

<blockquote>
<p>
... there are multiple interests involved in a web
application. We have here the interests of the user, of the site, and
of the advertiser. If we have a mashup, there can be many more
interests.</p>
</blockquote>

<p>Most of my study of security protocols concentrated on whether a
request from party A should be granted by party B. You know, Alice and
Bob. Using <a href="http://en.wikipedia.org/wiki/BAN_logic">BAN
logic</a> to analyze the Kerberos protocols was very interesting.</p>

<p>I also enjoyed studying <a
href="http://erights.org/elib/capability/ode/overview.html">capability
security and the E system</a>, which is a fascinating model of secure
multi-party communication (not to mention lockless concurrency),
though it seems an impossibly high bar to reach, given the
worse-is-better tendency in software deployment, and it seemed to me
that capabilities are a poor match for the way <a
href="http://www.w3.org/TR/webarch/#id-access">linking and access
control</a> work in the Web:</p>

<blockquote>
<p>
The Web provides several mechanisms
to control access to resources; these mechanisms do not rely on
hiding or suppressing URIs for those resources.
</p>
</blockquote>

<p>On the other hand, after wrestling with the patchwork of javascript
security policies in browsers in the past few weeks, the capability
approach in <a
href="http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=706"
>adsafe</a> looks simple and elegant by comparison. Is there any
chance we can move the state-of-the-art that far? And what do we do in
the mean time? <a
href="http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=736"
>Crockford's Jan 2008 post</a> is quite critical of W3C's current
work:</p>

<blockquote>
<p>This same sort of wrong-end-of-the-network thinking can be seen today
in the HTML 5 working group's <a href="http://lists.w3.org/Archives/Public/public-appformats/2008Jan/0008.html">crazy    XHR access control language</a>.
</p>
</blockquote>

<p><a href="http://www.w3.org/TR/access-control/">Access Control for Cross-Site Requests</a>
is a mouthful, and "Access Control" is too generic, which leads to "W3C
Access Control". Didn't we already go through this with "W3C XML
Schema"? Generic names are awkward. I think I'll call it WACL...
yeah... rhymes with spackle... let's see if it sticks. Anyway...</p>

<p><a href="http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=736"><span id="date">Crockford's comment</span></a> cites his proposal and argues...</p>

<blockquote>
<p>JSONRequest
does not allow the server to abdicate its responsibility of deciding if
the data should be delivered to the browser. Therefore, no policy
language is needed. JSONRequest requires explicit authorization.
Cookies and other tokens of ambient authority are neither sent nor
delivered.</p>
</blockquote>

<p> I'm not sure I understand that. I'm glad to learn there's more to
the difference between XMLHttpRequest and JSONRequest than just
&lt;pointy-brackets&gt; vs {curly-braces}, but I'd like to understand
better how "ambient authority" relates to the interests of users,
sites, advertisers, and the like.</p>

<p>In response, the <a href="http://www.w3.org/TR/access-control/#design-decision-faq">FAQ in the WACL spec</a> says:</p>

<blockquote>
<p>JSONRequest has been considered by the Web Applications Working
Group and the group has concluded that it does not meet the documented
requirements. E.g., requests originating from the JSONRequest API
cannot include credentials and JSONRequest is format specific.
</p>
</blockquote>

<p>Including credentials seems more like a solution than a
requirement; can someone help me understand how it relates to the
multiple interests involved in a web application?</p>

]]>
        
    </content>
</entry>

<entry>
    <title>Caching XML data at install time</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/09/caching_xml_data_at_install_ti.html" />
    <id>tag:www.w3.org,2008:/QA//1.226</id>
    
    <published>2008-09-04T21:29:28Z</published>
    <updated>2008-09-05T23:52:09Z</updated>
    
    <summary type="html">The W3C web server is spending most of its time serving DTDs to various bits of XML processing software. While XSLT processors such as xsltproc and Xalan have no technical dependency on the XHTML DTDs, I suspect they&apos;re used with XHTML enough that shipping copies of the DTDs along with the XSLT processing software is a win all around.</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTTP" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[
<p>The W3C web server is spending most of its time serving DTDs to
various bits of XML processing software. In a <a href="http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic#c1821">follow-up comment on an item on DTD traffic</a>, Gerald says:</p>

<blockquote>
  <p>To try to help put these numbers into perspective, this blog post
  is currently #1 on slashdot, #7 on reddit, the top page of
  del.icio.us/popular , etc; yet www.w3.org is still serving more than
  650 times as many DTDs as this blog post, according to a 10-min
  sample of the logs I just checked.</p>
</blockquote>

<p>Evidently there's software out there that makes a lot of use of the
DTDs at W3C and they fetch a new copy over the Web for each use. As
far as this software is concerned, these DTDs are just data files,
much like the timezone database your operating system uses to convert
between UTC and local times. The <a href="http://en.wikipedia.org/wiki/Zoneinfo">tz database</a>
is updated with respect to changes by various jurisdictions from time
to time and the latest version is published on the Web, but your
operating system doesn't go fetch it over the Web for each use. It
uses a cached copy.  A copy was included when your operating system
was installed and your machine checks for updates once a week or so
when it contacts the operating system vendor for security updates and
such. So why doesn't XML software do likewise?</p>

<p>It's pretty easy to put together an application out of components
in such a way that you don't even realize that it's fetching DTDs
all the time. For example, if you use <a href="http://xmlsoft.org/XSLT/">xsltproc</a> like this...</p>

<pre>$ xsltproc agendaData.xsl weekly-agenda.html &gt;,out.xml
</pre>

<p>... you might not even notice that it's fetching the DTD and several
related files. But with <a href="http://www.okisoft.co.jp/esc/python/proxy/">a tiny HTTP
proxy</a>, we can see the traffic. In one window, start the proxy:</p>

<pre>$ python TinyHTTPProxy.py 
Any clients will be served...
Serving HTTP on 0.0.0.0 port 8000 ...
</pre>

<p>And in another, run the same XSLT transformation with a proxy:</p>

<pre>$ http_proxy=http://127.0.0.1:8000 xsltproc agendaData.xsl weekly-agenda.html
</pre>

<p>Now we can see what's going on:</p>

<pre>	connect to www.w3.org:80
localhost - - [05/Sep/2008 15:35:00] "GET http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd HTTP/1.0" - -
	connect to www.w3.org:80
localhost - - [05/Sep/2008 15:35:01] "GET http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent HTTP/1.0" - -
	bye
	bye
	connect to www.w3.org:80
localhost - - [05/Sep/2008 15:35:01] "GET http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent HTTP/1.0" - -
	bye
	connect to www.w3.org:80
localhost - - [05/Sep/2008 15:35:01] "GET http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent HTTP/1.0" - -
	bye
</pre>

<p>This is the default behaviour of <tt>xsltproc</tt>, but
it's not the only choice:</p>
<ul>
  <li>You can use <tt>xsltproc --novalid</tt> tells it to skip DTDs altogether.
  </li>

  <li>You can set up an 
  <a href="http://www.oasis-open.org/committees/entity/spec.html">XML catalog</a>
  as a form of local cache.</li>
</ul>

<p>To set up this sort of cache, first grab copies of
what you need:</p>

<pre>$ mkdir xhtml1
$ cd xhtml1/
$ wget http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
--15:29:04--  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
           =&gt; `xhtml1-transitional.dtd'
Resolving www.w3.org... 128.30.52.53, 128.30.52.52, 128.30.52.51, ...
Connecting to www.w3.org|128.30.52.53|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 32,111 (31K) [application/xml-dtd]

100%[====================================&gt;] 32,111       170.79K/s             

15:29:04 (170.65 KB/s) - `xhtml1-transitional.dtd' saved [32111/32111]
$ wget http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
...
$ wget http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
...
$ wget http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
...
$ ls
xhtml1-transitional.dtd  xhtml-lat1.ent  xhtml-special.ent  xhtml-symbol.ent
</pre>

<p>And then in a file such as
<tt>xhtml-cache.xml</tt>, put a little catalog:</p>

<pre>&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
  &lt;rewriteURI
      uriStartString="http://www.w3.org/TR/xhtml1/DTD/"
      rewritePrefix="./" /&gt;
&lt;/catalog&gt;
</pre>

<p>Then point <tt>xsltproc</tt> to the catalog file and try it again:</p>

<pre>$ export XML_CATALOG_FILES=~/xhtml1/xhtml-cache.xml
$ http_proxy=http://127.0.0.1:8000 xsltproc agendaData.xsl weekly-agenda.html
</pre>

<p>This time, the proxy won't show any traffic. The data was all
accessed from local copies.</p>

<p>While XSLT processors such as <tt>xsltproc</tt> and Xalan have no
technical dependency on the XHTML DTDs, I suspect they're used with
XHTML enough that shipping copies of the DTDs along with the XSLT
processing software is a win all around. Or perhaps the traffic comes
from the use of XSLT processors embedded in applications, and the DTDs
should be shipped with those applications. Or perhaps shipping the
DTDs with underlying operating systems makes more sense.  I'd have to
study the traffic patterns more to be sure.</p><p>p.s. I'd rather not deal with DTDs at all; newer schema technologies make them obsolete as far as I'm concerned. But<br /></p><ul><li>some systems were designed before better schema technology came along, and W3C's <a href="http://www.w3.org/Consortium/Persistence">commitment to persistence</a> applies to those systems as well, and<br /></li><li>the point I'm making here isn't specific to DTDs; catalogs work for all sorts of XML data, and the general principle of caching at install time goes beyond XML altogether.<br /></li></ul>
]]>
        
    </content>
</entry>

<entry>
    <title>The details of data in documents: GRDDL, profiles, and HTML5</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/08/the_details_of_data_in_documen.html" />
    <id>tag:www.w3.org,2008:/QA//1.220</id>
    
    <published>2008-08-22T19:45:48Z</published>
    <updated>2008-08-22T19:58:16Z</updated>
    
    <summary type="html">GRDDL, a mechanism for putting RDF data in XML/XHTML documents, is specified mostly at the XPath data model level. Some GRDDL software goes beyond XML and supports HTML as she are spoke, aka tag soup. HTML 5 is intended to...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Semantic Web" />
    
        <category term="Web Architecture" />
    
        <category term="XML" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[GRDDL, a mechanism for putting RDF data in XML/XHTML documents, is
specified mostly at the XPath data model level. Some GRDDL software
goes beyond XML and supports <a href="http://esw.w3.org/topic/HTMLAsSheAreSpoke">HTML as she are spoke</a>, aka tag soup. HTML 5 is intended to standardize the connection between tag soup and XPath. The <a href="../../../../TR/grddl-scenarios/#html_tidy_use_case">tidy use case for GRDDL</a> anticipates that using HTML 5 concrete syntax rather than
XHTML 1.x concrete syntax involves no changes at the XPath level.<br /><br />But in <a href="http://lists.w3.org/Archives/Public/public-grddl-comments/2008JulSep/0003.html">GRDDL and HTML5</a>,
Ian Hickson, editor of HTML 5, advocates dropping the profile attribute
of the HTML head element in favor of rel="profile" or some such. I
dropped by the <a href="http://microformats.org/wiki/irc">#microformats channel</a> to think out loud about this stuff, and Tantek said similarly, "we may solve this with <strong>rel="profile"</strong> anyway." The <a href="http://microformats.org/wiki/rel-profile">rel-profile</a> topic in the microformats wiki shows the idea goes pretty far back.<br /><br />Possibilities I see include:<br /><ul><li><a href="http://esw.w3.org/topic/GrddlImplementations">GRDDL implementations</a> add support for rel="profile" along with HTML 5 concrete syntax.</li><li>GRDDL
implementors don't change their code, so people who want to use GRDDL
with HTML 5 features such as &lt;video&gt; stick to XML-wf-happy HTML 5
syntax and they use the head/@profile attribute anyway, despite what
the HTML 5 spec says.</li><li>People who want to use GRDDL stick to XHTML 1.x.</li><li>People who want to put data in their HTML documents use <a href="http://esw.w3.org/topic/RDFa">RDFa</a>. </li></ul><p>I
don't particularly care for the rel="profile" design, but one should
choose ones battles and I'm not inclined to choose this one. I'm
content for the market to choose.</p>]]>
        
    </content>
</entry>

<entry>
    <title>life without MIME type sniffing?</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/07/life_without_mime_type_sniffin.html" />
    <id>tag:www.w3.org,2008:/QA//1.205</id>
    
    <published>2008-07-07T17:19:21Z</published>
    <updated>2008-07-07T19:22:02Z</updated>
    
    <summary type="html"> In a recent item on IE8 Security, Eric Lawrence, Security Program Manager for Internet Explorer, introduced a work-around to the security risks associated with content-type sniffing: an authoritative=true parameter on the Content-Type header in HTTP. This re-started discussion of...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="Bugs Life" />
    
        <category term="HTML" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>
In a recent <a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx">item on IE8 Security</a>, Eric Lawrence, Security Program Manager for Internet Explorer, introduced a work-around to the security risks associated with content-type sniffing: an <b>authoritative=true</b> parameter on the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17">Content-Type header in HTTP</a>. This re-started discussion of the <a href="http://www.w3.org/TR/html5/history.html#content-type-sniffing">content-type sniffing rules</a> and the <a href="http://www.w3.org/TR/html-design-principles/#support-existing-content">Support Existing Content</a> design principle of HTML 5. In response to a <a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0055.html">challenge</a> asking for evidence that supporting existing content requires sniffing,<span id="from"></span> Adam made a<a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0057.html"> suggestion</a> that I'd like to pass along:</p>

<blockquote>
I encourage you to build a copy of Firefox without content sniffing
and try surfing the web.  I tried this for a while, and I remember
there being a lot of broken sites ...</blockquote>
<p>
That reminded me of an idea I heard in <a href="http://www.w3.org/2001/tag/2007/09/13-tagmem-minutes#item09">TAG discussions of MIME types and error recovery</a>: a browser mode for "This is my content, show me problems rather
    than fixing them for me silently."
</p>
<p>
Though Adam offered a <a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0061.html">patch</a>, building firefox is not something I have mastered yet, so I'm interested to learn about run-time configuration options in IE (<a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0060.html">notes Julian</a>) and Opera (<a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0066.html">notes Michael</a>). Eric Lawrence's <a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0088.html">reply</a> points out:</p>
<blockquote>
Please do keep in mind, however, that most folks (even the ultra-web engaged on these lists) see but a small fraction of the web, especially considering private address space/intranets, etc.</blockquote>
<p>
A <a href="http://lists.w3.org/Archives/Public/public-html/2008Jul/0101.html">report</a> from one developer suggests there's light at the end of the tunnel, at least for sniffing associated with feeds:</p>
<blockquote>I did, partly as an experiment, stop sniffing text/plain in the latest release of SimplePie (which, inevitably, isn't the  nicest of things to do, seeming there are tens of thousands of users).  Next to nothing broke. I know for a fact this couldn't have been done  a year or two ago: things have certainly moved on in terms of the MIME  types feeds are served with ...
</blockquote>
<p>
If you get a chance to try life without MIME type sniffing, please let us know how it goes.</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Syntax for ARIA: Cost-benefit analysis</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/05/syntax_for_aria_costbenefit_an.html" />
    <id>tag:www.w3.org,2008:/QA//1.177</id>
    
    <published>2008-05-07T16:15:25Z</published>
    <updated>2008-05-12T10:55:57Z</updated>
    
    <summary type="html">The ARIA spec. defines roles, states and properties to manage the interface
between rich web documents and assistive technologies.  The primary expression
of roles, states and properties in markup languages is via attributes.  ARIA has to specify how its vocabulary of attributes and values can be
integrated into both existing and future languages.  This analysis assesses alternative approaches to ARIA syntax.</summary>
    <author>
        <name>Henry S. Thompson</name>
        
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[ <div style="text-align: center">
  <h1>Syntax for ARIA: Cost-benefit analysis</h1>
  <div class="byline" style="font-size: 120%">Henry S. Thompson</div>
  <div class="byline" style="font-size: 120%">7 May 2008</div>
 </div>
 <div class="toc"><h1 style="font-size: 140%; margin-bottom:
	0em">Table of Contents</h1><ul class="naked" style="margin-top: 1ex"><li
	  style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">1.  <a href="#intro">Introduction</a></h2></li><li style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">2.  <a href="#issue">The core issue: How should the ARIA attributes be spelled?</a></h2></li><li style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">3.  <a href="#approaches">Possible approaches: land-grab, colon or dash</a></h2></li><li style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">4.  <a href="#sq">The <i>status quo</i>: languages and implementations</a></h2></li><li style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">5.  <a href="#future">The near future</a></h2></li><li style="list-style-type: none"><h4 style="font-size: 100%; margin-top: 0em; margin-bottom: 0em; margin-left: 1em">5.1.  <a href="#html5">HTML5</a></h4></li><li style="list-style-type: none"><h2 style="font-size: 120%; margin-top: 0em; margin-bottom: 0em">6.  <a href="#analysis">Cost-benefit analysis</a></h2></li><li style="list-style-type: none"><h4 style="font-size: 100%; margin-top: 0em; margin-bottom: 0em; margin-left: 1em">6.1.  <a href="#impl">Implementation cost</a></h4></li><li style="list-style-type: none"><h4 style="font-size: 100%; margin-top: 0em; margin-bottom: 0em; margin-left: 1em">6.2.  <a href="#svg">XML extensibility and SVG</a></h4></li><li style="list-style-type: none"><h4 style="font-size: 100%; margin-top: 0em; margin-bottom: 0em; margin-left: 1em">6.3.  <a href="#time">Short- vs. long-range considerations</a></h4></li></ul></div><div id="intro">
   <h2>1.  <a name="intro">Introduction</a></h2>
   <p style="width: 20%; float: right; clear: right"><small><i>This analysis is intended to be neutral with respect to ideology,
history and constituency.  For a useful overview of how we got here, see <a href="http://www.w3.org/2008/03/aria-implementation.html">WAI-ARIA Implementation Concerns (member-only link)</a> by Michael Cooper.</i></small></p>
   <p>The W3C's <a href="http://www.w3.org/WAI/PF/">WAI PF</a> Working Group recently published the first
public working draft of the <a href="http://www.w3.org/TR/wai-aria/">Accessible Rich Internet Applications (WAI-ARIA)</a> specification, which "describes mappings of user interface controls and navigation to accessibility APIs".</p>
   <p>The ARIA spec. defines roles, states and properties to manage the interface
between rich web documents and assistive technologies.  The primary expression
of roles, states and properties in markup languages is via attributes.  Since
ARIA is meant to augment web applications across a range of languages and user
agents, ARIA has to specify how its vocabulary of attributes and values can be
integrated into both existing and future languages.</p>
   <p>In preparing this analysis, I have reviewed the available concrete evidence
bearing on the matter, and have carried out a considerable amount of work to
replicate and, in some cases, correct or extend, testing which has been done in the
past.  The details are available <a href="http://www.w3.org/XML/2008/04/ARIA-Testing/">in a report entitled <i>Some test results concerning ARIA attribute syntax</i></a>.</p>
  </div><div id="issue">
   <h2>2.  <a name="issue">The core issue: How should the ARIA attributes be spelled?</a></h2>
   <p>ARIA is useful only if it is widely supported.  It therefore needs to
integrate cleanly into existing and future languages as easily as possible.  Before looking at possible answers to the spelling question, we need to consider
exactly what supporting ARIA means.</p>
   <p>We can distinguish two levels of support for ARIA on the part of user
agents, which I'll call 'passive' and 'active' support.  By passive support, I
mean that documents with ARIA-conformant markup are not rejected by the agent,
and the markup is available in the same way any other markup is, e.g. via a DOM
API or for matching by CSS selectors.  By 'active' support 
I mean the user agents actually implement their part of ARIA semantics, that is, reflecting changes to ARIA-defined states and properties via
accessibility APIs.</p>
   <p>Although already deployed implementations cannot offer active support, an
optimal answer to the spelling question would maximise passive support from
existing languages, as well as encouraging active support from subsequent implementations.</p>
  </div><div id="approaches">
   <h2>3.  <a name="approaches">Possible approaches: land-grab, colon or dash</a></h2>
   <p>There are in principle three possible approachs to the spelling question:</p>
   <ul class="naked">
    <li style="list-style-type: none"><b>land-grab</b>&nbsp;&nbsp;Just use 'role' and the names of the properties (e.g.
'checked', 'hidden') as attribute names.</li>
    <li style="list-style-type: none"><b>colon</b>&nbsp;&nbsp;Use 'aria:' as a distinguishing prefix, giving e.g. 'aria:role',
'aria:checked' as attribute names.</li>
    <li style="list-style-type: none"><b>dash</b>&nbsp;&nbsp;Use 'aria' plus some other punctuation character, e.g.
dash, as a distinguishing prefix, giving e.g. 'aria-role',
'aria-checked' as attribute names.</li>
   </ul>
   <p>The <b>land-grab</b> approach is pretty clearly unacceptable, because
of clashes with existing vocabularies and the likelihood
of clashes with future ones, and will not be considered further.</p>
   <p>The <a href="http://www.w3.org/TR/2008/WD-wai-aria-20080204/">current
ARIA WD</a> specifies a combination of the <b>colon</b> and
<b>dash</b> approachs, with the <b>colon</b> being specified for use
with XML-based
languages, with the necessary additional requirement that 'aria' is bound to
the ARIA namespace in the usual way, i.e.
<code>xmlns:aria="http://www.w3.org/2005/07/aaa"</code>, and the
<b>dash</b> approach being specified for use with non-XML languages.  We'll
call this the <b>mixed</b> approach hereafter.</p>
   <p>My understanding is that as of the date of this note, the WAI PF working
group have indicated that their intention is that the <i>next</i> draft of
the ARIA specs will move to the <b>dash</b> appropach.</p>
  </div><div id="sq">
   <h2>4.  <a name="sq">The <i>status quo</i>: languages and implementations</a></h2>
   <p>Choosing an approach is made complicated by the landscape of language
and infrastructure standards it has to fit in to, and by the fact that these are
moving targets. We therefor have to distinguish between what is currently
in place, what we have reason to expect in the near future, and what we can
foresee in the longer term.  Furthermore, for existing languages we have
two categories: XML-based languages, with more or less explict provision for
extensibility in general, typically namespace-based, and non-XML languages,
which for the purposes of this analysis we will take to be HTML 4.01 and nothing else.</p>
  <p>As noted above, the best we can expect from deployed user agents is passive
support.  The table below sets out the extent of passive support which is
available for the <b>colon</b> and <b>dash</b> approaches for each
of three host languages, which exemplify the major relevant categories: HTML
4.01 (for the non-XML languages), XHTML (an XML language, but not always treated
as such, so we actually get two columns for it below) and SVG (only an XML language).</p> 
   <table style="border-collapse: collapse; border-top: hidden;
	border-left: hidden; border-right: hidden">
    <thead>
     <tr style="border: solid; border-color: gray">
     <th><a name="table">Passive</a><br/>support</th>
     <th>HTML 4.01</th>
     <th>XHTML<br/>(as if HTML)<sup>0</sup></th>
     <th>XHTML<br/>(as XML)</th>
     <th>SVG</th>
     </tr>
    </thead>
    <tbody>
     <tr style="border: solid; border-color: #ddd">
      <td><b>Allowed<br/>at all</b></td>
      <td>
       <b>colon</b>: Yes, by 'should ignore' advice<br/>
       <b>dash</b>: Yes, by 'should ignore' advice
      </td>
      <td>
       <b>colon</b>: Yes, by 'should ignore' advice<br/>
       <b>dash</b>: Yes, by 'should ignore' advice
      </td>
      <td><b>colon</b>: Yes, by 'must ignore' rule<br/>
       <b>dash</b>:  Yes, by 'must ignore' rule</td>
      <td><b>colon</b>: Yes, by 'must ignore' rule<br/>
       <b>dash</b>: In principle,no<br/>in practice<sup>1</sup>, yes</td>
     </tr>
     <tr style="border: solid; border-color: #ddd">
      <td><b>Available<br/>via DOM</b></td>
      <td><b>colon</b>: Yes, via GetAttribute<br/>
       <b>dash</b>: Yes, via GetAttribute</td>
      <td><b>colon</b>: Yes, via GetAttribute<br/>
       <b>dash</b>: Yes, via GetAttribute</td>
      <td><b>colon</b>: Yes<sup>2</sup>, via GetAttributeNS and GetAttribute<br/>
       <b>dash</b>: Yes<sup>2</sup>, via GetAttribute</td>
      <td><b>colon</b>: Yes<sup>3</sup>, via GetAttributeNS and GetAttribute<br/>
       <b>dash</b>: Yes<sup>3</sup>, via GetAttribute</td>
     </tr>
     <tr style="border: solid; border-color: gray">
      <td><b>Matches<br/>CSS selector</b></td> 
      <td><b>colon</b>: Yes<sup>4</sup>, using <code>[aria\:attr]</code><br/>
       <b>dash</b>: Yes<sup>5</sup></td>
      <td><b>colon</b>: Yes<sup>4</sup>, using <code>[aria\:attr]</code><br/>
       <b>dash</b>: Yes<sup>5</sup></td>
      <td><b>colon</b>: Yes, using <code>[aria|attr]</code><br/>
       <b>dash</b>: Yes<sup>5</sup></td>
      <td><b>colon</b>: No<br/>
       <b>dash</b>: No</td>
     </tr>
    </tbody>
   </table>
   <p>Notes:</p>
   <ul class="naked">
    <li style="list-style-type: none"><b>0</b>&nbsp;&nbsp;This column applies to the IE family, and to other browsers
whenever treating XHTML as HTML</li>
    <li style="list-style-type: none"><b>1</b>&nbsp;&nbsp;Firefox 2.0.0.14, IE7 + Adobe 3.03 SVG plugin</li>
    <li style="list-style-type: none"><b>2</b>&nbsp;&nbsp;All browsers which treat XHTML as XML</li>
    <li style="list-style-type: none"><b>3</b>&nbsp;&nbsp;Firefox 2.0.0.14 (unable to test IE+plugin so far)</li>
    <li style="list-style-type: none"><b>4</b>&nbsp;&nbsp;<a name="fn4">Except IE family</a></li>
    <li style="list-style-type: none"><b>5</b>&nbsp;&nbsp;If attribute selectors supported at all, i.e. not IE5, IE6</li>
   </ul>
   <p>It should be noted that some of the entries above disagree with assertions
made in the past about browser behaviour.  At least some of those assertions
were based on flawed test materials---see <a href="http://www.w3.org/XML/2008/04/ARIA-Testing/#three">the discussion
of experiments 1 and 2</a> in my testing report for details on the information
summarised above.</p>
  </div><div id="future">
   <h2>5.  <a name="future">The near future</a></h2>
   <p>A number of browser implementors have responded positively to the ARIA
initiative and have included experimental active support for ARIA in pre-release
versions of their products.  Most of the test materials and implementation
information I can find suggests that only the <b>dash</b> approach, and only
HTML or XHTML, are currently being implemented.</p>
   <p>With regard to improving passive support, it seems very possible that
IE8 will support attribute selectors of the form <code>[aaa\:checked]</code>,
which would remove the qualification recorded in the table above by footnote <a href="#fn4">4</a>.</p>
   <div id="html5">
    <h4>5.1.  <a name="html5">HTML5</a></h4>
    <p>The situation with respect to HTML5 is complicated.  As it
currently stands, the <a href="http://www.w3.org/TR/html5/">HTML5 draft
specification</a> supports namespaces internally, and all HTML elements are
parsed into the DOM nodes in the HTML namespace, regardless of whether they are
parsed "as HTML" or "as XML".  But when parsing documents "as HTML", no
<i>other</i> namespaces are recognised.  Unless this changes before HTML5
is completed, the HTML/"XHTML (as if HTML)" columns above will apply to
HTML5-conformant user agents in at least some cases.</p>
   </div>
  </div><div id="analysis">
   <h2>6.  <a name="analysis">Cost-benefit analysis</a></h2>
   <p>On the basis of the above survey, there follows below an attempt at a
cost-benefit analysis with respect to the <b>colon</b> and
<b>dash</b> approaches, as well as the <b>mixed</b>
approach as currently specced in the ARIA working draft and a fourth approach, as proposed by me in
<a href="http://lists.w3.org/Archives/Public/www-tag/2008Apr/0229.html">a
message to www-tag</a>, which I'll call the <b>xcolon</b> approach. 
The <b>xcolon</b> approach attempts to address some of the problems
revealed in <a href="#table">the passive support table</a> by defining a 
pair of getter/setter Javascript functions for access to ARIA information in the
DOM, and giving a design pattern for duplicated CSS selectors (one using
<code>[aria\:xxx]</code> and the other <code>[aria|xxx]</code>).</p>
   <table style="border-collapse: collapse; border-top: hidden;
	border-left: hidden; border-right: hidden">
    <thead>
     <tr style="border: solid; border-color: gray">
     <th><a name="costBenefitTable"/></th>
     <th>Benefits</th>
     <th>Costs</th>
     </tr>
    </thead>
    <tbody>
     <tr style="border: solid; border-color: #ddd">
      <td><b>colon</b></td>
      <td>Consistency for page authors; Uniform DOM access (using
Get/SetAttribute); Orthogonal in XML languages; consistent with
namespace-based
extensibility for XML (and for HTML5?<sup>1</sup>)</td>
      <td>Uniform DOM access ignores namespace<sup>2</sup>; no uniform CSS selector; no CSS selector at all
for IE legacy<sup>3</sup>; modest re-implementation cost<sup>4</sup></td>
     </tr>
     <tr style="border: solid; border-color: #ddd">
      <td><b>dash</b></td>
      <td>Consistency for page authors; uniform DOM access; uniform CSS selector</td>
      <td>Inconsistent with XML namespace-based extensibility<sup>5</sup>; new paradigm for
'namespace'<sup>6</sup>; scope creep<sup>7</sup></td>
     </tr>
     <tr style="border: solid; border-color: #ddd">
      <td><b>mixed</b></td>
      <td>Orthogonal in XML languages; consistent with namespace-based
extensibility for XML (and for HTML5?<sup>1</sup>)</td>
      <td>Confusing for authors; no uniform DOM access; no uniform CSS selector; uncertainty wrt XHTML; new paradigm for
'namespace'<sup>6</sup>; scope creep<sup>7</sup></td>
     </tr>
     <tr style="border: solid; border-color: gray">
      <td><b>xcolon</b></td>
      <td>Consistency for page authors; orthogonal for XML languages; consistent with
namespace-based
extensibility for XML (and for HTML5?<sup>1</sup>); uniform DOM access; uniform CSS selector</td>
      <td>Requires indirection through accessor functions for DOM access;
requires duplicate CSS selectors; no uniform DOM representation; no CSS selector at all
for IE legacy<sup>3</sup>; modest re-implementation cost<sup>4</sup></td>
     </tr>
    </tbody>
   </table>
   <ul class="naked">
    <li style="list-style-type: none"><b>1</b>&nbsp;&nbsp;HTML5's provision for extensibility, whether compatible with
XML namespaces or not, is an open area of discussion at the moment.</li>
    <li style="list-style-type: none"><b>2</b>&nbsp;&nbsp;That is, it requires the use of a fixed <code>aria</code> prefix
and may not (i.e. in some browsers) correctly set the <code>namespaceURI</code>
property even when targetting an XML DOM.</li>
    <li style="list-style-type: none"><b>3</b>&nbsp;&nbsp;That is, in the IE family, only (putatively) IE8 and successors
will recognize <code>[aria\:...]</code> selectors</li>
    <li style="list-style-type: none"><b>4</b>&nbsp;&nbsp;See <a href="#impl">discussion of re-implementation cost below</a></li>
    <li style="list-style-type: none"><b>5</b>&nbsp;&nbsp;See <a href="#svg">discussion of XML extensibility below</a></li>
    <li style="list-style-type: none"><b>6</b>&nbsp;&nbsp;That is, adds the concept of a fixed, dash-delimited, prefix as
a way of managing distinct symbol spaces to the existing non-fixed, colon-delimited
prefix for the same purpose.</li>
    <li style="list-style-type: none"><b>7</b>&nbsp;&nbsp;That is, requires all embedding languages to explicitly allow
and manage an inventory of fixed prefixes and, possibly, their vocabularies.</li>
   </ul>
   <div id="impl">
    <h4>6.1.  <a name="impl">Implementation cost</a></h4>
    <p>For wholly commendable reasons, development of the ARIA spec. and pilot
implementation work have proceeded in parallel.  Most if not all existing
implementations support only the <b>dash</b> approach.  What is the likely
cost for those implementations of any decision to adopt any other approach?  My
conclusion, having examined one implementation in some detail, is that the cost is
likely to be very modest.</p>
    <p>Michael Cooper, WAI PF staff contact, captured the reason for this very
well, albeit unintentionally:</p>
    <blockquote><div>"The ARIA roles and properties are conceptually simple enough, but
they are designed to provide a bridge between HTML and desktop accessibility APIs,
a bridge which is exploited by the operating system, user agent, and assistive
technology all working together. There's a complex set of interdependencies there
and the feasibility and details of many of the ARIA features could only be worked
out by testing in deployed systems, and therefore doing early implementation."</div></blockquote>
    <p>The complexity referred to above is fundamentally one of architecture, both
static and dynamic.  Not surprisingly, therefore, syntactic concerns account for a
tiny fraction of the code needed to implement ARIA as it stands.  Furthermore, and
again not surprisingly, as it's what sound software engineering practice requires,
the <i>details</i> of the concrete syntax are isolated, and the vast bulk of
the code I looked at refers to it only indirectly.  The consequence of all this is
that the changes necessary to manage any change away from the <b>dash</b>
approach will be very straightforward.  For more details, see <a href="http://www.w3.org/XML/2008/04/ARIA-Testing/#three">the discussion
of experiment 3</a> in my testing report.</p>
   </div>
   <div id="svg">
    <h4>6.2.  <a name="svg">XML extensibility and SVG</a></h4>
    <p>Many existing XML languages make explicit, generic, provision for
extensibility by including in their formal schemas and/or spec. prose allowance for
any namespace-qualified elements and attributes from namespaces other than those
which make up the language itself.  Tools such as NVDL and, to a lesser extent, W3C
XML Schema and RelaxNG, make it possible to combine the schemas for multiple XML
languages to give a complete characterisation of mixed-language documents.</p>
    <p>One particularly important example of this approach is SVG.  ARIA
integration into SVG is clean and straightforward under the <b>colon</b> or
<b>mixed</b>
approaches, but will require amending the spec. under the <b>dash</b> approach.</p>
   </div>
   <div id="time">
    <h4>6.3.  <a name="time">Short- vs. long-range considerations</a></h4>
    <p>In trying to weigh the tradeoffs which must of necessity be considered when
confronted by the information given above, the matter of timescale is particular
hard to address.  Any assertion about how things will look five, or even two, years
hence can always be countered with a contrary assertion.  None-the-less, the
centrality of the HTML languages for the Web, and the fundamental importance of
accessibility for all of us, suggest that we <i>must</i> take the long-term
impact of this decision seriously, and be prepared to discount some short-term
discomfort in return for long-term stability and simplicity.</p>
   </div>
  </div>
]]>
        
    </content>
</entry>

<entry>
    <title>Proposed Activity for Video on the Web</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/04/proposed_activity_for_video_on.html" />
    <id>tag:www.w3.org,2008:/QA//1.167</id>
    
    <published>2008-04-15T15:29:20Z</published>
    <updated>2008-05-09T01:01:16Z</updated>
    
    <summary type="html">W3C organized a workshop on Video on the Web in December 2007 in order
to share current experiences and examine the technologies (see report) and is now following up with a proposal for a Video on the Web activity.</summary>
    <author>
        <name>Philippe Le Hégaret</name>
        <uri>http://www.w3.org/People/LeHegaret/</uri>
    </author>
    
        <category term="Accessibility" />
    
        <category term="HTML" />
    
        <category term="HTTP" />
    
        <category term="Semantic Web" />
    
        <category term="Technology" />
    
        <category term="Video" />
    
        <category term="W3C・QA News" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>
W3C organized a workshop on Video on the Web in December 2007 in order
to share current experiences and examine the technologies (see <a href='http://www.w3.org/2007/08/video/report.html'>report</a>). Online video content and demand is increasing rapidly, becoming
omnipresent on the Web and the trend will continue for at least a few
years. These rapid changes are posing challenges to the underlying
technologies and standards that support the platform-independent
creation, authoring, encoding/decoding, and description of video. To
ensure the success of video as a "first class citizen" of the Web, the
community needs to build a solid architectural foundation that enables
people to create, navigate, search, and distribute video, and to manage
digital rights.</p>

<p>The general scope of the <a href='http://www.w3.org/2008/01/video-activity.html'>proposed Video on the Web activity</a> is to
provide cohesion in the video related activities of W3C, as well helping
other W3C Groups in their effort to provide video functionalities. In
addition, this activity will focus at implementing the next steps from
the W3C workshop on Video on the Web. The proposal is to create 3 new Working Groups around Video on the Web. Please, have a look at the following documents:
</p>
<ol>
<li><a href='http://www.w3.org/2008/01/video-activity.html'>Activity proposal</a></li>
  <li><a href='http://www.w3.org/2008/01/media-fragments-wg.html'>Media Fragments Working Group Charter</a></li>
<li><a href='http://www.w3.org/2008/01/media-guidelines-wg.html'>Media Best Practices and Guidelines Working Group Charter</a></li>
<li><a href='http://www.w3.org/2008/01/media-annotations-wg.html'>Media Annotations Working Group Charter</a></li>
</ol>

<p>We welcome general feedback, general expressions of interest (or lack of!) and
comments on the discussion list  <a href='mailto:public-video-comments&#x40;&#0119;&#0051;&#0046;&#0111;&#0114;&#0103;'>public-video-comments@w3.org</a>.</p>

<p>If you should have questions or need further information, please feel free to
contact me as well. I will be presenting the activity proposal during the Web Conference next week, on <a href='http://www.w3.org/2008/04/w3c-track.html#thu'>Thursday afternoon</a>.</p>

]]>
        
    </content>
</entry>

<entry>
    <title>Simple things make firm foundations</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2008/01/modularity.html" />
    <id>tag:www.w3.org,2008:/QA//1.139</id>
    
    <published>2008-01-18T15:39:46Z</published>
    <updated>2008-01-18T15:53:34Z</updated>
    
    <summary type="html">You can look at the development of web technology in many ways, but one way is as a major software project. In software projects, the independence of specs, has always been really important, I have felt. A classic example is...</summary>
    <author>
        <name>Tim Berners-Lee</name>
        <uri>http://www.w3.org/People/Berners-Lee/</uri>
    </author>
    
        <category term="HTML" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>You can look at the development of web technology in many ways, but one
way is as a major software project. In software projects, the <a
href="/TR/webarch/#orthogonal-specs">independence of specs</a>, has always been really important, <a
href="/DesignIssues/Principles#Modular">I have felt</a>. A classic example is
the independence of the HTTP and HTML specifications: you can introduce many
forms of new markup language to the web through the MIME Content-Type system,
without changing HTTP at all.</p>

<p>The modularity of HTML itself has been discussed recently, for example by
Ian Hickson, co-Editor of 
<a href="/html/wg/html5/">HTML5</a>:</p>

<blockquote>
  <p>Note that it really isn't that easy. For example, the HTML parsing rules
  are deeply integrated with the handling of &lt;script&gt; elements, due to
  document.write(), and also are deeply integrated with the definition of
  innerHTML. Scripting, in turn, is deeply related to the concept of
  scripting contexts, which depends directly on the definition of the Window
  object and browsing contexts, which, in turn, are deeply linked with
  session history and the History object (which depends on the Location
  object) and with arbitrary browsing context navigation (which is related to
  hyperlinks and image maps) and its related algorithms (namely content
  sniffing and encoding detection, which, to complete the circle, is part of
  the HTML parsing algorithm). - <a
  href="http://lists.w3.org/Archives/Public/public-html/2007JanMar/0096.html"><em>Brainstorming
  test cases, issues and goals, etc.</em>,</a> Ian Hickson</p>
</blockquote>

<p>and in reply by Laurens Holst:</p>

<blockquote>
  <p>I don't know the spec well enough to answer that question, but I'd
  say modularization (if I may call it so) would make it both easier to grasp
  as individual chunks, for both the reviewing process and the implementing
  process. <a
  href="http://lists.w3.org/Archives/Public/public-html/2007JanMar/0100.html"><em>brainstorming:
  test cases, issues, goals, etc.</em></a>. - Laurens Holst</p>
</blockquote>

<p>The &lt;canvas&gt; element introduces a complex 
<a href="/html/wg/html5/#the-2d">2D drawing API</a>
different in nature from the other interfaces, which concentrate on
setting and retrieving values in the markup itself; the <a
href="/html/wg/html5/#sql">client-side database storage</a> section
of the specification is another such interface. While the

&lt;canvas&gt; element has a place in the specification, the drawing
API should be defined in a separate document. Hixie <a
href="/2002/09/wbs/40318/tactics-gapi-canvas/results#xq3">expressed</a>
a similar sentiment (and see the group's <a
href="/html/wg/tracker/products/2">issues about scope</a>):</p>

<blockquote>
  <p>The actual 2D graphics context APIs probably should be split out
  on the long term, like many other parts of the spec. On the short
  term, if anyone actually is willing to edit this as a separate spec,
  there are much higher priority items that need splitting out and
  editing...</p>
</blockquote>

<p>It would also be nice if the &lt;canvas&gt;

element and the SVG elements which embed in HTML did so in just the
same way, in terms of the context (style, etc.) which is passed (or not passed)
across the interface, in terms of the things an implementer has to learn
about, and things which users have to learn about. So that &lt;canvas&gt; and
SVG can be perhaps extended to include say 3D virtual reality later, and
so that all of these can be plugged into other languages just as they are
plugged into HTML.</p>

<p>There are lots of reasons for modularity. The basic one is that one module
can evolve or be replaced without affecting the others. If the interfaces are
clean, and there are no side effects, then a developer can redesign a module
without having to deeply understand the neighboring modules. </p>

<p>It is the independence of the technology which is important. This doesn't,
of course, have to directly align with the boundaries of documents, but
equally obviously it makes sense to have the different technologies in
different documents so that they can be reviewed, edited, and implemented by
different people. </p>

<p>The web architecture should not be seen as a finished product, not as the
final application. We must design for new applications to be built on top of
it. There will be more modules to come, which we cannot imagine now. The
Internet transport layer folks might regard the Web as an application of the
Net, as it is, but always the Web design should be to make a continuing
series of platforms each based on the last. This works well when each layer
provides a simple interface to the next. The IP is simple, and so TCP can be
powerfully built on top of it. The TCP layer has a simple byte stream
interface, and so powerful; protocols like HTTP can be built on top of it.
The HTTP layer provides, basically, a simple mapping of URIs to
representations: data and the metadata you need to interpret it. That
mapping, which is the core of Web architecture, provides a simple interface
on top of which a variety of systems -- hypertext, data, scripting and so on
-- can be built.</p>

<p>So we should always be looking to make a clean system with an interface
ready to be used by a system which hasn't yet been invented. We should expect
there to be many developers to come who will want to use the platform without
looking under the hood. Clean interfaces give you invariants, which
developers use as foundations of the next layer. Messy interfaces introduce
complexity which we may later regret.</p>

<p>Let us try, as we make new technology, or plan a path for old technology,
always to keep things as clean as we can. </p>
]]>
        
    </content>
</entry>

<entry>
    <title>Version Identifiers Reconsidered</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2007/12/version_identifiers_reconsider.html" />
    <id>tag:www.w3.org,2007:/QA//1.127</id>
    
    <published>2007-12-18T18:10:15Z</published>
    <updated>2008-01-09T13:08:37Z</updated>
    
    <summary type="html">The Architecture of the World Wide Web includes a section on extensibility and versioning of languages and data formats.  The TAG is having second thoughts about the suggestion that all data formats SHOULD provide for version identification.  Sometimes it is a good thing to do, but sometimes not. </summary>
    <author>
        <name>Noah Mendelsohn</name>
        
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>
The <a href="http://www.w3.org/TR/webarch/">Architecture of the World Wide Web</a> includes a <a href="http://www.w3.org/TR/webarch/#ext-version">section</a> on extensibility and versioning of languages and data formats.  Quoting from the architecture document:</p>
<div style="border: solid #bebebe 1px; margin: 2em 1em 1em 2em;">
<p><a name="quotedPractice" id="quotedPractice"></a> <span style="margin: 1.5em 0.5em 1em 1em; font-weight: bold; font-style: italic; background: #dfffff; position: relative; padding: 0 0.5em;  top: -1.5em;" >Good practice: <a name="pr-version-info" id="pr-version-info" shape="rect">Version information</a></span></p>
<p style=" margin: 1.5em 0.5em 1em 1em; position: relative; top: -2em;
   padding: 0; margin: 1.5em 0.5em -1em 1em;"><a name="p220" id="p220"></a> A data format specification SHOULD provide for version information.
</p>
</div>
<p>
So, it's always a good idea when you design a language or data format to provide a way for instance documents to include something like a version attribute, probably near the beginning of the document, to indicate what version of the language is being used.  </p>
<p>
Or is it always a good idea?</p>
<p><strong>What does a version identifier convey?</strong></p>
<p>
In fact, do we even agree on what it means to put something like a language version marker on a document?   Let's imagine a simple XML language designed for setting down recipes.  In the first version of the language, the markup looks like this:</p>
<pre><code>
&lt;recipe name="Tuna Salad" <strong>recipeLanguageVersion="1.0"></strong>
  &lt;ingredients>
    &lt;ingredient name="Tuna Fish"  amount="1 can"/>
    &lt;ingredient name="Mayonnaise" amount="3 tablespoons"/>
    &lt;ingredient name="Capers" amount="a few"/>
  &lt;/ingredients>
  &lt;steps>
    &lt;step>Open can&lt;/step>
    &lt;step>Drain liquid from can.  Put fish in bowl.&lt;/step>
    &lt;step>Add mayonnaise.  Stir well.&lt;/step>
    &lt;step>Add capers.  Stir gently.&lt;/step>
  &lt;/steps>
&lt;/recipe>
</code></pre>
<p>
The allowed markup in version 1.0 of the recipe is just what's shown above: an outer &lt;recipe> containing &lt;ingredients> and &lt;steps>, etc.
Eventually it's decided that it would be useful to provide optional pictures for ingredients or steps.  So in version 2 of the language we can do things like:</p>
<pre><code>
&lt;recipe name="Tuna Salad" <strong>recipeLanguageVersion="2.0"</strong>>
  &lt;ingredients>
    &lt;ingredient name="Tuna Fish"  amount="1 can"
                <strong>picture="./CanPicture.jpg"</strong>/>
    &lt;ingredient name="Mayonnaise" amount="3 tablespoons"/>
    &lt;ingredient name="Capers" amount="a few"/>
  &lt;/ingredients>
  &lt;steps>
    &lt;step>Open can&lt;/step>
    &lt;step <strong>picture="./DrainCanPicture.jpg"</strong>>
           Drain liquid from can.  Put fish in bowl.&lt;/step>
    &lt;step>Add mayonnaise.  Stir well.&lt;/step>
    &lt;step>Add capers.  Stir gently.&lt;/step>
  &lt;/steps>
&lt;/recipe>
</code></pre>
<p>
Question: let's imagine that version 2 of the language, the one that supports the optional pictures, has been out for awhile, but I still want to write a simple recipe with no pictures:</p>
<pre><code>
&lt;recipe name="ice cubes" <strong>recipeLanguageVersion="??"</strong>>
  &lt;ingredients>
    &lt;ingredient name="water"  amount="1.5 cups"
  &lt;/ingredients>
  &lt;steps>
    &lt;step>Put water into ice cube tray.&lt;/step>
    &lt;step>Freeze.&lt;/step>
  &lt;/steps>
&lt;/recipe>
</code></pre>
<p>
What's the best value to put in the version attribute?  I know that version 2.0 is the latest version of the recipe language.  In fact, that's the only version of the specification I have next to me, so maybe I should use that?
There's a problem, though.  That <code>version="2.0"</code> marker might not work with software that's written to version 1.0, and in fact, my document would otherwise be a fine 1.0 recipe document.</p>
<p>
So, maybe I should label it 1.0?  Unfortunately, that's a bit hard for me.  I don't want to have to go through the specifications for every version of the recipe language that's ever existed just to find the oldest that works. I really don't want to do that if the language has been revised a lot!  Also, these sample recipes are small, but if I were using software to write very long documents, then that software would either have to keep track of the latest features used, or else search the entire document before writing it to a file, in order to get that version identifier at the front.
</p>
<p>Indeed, just these complexities have proven troublesome for the deployment of
languages like XML 1.1.  XML 1.1 is similar to XML 1.0, but it enables the use of some new Unicode characters (just as recipe language V2 allows for use of new image tags.)
The <a href="http://www.w3.org/TR/xml11/">XML 1.1</a> Recommendation suggests that:</p>
<blockquote>
<p>
XML Programs which generate XML SHOULD generate XML 1.0, unless one of the specific features of XML 1.1 is required.</p>
</blockquote>
<p>
In fact, it has often proven difficult to write software that generates documents labeled as XML 1.1 only when necessary:  it's much easier for XML 1.1-compatible software to label all output as <code>&lt;xml version="1.1"></code>, resulting in documents that are unusable with widely deployed XML 1.0 software.
Perhaps for reasons like this, adoption of XML 1.1 has been slow.</p>
<p>
Returning to the recipe example, maybe the version attribute should take a list of versions, and I should put in both 1.0 and 2.0?  That could be helpful to consuming software, but it still means that I (or my software) must be familiar with all the previous versions of the specification.</p>
<p>
So, we need to ask, is the version identifier used to convey:</p>
<ul>
<li>The earliest version of the language with which the document is compatible (1.0 in the recipe example)?</li>
<li>The version of the specification I used as a guide when writing the document (2.0)?</li>
<li>A list of versions with which the document is compatible?</li>
<li>Something else?</li>
</ul>
<p>
The best answer is probably different depending on the language, how often it's revised, whether revisions tend to maintain backwards compatibility, etc.</p>
<p><strong>Is having some sort of version identifier always a good idea?</strong></p>
<p>
That Good Practice Note quoted above says "provide a version indicator", but we've just shown that we're not always quite clear on what that would do anyway.  Is it still good advice to suggest that surely each language should provide for  <i>something</i> in the instance?  If so, should its use be required or optional?</p>
<p>
As shown above, it's common for the same instance document to be legal in many versions of a language.  
As long as such documents are likely to have the same or sufficiently compatible meanings per the different versions, then it may be better to omit any indication of version in the instance, and leave it to the receiving software to decide whether the document can be processed.  After all, with the second recipe above, the receiver will soon enough discover that it can or can't process picture attributes, and if not, it either will or won't know that they can be safely ignored.  Version attributes can be helpful in giving early warning of incompatibilities, or as a crosscheck for catching errors, but they're usually not essential to correct operation.</p>
<p>
One important exception is in the case where the language is likely to change in incompatible ways.  If the same document means different things in different versions of a language, then it's very important to indicate which version the author had in mind when creating the document.  Putting that version indicator into the document itself is one good way to do it.  So maybe the right advice is:</p>
<div style="border: solid #bebebe 1px; margin: 2em 1em 1em 2em;">
<p><a name="quotedPractice" id="quotedPractice"></a> <span style="margin: 1.5em 0.5em 1em 1em; font-weight: bold; font-style: italic; background: yellow; position: relative; padding: 0 0.5em;  top: -1.5em;" >Proposal for Future Architecture Document: <a name="pr-incompatversion" id="pr-incompatversion" shape="rect">Version information</a></span></p>
<p style=" margin: 1.5em 0.5em 1em 1em; position: relative; top: -2em;
   padding: 0; margin: 1.5em 0.5em -1em 1em;"><a name="p220" id="p220"></a>
If a language or data format will change in incompatible ways, then indicate the language version used for each instance.</p>
</div>


<p><strong>
Are namespaces a good way to identify language versions?</strong></p>
<p>
If version identifiers aren't always a good bet, what about namespaces?  Many modern languages allow the creation of globally unique names, identifiers, tags, etc.  In XML this is done through use of <a href="http://www.w3.org/TR/xml-names11/">Namespaces</a>.   In RDF, it's done by using URIs as identifiers, etc.. </p>
<p>
Sometimes it's appropriate to use new identifiers for each version of a language, and mechanisms like namespaces can make that easier:</p>
<pre><code>
	&lt;r:step xmlns:r="http://example.org/<strong>recipeLanguage1</strong>">
</code></pre>
<p>
vs.</p>
<pre><code>
	&lt;r2:step <strong>picture="./food.jpg"</strong>
                 xmlns:r2="http://example.org/<strong>recipeLanguage2</strong>">
</code></pre>
<p>
In this example, the element with expanded name <code>{http://example.org/recipeLanguage2, step}</code> allows a picture attribute, but <code>{http://example.org/recipeLanguage1, step}</code> does not.</p>
<p>
A full discussions of the pros and cons of using namespaces this way is beyond the scope of this note.  One important advantage of using namespaces is that they can be easily applied not just to the root element for the language as a whole, but to mixtures of compound document markup, in which each sublanguage evolves with its own namespaces.  Also, because namespace names are URIs, you can use the Web itself to get information about them.  </p>
<p>
Namespaces do have drawbacks.  Imagine if there were 50 different namespaces for a language just because 50 separate bugs had been fixed in different errata.  Would you republish all the markup in 50 namespaces?  Would each document have lots of namespaces, with each element named with the last namespace in which it had been revised?  Namespaces can be very useful for designating language versions, but there's no one idiom that's right for all languages.  We note that most widely deployed tag-based languages for the Web (HTML, XML Schema, XSLT) have chosen either to use the same namespace(s) across multiple versions, or in the case of some flavors of HTML, not to use namespaces at all.</p>
<p><strong>Conclusions</strong></p>
<p>
So, the TAG is having second thoughts about the suggestion that all data formats SHOULD provide for version identification.  Sometimes it's a good thing to do, but sometimes not. 
Perhaps the right advice will be what's proposed in the revised Good Practice Note above.
In any case, the TAG has been working for several years on a finding that will explore in detail many issues relating to versioning, and version attributes are likely to be among the topics covered.  In the meantime, we thought we'd take the opportunity to signal that we're not so sure that the advice in the Architecture Document is as good as we thought.  </p>
<p>
By the way, TAG member David Orchard has covered some of the same topics as well as many others relating to versioning in his personal blog.  Links to a few of his postings follow my signature below.  Dave is also the principle author of the TAG's draft finding on versioning.  Working drafts covering <a href="http://www.w3.org/2001/tag/doc/versioning">Terminology</a>, <a href="http://www.w3.org/2001/tag/doc/versioning-strategies">Strategies</a>, and <a href="http://www.w3.org/2001/tag/doc/versioning-xml">Versioning of XML Languages</a> are available for review.  New drafts come out every few months, and we're hoping to have something more or less complete, well, real soon now.</p>
<p>
Noah Mendelsohn
</p>
<p class="smallnote">
Note: unless otherwise indicated, opinions expressed in the TAG's blog are those of the individual authors, and do not necessarily represent consensus of the TAG as a whole.</p>

<p><strong>Links to Dave Orchard's Blog Postings on Versioning</strong></p>
<ul>
<li><a href="http://www.pacificspirit.com/blog/2007/04/19/what_do_version_identifiers_identify">http://www.pacificspirit.com/blog/2007/04/19/what_do_version_identifiers_identify</a></li>
<li><a href="http://www.pacificspirit.com/blog/2007/04/19/forwards_compatibility_with_version_s_requires_version_mapping">http://www.pacificspirit.com/blog/2007/04/19/forwards_compatibility_with_version_s_requires_version_mapping</a></li>
<li><a href="http://www.pacificspirit.com/blog/2007/04/20/how_to_have_multiple_namespaces_per_name">http://www.pacificspirit.com/blog/2007/04/20/how_to_have_multiple_namespaces_per_name</a></li>
<li><a href="http://www.pacificspirit.com/blog/2007/08/09/guide_to_versioning_xml_languages_using_new_xml_schema_11_features_published">http://www.pacificspirit.com/blog/2007/08/09/guide_to_versioning_xml_languages_using_new_xml_schema_11_features_published</a></li>
<li><a href="http://www.pacificspirit.com/blog/2007/09/13/when_can_language_components_be_removed_and_maintain_backwards_or_forwards_compatibility">http://www.pacificspirit.com/blog/2007/09/13/when_can_language_components_be_removed_and_maintain_backwards_or_forwards_compatibility</a></li>
<li><a href="http://www.pacificspirit.com/blog/2007/12/12/validation_by_projection_introduction">http://www.pacificspirit.com/blog/2007/12/12/validation_by_projection_introduction</a></li>
</ul>


]]>
        
    </content>
</entry>

<entry>
    <title>What comes after Web 2.0? TV Raman says: 2^W</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2007/11/what_comes_after_web_20_tv_ram.html" />
    <id>tag:www.w3.org,2007:/QA//1.107</id>
    
    <published>2007-11-15T12:53:11Z</published>
    <updated>2007-11-15T12:54:18Z</updated>
    
    <summary type="html">TPAC talk molly&apos;s item wish for mathml in HTML...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>TPAC talk<br />
molly's item<br />
wish for mathml in HTML<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>A story about namespaces, MIME types, and URIs</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2007/11/a_story_about_namespaces_mime.html" />
    <id>tag:www.w3.org,2007:/QA//1.106</id>
    
    <published>2007-11-13T02:59:42Z</published>
    <updated>2007-12-21T10:29:06Z</updated>
    
    <summary type="html">Noone seems to know where the story begins; Ian Jacobs reminded me about magic namespaces as I enjoyed breakfast on Thursday; Steven Pemberton and Bert Bos had told it to him, perhaps prompted by Ian Hickson&apos;s question in the URI-based...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>Noone seems to know where the story begins; Ian Jacobs reminded me about <cite>magic namespaces</cite> as I enjoyed breakfast on Thursday; Steven Pemberton and Bert Bos had told it to him, perhaps prompted by Ian Hickson's question in the <a href="http://www.w3.org/QA/2007/11/tpac-2007-uri-extensibility.html">URI-based extensibility panel</a> the day before:  <i>how do we make namespaces usable by HTML authors?</i></p><p>On Saturday, I took an <a href="http://www.w3.org/html/wg/tracker/actions/11">action</a> in the <a href="http://www.w3.org/html/wg/nov07#sat_aria">HTML Working Group discussion of ARIA</a> to write it up. Little did I know that by the time I got back to the office, Norm would have written up <i><a href="http://norman.walsh.name/2007/11/12/implNamespaces">Implicit Namespaces</a></i> for me.<br /></p><p> Thanks, Norm!<br /></p>]]>
        
    </content>
</entry>

<entry>
    <title>The impact of Javascript and XMLHttpRequest on web architecture</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2007/10/the_impact_of_javascript_and_x.html" />
    <id>tag:www.w3.org,2007:/QA//1.87</id>
    
    <published>2007-10-18T11:26:47Z</published>
    <updated>2007-10-22T18:54:38Z</updated>
    
    <summary type="html">This issue was raised briefly on the TAG telcon of 11 October 2007, but I think we dismissed it too quickly.The basic WebArch story about URIs, resources and representations makes sense to people because they can see the relationship between...</summary>
    <author>
        <name>Henry S. Thompson</name>
        
    </author>
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>This issue was raised briefly on the <a href="http://www.w3.org/2001/tag/doc/leastPower.html">TAG telcon of 11 October 2007</a>, but I think we dismissed it too quickly.</p><p>The basic WebArch story about URIs, resources and representations makes sense to people because they can see the relationship between information resource ('the Oaxaca weather report') and representation (&lt;html&gt;&lt;title&gt;Today's weather for Oaxaca&lt;/title&gt;. . . ).&nbsp; When many web pages make extensive use of Javascript to compute the html that determines what you see on the screen, this relationship is weakened.&nbsp; It's not just human beings doing 'view source' who lose out---search engines do too.</p><p>Although it's true that some proportion of Javascript-heavy pages are just badly designed, ignoring the <a href="http://www.w3.org/2001/tag/doc/leastPower.html">Least Power finding</a> through ignorance or laziness, it's certainly the case that <i>some</i> such pages, for instance those which make innovative use of XMLHttpRequest to synthesise information 'on the fly', could not be done any other way, and so don't violate the Least Power rule.</p>
<p>My conclusion: as we try to tell a more carefully articulated story about URIs and resources and their relationship, we need to pay more attention to the User Agent and the user experience.  The thing <i>most</i> closely related to the Oacaxa weather report is the words I see on the screen, not the HTML which gets interpreted to produce them.</p>]]>
        
    </content>
</entry>

<entry>
    <title>When to standardize, especially an RDF API</title>
    <link rel="alternate" type="text/html" href="http://www.w3.org/QA/2007/03/orthogonal_specifications_is_good.html" />
    <id>tag:www.w3.org,2007:/QA//1.34</id>
    
    <published>2007-03-02T00:47:09Z</published>
    <updated>2008-12-03T23:48:52Z</updated>
    
    <summary type="html">The HTML 4.01 specification has an IMG element, but there is no normative dependency on the PNG or GIF or JPEG specifications. &quot;What good is an HTML user agent that doesn&apos;t support GIFs?!?&quot; you might ask. And you wouldn&apos;t be...</summary>
    <author>
        <name>Dan Connolly</name>
        <uri>http://www.w3.org/People/Connolly/</uri>
    </author>
    
        <category term="Opinions &amp; Editorial" />
    
        <category term="Semantic Web" />
    
        <category term="Web Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.w3.org/QA/">
        <![CDATA[<p>The HTML 4.01 specification has an <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html#edef-IMG">IMG element</a>, but there is no normative dependency on the PNG or GIF or JPEG specifications. "What good is an HTML user agent that doesn't support GIFs?!?" you might ask. And you wouldn't be alone. From the early days of W3C, there have been calls for a standard "web browser profile" component specification that listed which URI schemes (http, ftp, mailto, ...) and which formats (HTML 3.2, GIF, ...) and so on a standard web browser should support. It always seemed to me that the market would sort that out by itself and any standard, W3C could put in place, would be perennially out of date and irrelevant.
</p>

<p>According to the Web Architecture document, <a href="http://www.w3.org/TR/webarch/#orthogonal-specs">orthogonal specifications are a good thing</a>. In section <cite><a href="http://www.w3.org/TR/webarch/#orthogonal-specs">5.1. Orthogonal Specifications</a></cite>:</p>

<blockquote cite="http://www.w3.org/TR/webarch/#orthogonal-specs">
    <p>When two specifications are orthogonal, one may change one without requiring changes to the other, even if one has dependencies on the other. For example, although the <acronym title="HyperText Transfert Protocol">HTTP</acronym> specification depends on the URI specification, the two may evolve independently. This orthogonality increases the flexibility and robustness of the Web.</p>
</blockquote>

<p>W3C inherited from the <acronym title="Internet Engineering Task Force">IETF</acronym> a bias for specifying interfaces rather than components; i.e. data formats and protocols rather than software modules. I gather that in TV/consumer electronics, there are useful component standards for Web User Agents. But note that an in-car voice browser or a screen reader or good old lynx doesn't support PNG nor GIF, and while their marketplaces are perhaps smaller than desktop or mobile screen-oriented browsers, they're pretty much first-class citizens as far as W3C specifications, especially Web Architecture, are concerned.</p>

<p><acronym title="Application Programming Interface">API</acronym>s are more like interfaces than components, but they tend to be tied to platforms. The IETF has a cultural bias for on-the-wire formats over APIs, and for good reasons, I think. With OMG specs, at least the early CORBA specs, lots of products conformed to the spec (or at least claimed to) without actually interoperating with each other. It wasn't until the arrival of IIOP, <a href="http://acmqueue.com/modules.php?name=Content&amp;pa=showpage&amp;pid=396">an on-the-wire CORBA format</a>, that the rubber hit the road and the interoperability issues got addressed.</p>

<p>Meanwhile, the IETF's aversion to APIs is not without exception: witness <a href="http://en.wikipedia.org/wiki/Generic_Security_Services_Application_Program_Interface">GSSAPI</a>. And the W3C has been doing Javascript APIs in the form of the DOM since the early days of XML. Some argue that the DOM specs are ugly, and I tend to agree. SAX and JDOM and the libxml2 pull API have a more elegant feel. But with DHTML and AJAX, one has to wonder: did the W3C DOM Recommendations do more harm or good? Sometimes a mediocre standard is better than no standard. It's clear to me that HTML standardization does more good than harm, but I don't pretend that the HTML design is a thing of beauty.</p>

<p>W3C also started out with a bias against standardizing programming languages. The principle of least power is a part of the lore that the TAG has recently adopted in a <a href="http://www.w3.org/2001/tag/doc/leastPower">finding</a>. For those reasons, when the Javascript designers were looking for a standardization forum in 1996 or so, I let it go to ECMA rather than arguing that it should be done at W3C. The fact that XSLT is turing-complete went under the radar a little bit at first; the WG was able to negotiate requirements by noting that its intended scope was formatting XML documents, not transformations in general. And I heard many times that people who don't see themselves writing Java programs are happy to develop XSLT transformations. But I had very strong misgivings about crossing that line. By the time I was reviewing XQuery/XPath 2.0 functions and operators, I disregarded any claims about narrow scope and looked at it as the standard library for the new computing platform that it is.</p>


<p>And now with the Rich Client Activity and the <a href="http://www.w3.org/2006/webapi/">Web API WG</a>, we're fully engaged in standardization of Javascript APIs with no pretense about language independence. It remains to be seen whether we're actually going to tackle enough of the security policy issues to standardize a real platform or whether we need to just leave that to the market for a while. But enough of the right people seem to be involved in the work on XMLHTTPRequest to make me think we're doing more good than harm there. I haven't seen enough test cases for my tastes yet, but I gather they're on the way.</p>

<p>I don't do much of Javascript hacking myself, but I gather it's an unholy mess of incompatibilities. "Where was W3C when XMLHTTPRequest was being designed in the first place?" you might ask. Maybe we were asleep at the wheel and we could and should have prevented the mess. But maybe we were in "mostly harmless" or "first do no harm" mode, letting the market establish what's really needed. I was dead set on tackling multi-namespace integration in the first version of XML Schema, but in hindsight it's pretty clear to me that we should have gone a little slower, i.e. started with a smaller scope.</p>

<p>The question of when and whether to <a href="http://esw.w3.org/topic/WebDataInterfaceDesign">standardize an RDF API</a> has been hanging in the air for a decade or so. My personal experience with python APIs for RDF suggests that, for example, there's a core of cwm and rdflib and redland that is the same except for a few coin-toss issues. And there are several mature Java APIs and the tabulator has an RDF store in Javascript. Meanwhile, SPARQL is maturing; maybe, like SQL, the string format of queries (and other operations) is the main thing we need to standardize. A survey
on <cite><a href="http://www.w3.org/2002/09/wbs/1/semweb-js-api/">Standardizing a Semantic Web API for Javascript</a> is open. Please let us know what you think.</p>


<p>There are precious few "W3C should never do XYZ" rules that I think are worth setting in stone. While we will naturally attract work that is like what we have done before, any place we can get a critical mass of the marketplace to get together and do the hard work of testing, internationalization, accessibility in a reasonably timely, fair and accountable way is a place where W3C should be able to do more good than harm.</p>]]>
        
    </content>
</entry>

</feed> 

