- From: Maciej Stachowiak <mjs@apple.com>
- Date: Tue, 20 May 2008 16:26:30 -0700
- To: Williams@domain.not.set.by.sender, Stuart (HP Labs, Bristol) <skw@hp.com>
- Cc: "public-html@w3.org WG" <public-html@w3.org>, "public-xhtml2@w3.org" <public-xhtml2@w3.org>, "wai-xtech@w3.org" <wai-xtech@w3.org>, "www-tag@w3.org" <www-tag@w3.org>
- Message-Id: <1A074FDE-4BBC-4C4D-9166-16C4F8321D58@apple.com>
> 3) The TAG's working hypothesis is that "aria:" is both technically > feasible and strategically preferable, on the grounds that the long- > term benefits of a consistent approach to extensibility across all > the Web languages outweighs the short-term costs of making the > change at this time: > (to the WAI PF WG): Would you consider specifying 'aria:' in the > next WD of ARIA; > (to the implementers): Could you see your way to changing your > implementation/spec. to comply? WebKit (the browser engine used in Safari and other browsers) now has a partial implementation of ARIA on trunk. Prefixing ARIA attributes with aria: instead of aria- creates some difficulties. 1) It would require changing the core architecture of the DOM to match on localname+prefix instead of localname+namespaceURI in this case. This core work would be risky, and may hurt performance. To expand on this: WebKit's core DOM has a type called QualifiedName which contains a localname, a prefix, and a namespaceURI. This class is designed to carry a prefix but match exclusively on the prefix and namespaceURI for equality comparisons and hashing. It is used throughout the engine everywhere that names appear. It would be challenging to support an exception to sometimes match differently. I would also be worried about security risk from time-of-check / time-of-use bugs if we had two different ways of matching qnames. 2) If we switch to matching ARIA attributes on localName+prefix, and content depends on this, it would be hard to switch to real namespace processing later. 3) Behavior between HTML and XML (including XHTML) for DOM method calls on such attributes would become inconsistent. I would also point out that changing to an "aria:" prefix with matching based on prefix also violates a premise of ARIA: that it should be deployable without architectural changes to core web technology. It is designed as an add-on technology, where the only needed changes are in assistive technologies and the part of UAs that binds to them. In addition, I question the conclusions of the linked study: 1) As shown by Henri Sivonen, DOM access is not uniform between HTML and XML languages for a colon-prefixed attribute. 2) The reimplementation cost of using a colon but without namespace processing is not "modest". 3) The aria- prefix is used only for ARIA, as far as I know, no one intends to apply this approach to other vocabulary extensions. Thus, I do not think "scope creep" is likely. Furthermore, using a : prefix without namespace processing seems to create the same or greater risk of scope creep, inconsistency with XML namespace-based extensibility, and a new paradigm for 'namespace'. Worse yet, we will have a notion of namespace that is spelled the same as Namespaces in XML but has different semantics. And finally, there is a premise in this discussion that using a prefix with a colon, but without namespace processing, makes it easier to transition to namespace processing in the future. If we treat "aria:" as magical prefix and ignore namespaces, then if content depends on this we will likely not be able to ever change this. Thus, I think using "aria:" without namespace processing makes it harder to introduce "aria:" *with* namespace processing in the future, as compared to "aria-". If anyone wishes to argue otherwise, I would like to see a description of how this transition could occur, not just an assumption that it will. Past experience with this sort of thing does not leave me optimistic. For example, allowing XHTML to be sent as text/html but parsed as HTML has made it effectively impossible to ever process such documents as XML. Regards, Maciej
Received on Tuesday, 20 May 2008 23:27:29 UTC