Intro

Microsoft has put forth an excellent proposal for semantic annotations in ARIA. The Microsoft proposal supports code editors as a use case, and supports the following types of annotations: comment, footnote, endnote, spelling error, code error, warning, breakpoint, reference and free-form (localized annotation type).

Another proposal is to leverage the W3C’s Web Annotation Data Model.  However, this seems to contain a lot more structure than is needed for the currently described use cases for in-page annotations, and does not fit in well with ARIA. It brings with it a lot of structure, JSON parsing and external annotation links. As there seem to be supporters of using this spec in the ARIA WG, a discussion will be necessary.

Microsoft Proposal Summary

Microsoft proposed 3 new ARIA attributes (quoted from MS proposal):

Feedback on Current Proposal

Overall the proposal is solid and doable. We may choose to use a proposal that differs very little from this original.

Here is some specific feedback.

The proposal also lists a couple of use cases which are already possible with existing ARIA markup. Specifically, spelling and grammar errors are supported by adding aria-invalid=”spelling” or aria-invalid=”grammar” on the range of text.

Basis for Easy ARIA Property Implementation

This is food for thought. It is intended to test the waters for supporting the annotation use cases put forth by Microsoft with minimal code added, and the case of Firefox with IA2/ATK, no new code added.

One issue with new ARIA markup is always implementation. It can take many years to get new markup supported in accessibility APIs, browsers and assistive technologies.

Adding a new relation is the worst part -- it requires a binary update to APIs.

However, two types of markup are very easy to implement:

Note that new ARIA relations are not as easy to support as these others. It requires changes to binary APIs, and additional standardization efforts outside of W3C.

Overall, it makes sense to look at leverage existing markup and code, unless it becomes hacky or is against the original intent of the markup.

Specific Recommendations

  1. The relationship of content to visible annotations is set via aria-details. If the annotation is hidden, then aria-describedby should be used.
  2. Annotation type goes on target annotation via the role attribute, and new roles are added to support annotation types needed, such as role=“comment-section”. It is ok to create new role names as long as there is a fallback, e.g. role=”comment-section complementary” and role=”comment group”. We may decide to use a prefix to indicate they are experimental, e.g. “x-comment”, “goog-comment” or “ms-comment”. If the author needs a new type of annotation that hasn’t been spec’d, they can use a localized aria-roledescription.
  3. Simple spelling and grammar errors can utilize existing the ARIA recommendation of aria-invalid=”spelling” | “grammar”

Benefits of Alternate Proposal

[a]100% agreed. ARIA should be DRY and browsers should compute the reverse relationships