Meeting minutes
MA: let’s get started
we have a presentation that we all worked on
we got input van alice, sarah, noam, and Jeffrey
<jyasskin> s/??/Lea, Noam/
some important information, borrowing from florian
you’ve all agreed to the CoC
some ground rules
no qq+
we want problems
not solutions
we are going to listen to the problems
we are going to collect them
not judge them
all insights are valid
goals:
1. find concensus regarding the painpoints of IDRefs
2. ??
3. ??
<bkardell> (see slides)
<masonf> is there a link to the slides?
non-goals: (see slides)
Slideset: https://
<masonf> thank you!
take up next item
take up item 7
repeated content requires rewriting IDs
we have a lot of use cases around SVG
<lea> For anyone who wants to dig in, here are the actual author quotes: https://
also combining content from multiple sources
more general themes from developers
no platform support for generating/managing uinique ids
not ergonomic to associate labels with inputs using ids because authors often just don't bother creating accessibility issues
it’s unergonomic usig IDs
in general what we’re concerned about
on the DX side
finding the pain points
to do that we need to find out what they are
MA: ??
there’s also a runtime permance hit potentially
those are some general things
take up next item
take up item 8
useID() is a hook function provided by component frameworks Vue and React, generates a unique id on demand
* shows example of how to use*
you can also do something similar with prefixing
basically have an id for a form, and then prefix all descendants with the form id
<Jamie> s/React, generates a unique id on demand/
we also have scoped ID rewriting
similar to useID
we also have selectors
you can use selectors to express relationships
it can be useful for things relatively nearer in the DOM
like labels and inputs
*shows htmx example with hx-target*
some questions…
these are just suggestions
- what are the pain points?
- is the problem generation or. communication across boundaries?
- what appreoaches have been used in frameworks or tooling
- What are the (UA, AT) development costs?
- could devtools or offline tooling be improved to help the problem?
- What are the performance costs?
- what are performance costs
- how would any particular change benefit users
- What other constraitns would you want on the potential solution space?
- some research notes
(these are in the slides too)
broad themes from developers were summarised before
but there’s more in the appendix of this slide deck
reminder: our goal is to come to concensus on the problem space
that might require research
we’re here to listen
there’s a WICG repo for this
<Zakim> zcorpan, you wanted to ask which ATs don't label association through nesting
zcorpan: you showed an input and label in the examples
i know there are other elements that use id and association
the main problem with nested input and label that it’s not supported in all AT
my question is in, which AT is this broken?
if this is fixed, will that take away the problem?
MA: input + label is a big problem for sure
but there are many others that need work
even if the wrapping worked
that’s not how ARIA stuff works
<alice> https://
AB: it’s a long standing problem with Voice Control
also for Dragon Naturally Speaking
James, do you know why Voice Control doesn’t work with label nesting?
JC: it’s a bug
AB: it’s a long standing issue
first heard this in 2011 or so
they should absolutely be fixed
whetehr we should hold our breath i don’t know
a lot of these tools are not frequently updated
zcorpan: To anne's previous point, if the problem is that there's a bug in implementations, introducing a new thing that needs to be implemented may not be the best way to solve it, instead push for the bug to be fixed.
doesn’t mean we shouldn’t do anything else
<Zakim> fantasai, you wanted to add prior art from CSS
fantasai: css has started to have features that need to link two elements together
like scroll animations, tying scrolling of one element to animation of another element
another is anchor positioning
so css has properties that name a box
for the purpose of anchor position or animations
it’s similar to the problems with IDs
we knew authors would repeat a pattern
like comments in a form
we have for each of the places where we have naming
we have a scoping property, which takes values none | all | list of IDs
it traps those ids
you can’t go higher than these
that’s an existing prior art that’s probabbly relavant here
lea: wanted to reply to simon
with problems relevant to ??
we have a lot of upcoming features that use id references
the problems would not go away
<Zakim> oliverdunk, you wanted to ask about if we are assuming the developer is cooperating
OD: it seems we’re mostly talking about making it easier for devs to make these associations?
if a dev has a heading
and wants to make a link to the heading
it would be useful if there was a browser way to do that
MA: can you clarify stable reference?
OD: you can’t have ??
noamr: i asked developers about this
and they said i would never use this because it uses idrefs
they’re afraid of importing things
there’s a group of people that use IDrefs without knowning
??
there’s a sound in the room that if it breaks AT we can’t touch it
i don’t understand how the relationships is between browser and AT
is that constraint here to make it easier to appraoch a solution?
MA: i think it depends what the problems are
but it migth be a reasonable questions
you’ve probably experienced pain for using IDREFs
it’s reasonable to assume that bugs in AT will be fixed
<Zakim> Jamie, you wanted to flag that any solution to this problem needs to take mutations into account and the performance impact of managing those
JT: in terms of contraints
any solution to the problem will not be can i get the element
but more also if someone mutates the tree after that
what’s the performance hit
wanted to raise that as a constraint
AF: it does feel weird to come with problems
one problem that you…
was also solving was the issue of people generating IDs with math.random
but than the server side generated ID wouldn’t be the same as the client side id
second problem is in my case right now
<Jamie> s/you.../useID/
parts of our webpage allows 3rd party developers to embed code
but we’re scared of them adding a button/popup outside of the sandbox we’ve given them
so we need to??
AK: You already have to sanitize the IDs to prevent various security issues, no?
AF: Yes, we run it in a safe environment, sanitize the output, etc, but there are still problems around IDREFs that could be improved
there’s a lot we tried to do there
there are concerns on how to make sure their IDs don’t conflict with ours
*further discussion*
one more problem…
to noamr’s point earlier
we have a lot of issues in our react codebase
devs think of their components as scoped
we frequently found, that because rendered code isn’t scoped, IDs conflict
MA: thank you!
what i’m hearing is a communication use case we hadn’t heard yet
and something else around scoping
but harder than we were thinking of
<jyasskin> I also hear that we're not going to notice these collisions with HTML Archive data, since they're generated client-side
SP: wanted to respond to the linking in a heading
and the way browsers do this is with text fragments
MA: that’s some prior art we didn’t mention
SP: we could use it for element association
MA: it’s good to know about the prior art
SH: another pain, or annoyance
we make component libraries
so reusable things
lots of places where an author will need to reference a specific component
say you have an input and a button, but you want to add an error state
<frehner> +1 to Sarah's problem
you need a consumer of the sandbox component to reference into it
when we generate a generated ID you need to pass it around
if we could have static strings
it seems very solveable
<Zakim> jcraig, you wanted to ask noam for clarification wrt resolving between the browser and AT (and bypassing the normal platform API as the in-betweener?)
and in that case ??
JC: clarifying question to noamr
negotiating a reference between teh browser and AT
i misunderstood what you meant
noamr: was asking the questions that ??
where are the isuses in the architecture?
is it between the AT and the OS?
between the AT and browser?
felt like i didn’t understand
JC: i think i can try and clarify
on apple platforms we try to have the AT talk to the platform API directly
and be as browser unaware as possible
then the browser engine can vend to the accessiblity API directly
i guess to your questions, where are the bugs
all of the above
MA: with respect to that one, i don’t know if this is current, but the scope of some of the AT vendors is to ??
sometimes it’s just a bug
AT = assistive technology
<Zakim> tantek, you wanted to note the use-case of table td element "headers" attribute IDREF *list* to IDs of th elements and to also note https://
TC: to add to the IDREF problems
i’ve had some challenges with the IDs list
in the 'headers' attribute of the td element where it's a list of IDREFs that reference IDs of th elements
that’s a one to many IDREFs to ID relationship
i don’t know how ATs handle that if at all
MA: quite well!
JC: that’s been around for about 30 years…
<Jamie> s/int he??/in the headers attribute of the td element/
jyasskin: i think we ahev this impresion that a lot of bugs take a long time to fix
we have ?? where it’s all in the browser
if we try to add something to the aria references
is that something we can just do
or does it need AT vendors?
JT: it depends
<Zakim> Jamie, you wanted to flag that while most AT uses browser accessibility engine, some do not
*everyones favourite answer*
dare i say most AT use the browser accessibility engine
there are some AT that do not do this
i guess it doesn’t matter what we do in the browser
those AT will not support it
<Zakim> oliverdunk, you wanted to discuss possible link to extensions
OD: there’s an interestin case in extensions
if you right-click on an element
and there’s an extension context
you can pass the id of the clicked element
that API is supported in Gecko
not supported in Chrome
MA: clarification question: Do you mean that because the page is in a different process to the context menu UI, you need some way to uniquely identify the element?
OD: we can generate our own ID for that
but if there was some standard to that we would use it
<masonf> node_id
<oliverdunk> jyasskin: I don't think they help for the second case but happy to chat offline!
MA: for the large part we hear echos of the classic problems
we also heard some new things
one of the things we haven’t really talked about is user research
how do we do the research
sarah might be able to talk about that
SH: the research that i’ve done, there’s a lot of duplicate ID
AIUI, IDs that were duplicated weren't referred to from attributes which take IDs
i can definitely refine the research
MA: we’re seeking developers experience/feedback on stuff
frehner: some of the work we’ve done
one thing that i felt we could comfortably do was use simple IDs in shadow DOM
SP: wanted to ask about the research
you said you looked at websites
<bkardell> zcorpan: ^
i use httparchive(??) and there are millions of sites
depending on how many you want to look at
SH: i was trying to look at what are the user difficulties
one of the original critiques was that ??
i was trying to see what the user impact and what is, at the level, ??
SH: one of the questions i wanted to get a broader dev view on
if we did a broader survey
i would love to take stuff from this meeting
all of the questions we discussed at the start
and wonder if other people think that’s a good approach
i would love to get to the why
what is hard about the context
kizu: wanted to mention the case of the existing ??
IDs that don’t exist
when devs update code
but because it’s inviisble to them
they forget to update IDs
<sarah> smhigley/
should devtools error on missing IDs or duplicate IDs?
there are many possibilities i think
this could link into any solution we find
<bkardell> zcorpan: yeah, but it's not problematic on any we can find so far really
<zcorpan> or ~35%
jyasskin: There was a comment earlier that React components assume they are contained, but end up using ids outside. But most of this is generated dynamically. Would the HTTP archive capture the live site or only the initial static page?
i wanted to ask if the queries are going to catch that
it has to be live
in the browser checking for stuff
rather than offlinme
SH: for what it’s worth, i waited for 5 seconds or so
so i did some scraping while stuff was rendered
MA: thanks all
AB: i think this was interesting
if people want to file bugs on the WICG repo
i’m interested to hear more scenarios
more information about those is helpful
it’s interesting to hear general problems
but specific case are _more_ interesting
so please file those
MA: thanks again