- From: Ian Hickson <ian@hixie.ch>
- Date: Wed, 5 Aug 2009 22:28:52 +0000 (UTC)
- To: Martin McEvoy <martin@weborganics.co.uk>
- Cc: RDFa Developers <public-rdf-in-xhtml-tf@w3.org>
On Wed, 5 Aug 2009, Martin McEvoy wrote: > > > > (Of course, I personally would strongly argue against any prefix > > mechanism. But that's another story.) > > I have never understood your stance on prefixes, to me and many others > they are a "feature" of the future web as well as the present, even > html5 uses prefixes i.e: data-* so why you think they are OK in some > cases and not in others seems a little inconsistent to me but that my > own personal view. My stance is against mechanisms that bind arbitrary strings to other arbitrary strings, which can then be used in conjunction with a third set of arbitrary strings to form a identifier that is never explicitly stated in the source. data-* isn't such a mechanism, since "data-" isn't explicitly bound to anything, and doesn't mean anything but "data-". I have a problem with mechanisms that separate parts of an identifier for a variety of reasons. Copy-and-paste of the source becomes very brittle when two separate parts of a document are needed to make sense of the content. Copy-and-paste is how the Web evolved, so I think it is important to keep it functional and easy. Prefixes are notoriously hard for authors to understand. As far back as 2004, Micah wrote "As the author of an O'Reilly book on XForms, I can report that 90% of the technical questions from readers involve confusion related to namespaces". http://www.w3.org/2004/04/webapps-cdf-ws/papers/verity.html Parand Darugar has said similar things: "Experience shows XML namespaces can be a common cause of confusion and a major complicating factor in XML adoption." http://www.ibm.com/developerworks/library/x-abolns.html Fundamentally, prefixes are an indirection model. Indirection models are very, very hard for people to understand. Maciej has also said things to this effect: "Namespaces are an example of the Fundamental Software Engineering Error, which is that something too terrible to actually use can be fixed by adding a level of indirection. Sometimes that is true but software engineers try to do it even when it clearly is not." http://krijnhoetmer.nl/irc-logs/whatwg/20080801#l-160 Questions about namespaces come up again and again, over many years: http://lists.xml.org/archives/xml-dev/200502/msg00306.html http://lists.xml.org/archives/xml-dev/200808/msg00030.html Prefixes are notoriously hard for implementors to get right: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6475032 http://dev.ctor.org/soap4r/ticket/179 http://sourceforge.net/tracker/?func=detail&atid=454391&aid=924041&group_id=48863 http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2009May/0064.html http://lists.w3.org/Archives/Public/public-rdfa/2009Mar/0068.html http://lists.w3.org/Archives/Public/public-rdfa/2009Mar/0060.html http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2009Mar/0100.html http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2009-May/019717.html http://www.jenitennison.com/blog/node/104#comment-4957 (This covers bugs by such vendors as Sun, Google, Yahoo!, MySpace -- and these aren't just bugs that don't affect end-users, like forgetting to quote attributes in HTML.) Prefixes in dynamically changing content are even worse because they require than an observing software agent not only track the value that they are concerned about, but also all possible ways for the value's prefixes to change meaning. So for instance, here: <test prefixes="a=http://example.com/"> <foo> <bar> <baz content="a:b"/> </bar> </foo> </test> ...if a software agent wants to see when <baz>'s content="" attribute changes to include the value http://example.net/b, he has to not only watch the content="" attribute, but also the prefixes="" attribute of all ancestor elements up the tree, just in case they redefine the prefix "a" to mean "http://example.net/". Anyway, all this is why I generally think that prefix mechanisms are an anti-pattern in language design. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Wednesday, 5 August 2009 22:29:29 UTC