-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Requesting changes to new implementation-blocked merging process #2055
Comments
Instead of waiting to merge, perhaps the ARIA and AccName changes could merge with flags such as "waiting on implementations" and "waiting on tests"... Then we could use the spec change to write the tests, and use the tests to drive the implementations. Meanwhile, the editor's draft can point directly to the WPT tests and implementation bugs... When we get ready to publish, if those features haven't landed, they get pulled from the CR branch. |
I recall @aleventhal may have raised a similar point of confusion at TPAC 2023 in Seville. |
Well articulated problem thanks @cookiecrook :) I'm pretty sure we are moving the ARIA spec to evergreen, before we do that, we definitely need to have a clear process in place. My personal goal is that anyone, an implementer or web author, should be able to read the editor's spec and know what is implemented or not implemented. The publications/snapshots are quickly to far behind the times. When suggesting the original procedural change, I was influence by my experience in the javascript standard world, where normative changes do not land in the spec until tests and multiple implementations land. The reason for this is that the implementations often end up influencing the spec language itsself, so until it has been proven to be "implementable" and proven that the engines will do the work, the change doesn't land in the spec. But javascript is a lot more complicated that ARIA, so maybe the need for feedback from implementation experience isn't necessary. Especially since we seek implementation sign off in the spec in the committee meetings or on PRs. In my opinion there are a couple options:
To me, honestly, the second option seems more complicated, because changes are often spread out over one or more specs, so I'm not sure where the message "this is not yet implemented" should be. Also, not all things are testable, so looking at tests is not quite enough at this point to know if something is implemented. |
I'm not sure how either could solve the current problem. For example, I assume either of your options would end up as:
‡ Many times browser engineers making the changes are not aware of WG internal process like this, so I think this process might delay or block implementation (due to tedium/confusion) potentially resulting in the individual engineer shifting their time priority to another bug or feature. This was the problem @aleventhal mentioned at TPAC 2023 in Sevilla. In short, I think this spec process violates the HTML Design Principles, Priority of Consituencies:
Either of the process options would put greater cost on implementors than on the authors of the spec, so I'd strongly recommend a new option 3. Land spec changes before any downstream dependency
|
Briefly, on the "Priority of Consituencies" point above: ultimately, process changes should serve users and web authors -- our process should help us evolve the web towards better accessibility and help us make a spec that is understandable to web authors. Both implementers and editors/authors of the spec have limited time, and the limited time of both groups can be a blocker for the evolution of accessibility on the web. I don't think the needs of the two groups are necessarily at odds, and I think we can create a process that helps us achieve our goals and is easy for both groups to follow. Now onto "the 2 options", I really wrote only sketches of options originally, and @cookiecrook I think your process suggestion is a better and more thought out expansion of what I was aiming for in my original option #2, so when I refer to option #2, I mean yours. A more sketch out option 1In the editors call today, it was brought up that option 1 is not only close to what the javascript standard follows, but also close to what WHATWG follows. Here is WHATWG's working mode which describes the process. See the process's requirements for a change to the spec:
Here is an example of a PR with implementation bugs open, and here is an example of a PR that hasn't landed but WPT tests have landed. Notice the requirement in WHATWG specifically for additions to the spec:
For process option 1, I would suggested a slightly stricter set of requirements, because the goal of option 1 is to have an editors draft that only contains usable ARIA features. But, in response to @cookiecrook's and @aleventhal's points of confusion about when something is "implementable" from an implementer's perspective, it seems like webkit and chrome can implement things from a PR :) Maybe it would help if we make it VERY CLEAR when something is ready for implementation, even to someone who is entirely new to working with the ARIA spec -- an "has consensus from working group" and "ready for implementation" label (we have a "waiting for implementation" but we could be more clear and more strict)? Or event at the top of PR? Or we always point to PR preview in the bugs we open? With all that in mind, and @cookiecrook's problems with option 1 take into account, here is an attempt at a more filled out option 1.
notes:
option 2The only concern we have from the editors meeting is how and where to make clear that a feature or change is not yet implemented, during this intermediate point, when the change involves multiple parts of the specification -- and whether this will make the spec more complicated to read. I'd have to take a look at some normative PRs to get and idea of how this could be done, but if you already have suggestions, like from the |
I like option 1 because a PR clearly shows what has changed and thus what is not "ready for authors". If the editor's draft is sprinkled with notes about what is not ready for authors, that could make the spec very difficult to read. For example, imagine we are working on change C1 to the grid role and change C2 to the tab role. Now imagine that C1 and C2 both need to change something in the prose or attribute table of aria-selected . How would we add information to the aria-selected section that can clearly communicate the state of C1 and C2? That sounds hard to do, and it could create a lot of confusion for authors and implementers alike. Option 1 avoids all possibility for such confusion because C1 and C2 are in independent PRs. |
Don't forget to include APG in the downstream dependencies. Related to this, we'll be discussing how to integrate experimental content into the APG tomorrow. See Add styles and index support for experimental content · Issue #2836 · w3c/aria-practices. |
good point @mcking65 ! I added APG to the option 1 process description. |
Discussed in last week ARIA working group meeting: https://www.w3.org/2023/10/26-aria-minutes#t05 For those interested, please read the suggestion in James' comment here and my comment here - we will be discussing these options in the deep dive this week. |
APG is downstream but not a dependency like the other issues. Still, it’s good to have it in the list as a reminder to file the trackers within the main process. |
Discussed in the Oct 2 ARIA WG meeting... ARIA Editors are discussing moving the source of the main specs (ARIA, Core-AAM, AccName, and maybe HTML-AAM) back into the ARIA repo, which wouldn't solve everything, but would greatly reduce the complexities of implementing from cross-referencial PRs. If they take this path forward, I think the separate issue trackers would remain, but PRs would all be against the ARIA repo. |
@spectranaut note the PR Previews say:
…so that should also be changed if the new expectation is to implement from the PR. |
We had an editors meeting to discuss the "mono repo" idea, here are the minutes: https://www.w3.org/2023/11/27-aria-editors-minutes.html#t02 @cookiecrook in particular, we want to bring up a concern we have: If we have a "mono repo", the main benefit is that we have a single PR with all relevant and related specification changes. This will make it easier to keep all the specs in sync for a single feature, and will probably make it easier to author and review changes. However, we are not sure how much easier it will be for implementers regarding one particular concern you raised: the links between specs in the "spec previews" of a "mono repo" will still be wrong. Like you pointed out is the case for the "spec previews" now, if you have a PR that has a change in ARIA and a corresponding change in AccName, the PR Previews of both changes point back to the editors spec, which does not have the correct change. The same thing would happen in a mono repo, because the respec generates these cross-spec links, not "pre-preview". This is to say, we don't have a way to build these links temporarily point to the PR preview build specs. In pre-preview, the links that "work" are all relative links. So, we'd like to know whether or not the "mono repo" still going to move us towards solving your concerns! If not let's continue the discussion -- because the work to go towards a mono repo is kind of huge and we only want to do it if it solves big enough problems. Although personally, I think it still might benefit us to have a mono repo. |
Also I tried updating the process document: #2088 |
Even if the cross-spec links don't work, there's still utility in having related cross-spec changes go into a single PR. |
@spectranaut wrote:
I agree. |
I added the Agenda label b/c I don't know how to make progress on PR #1860 with the new process expectation, which seems unintentionally circular.
nameFrom: heading
path instead.nameFrom: heading
steps to computation after spec addition ARIA PR #1860 is reviewed. accname#182I think the process now is effectively requiring that implementations write disparate, non-WPT implementation-specific automation tests, before ARIA merges its spec changes, which effectively blocks the WPT tests that would aide those implementations.
I appreciate that we've added processes, but I'm not sure what step is expected to happen next, the 4-year-old issue remains, and there seem to be circular dependencies that are preventing forward movement.
The text was updated successfully, but these errors were encountered: