jupyterlab / frontends-team-compass

A repository for team interaction, syncing, and handling meeting notes across the JupyterLab ecosystem.
https://jupyterlab-team-compass.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
59 stars 30 forks source link

Accessibility Meetings Minutes #98

Closed isabela-pf closed 3 years ago

isabela-pf commented 4 years ago

We've decided to meet and discuss plans for a coordinated effort to make JupyterLab more accessible. This issue records meeting minutes for easy and public tracking.

These are open meetings, but since we don't have a schedule yet there is not public link to join. If you want to get involved with these meetings, let me know!

Previous meetings

choldgraf commented 4 years ago

Just a note that you may wanna ping the folks over in https://github.com/jupyter/accessibility/issues/11 as they are all very keen on improving a11y across the Jupyter ecosystem

isabela-pf commented 4 years ago

09.30.20 Meeting Minutes

Attendees

Martha (@marthacryan ) Max (@telamonian ) Karla (@karlaspuldaro) Alek tony (@tonyfast) Alex (@ajbozarth) Isabela (@isabela-pf)

Notes

Say hello!

Introduce yourself however you like. What do you want to get from this meeting?

Why this meeting? Why now?

What goals do we have?

What are people working on?

Next steps

choldgraf commented 4 years ago

also pinging @manfromjupyter who mentioned they might be interested in joining in on accessibility conversations!

telamonian commented 4 years ago

At @choldgraf's suggestion, I'm pinging all of the participants from jupyter/accessibility#11, ie the folks who would have been jupyter a11y workshop attendees, had the workshop happened:

@sinabahram @zorkow @ellisonbg @clapierre @trallard @jasongrout

As we try to renew the push on making jlab accessible, your involvement in the working group would be most welcome. We've got plenty of enthusiasm and jlab know-how, but we are critically short of actual a11y expertise. Any input would be greatly appreciated.

In addition to the meetings, the working group has also been chatting a lot on gitter: https://gitter.im/jupytercalpoly/accessibility. The gitter channel is where we've actually been arranging the meeting times and rooms.

lresende commented 4 years ago

@marthacryan

clapierre commented 4 years ago

tricky part: the button text the reccommendation: always use an HTML button element, always label like text for icon buttons (eg all of our toolbar buttons), the suggestion is to hide the text using CSS

That doesn't seem right. I would think that the using aria-label would be the ideal solution here. Not sure why you would need to hide the text of an icon button off-screen that seems ludicrous to me. @sinabahram don't you agree?

sinabahram commented 4 years ago

A few things.

First, putting text inside the button could be thought of as preferred over using ARIA, and yes, the appropriate way to do that is with an sr-only class on the inner text. This follows the principle often quoted as "The first rule of ARIA is not to use ARIA", and you obviously do not "need" ARIA to label a button.

Having said the above, I'm unaware right now of any lack of support of aria-label amongst the popular screen reader/browser combinations, so this is a trivial issue, and please feel free to use aria-label to label the buttons.

Next, this touches on the point I was trying to make earlier. I think attacking low hanging fruit like unlabeled buttons is wonderful. It will have real impact for sure, but it is a small fraction of a fraction of what is required to actually make significant progress towards an accessible experience. To that end, I suggest that you need a strategy for these various patterns, be it unlabeled controls, grouping techniques, container semantics, heading semantics, traversal patterns with alt+shift+f6 and alt+f6 (you can't use f6 alone because that will conflict with browser's native f6 implementation), image descriptions, when to have automatic announcements, and so forth.

None of the above tackles the trickier issues around content editable, mode toggling, and code-related features, all of which need their own conversations of course.

Moving beyond the above tactical issues into matters more strategic around accessibility, there need to be several conversations around how these semantics are conveyed and reasoned about within the system. It's been a while since I've been in the code, but I remember a dedicated UI library happening via Phosphor or something like that, along with certain assumptions about functionality and accessibility mappings therein being made at various places up/down the stack. Some of these decisions will need to be revisited with an eye towards accessibility because the approaches/patterns I reference above, once agreed upon, can then be templatized in a way that doesn't require doing a ton of work every single time we want to create a button, add it to a toolbar, etc. Same goes for menu options and much more.

I hope this helps a bit, and I'm happy to find time to hop on a synchronous call to discuss further.

manfromjupyter commented 4 years ago

Going to second what @sinabahram said. It is the best practice to inject hidden text to the elements over aria-ing if you can.

isabela-pf commented 4 years ago

10.21.20 Meeting Minutes

Attendees

Max @telamonian Isabela @isabela-pf Martha @marthacryan Alex @ajbozarth Jason Grout @jasongrout

Notes

Logistic check in

Proposed Goals

We'd like to propose concrete accessibility goals would be so that we can organize it into JupyterLab's release cycle and encourage people to focus on them. These are some ideas of where to start.

What are people working on?

Isabela

Next steps

isabela-pf commented 4 years ago

Following up on some of the next steps from the 10.21.20 meeting minutes, here's what's next in terms of meetings.

On Monday (Oct 26) 1:00pm Pacific @jasongrout will guide us through some of the accessibility work started at the root of JupyterLab in Phosphor. Meeting on Zoom.

We also agreed on a time to schedule these recurring meetings so that we can post a link publicly. For now, we will meet every other Wednesday at 10:15am Pacific (right after the JupyterLab weekly team meeting ends). That means the next meeting is November 4 at 10:15am Pacific. Meeting on Zoom.

choldgraf commented 4 years ago

thanks for posting these notes online! If we decide to make a push on getting funding to hire developers for accessibility work, this is something I am happy to help with 👍

isabela-pf commented 4 years ago

These notes are from a supplementary meeting to the regular and more general JupyterLab accessibility meetings we've been holding. It was lead by @jasongrout.

Walkthrough Phosphor Accessibility PRs Meeting Notes (10.26.2020)

Attendees

Jason Grout @jasongrout Martha @marthacryan Alex @ajbozarth Karla @karlaspuldaro Alek @biniona Gonzalo @goanpeca Isabela @isabela-pf

Context

This is related to the Web4All Hackathon on Jupyter from 2019 at the LightHouse SF.

Accessibility standards tend to be written based on HTML forms or similar standard web use cases. Sometimes it's difficult to figure out how that impacts JupyterLab since we use lots of things in ways that weren't intended in the design of such standards.

Some people worked on the "low-hanging fruit" in JupyterLab (like dialogs) and some people started working on Phosphor since it makes architectural decisions that interfere accessibility higher up.

WIP Repos

Where a lot of this work lives. Closed issues were pulled upstream. Open issues hold discussions and work that still needs to be done.

Relevant PRs and Issues

Miscellaneous Notes

Next steps?

isabela-pf commented 4 years ago

11.04.20 Meeting Minutes

Attendees

Martha @marthacryan Max @telamonian Alex @ajbozarth Jason @jasongrout Isabela @isabela-pf

Notes

If needed, recap/point to the notes and resources for our Phosphor PR meeting last Monday for people who weren't able to make it.

Are these meetings something we'd want to have on the Jupyter community calendar?

What are people working on?

Next Steps

isabela-pf commented 4 years ago

These meetings will now be on the main Jupyter (jovyan) Zoom channel and are on the JupyterLab Community Calendar! Up to date info will be on the calendar.

I will continue posting meeting minutes here, and will note if that is to change. Thanks for everyone's continued interest and work. 🌻

telamonian commented 3 years ago

It looks like we now have all 3 of the old phosphor a11y PRs redone as lumino PRs:

jupyterlab/lumino#129 jupyterlab/lumino#131 jupyterlab/lumino#132

The first two have already been merged, jupyterlab/lumino#132 still needs review/merging. Way to go @marthacryan

isabela-pf commented 3 years ago

11.18.20 Meeting Minutes

Attendees

Martha @marthacryan Karla @karlaspuldaro Alex @ajbozarth Max @telamonian Jason @jasongrout Thomas @manfromjupyter Isabela @isabela-pf

Notes

What are people working on?

Next Steps

choldgraf commented 3 years ago

This is really exciting to see all of this progress - thank you @isabela-pf for posting these notes, I really appreciate it as somebody who is dealing with a 3 month old and thus cannot make these meetings!

Excited to see what an audit comes up with in JupyterLab :-)

Two quick points:

  1. Don't forget that we have a little bit of funding from Bloomberg to run some kind of event around accessibility. I'm not sure how much flexibility we have with it, but perhaps it is worth discussing if / how this funding could be useful in a future meeting?
  2. I see that the plan is to consolidate a11y issues in either Lumino or JupyterLab. I think that's reasonable given that the major improvements to make are there - though just want to note that there are other places in Jupyter that could use a11y improvements too! (e.g. JupyterHub / Binder, Jupyter Book, etc)
manfromjupyter commented 3 years ago

@Tony, per your comment in the meeting about what tools were used, here is exactly what I used to do everything.

For Contrast, Heading structure/ordering, and Landmark usage, I use https://khan.github.io/tota11y/. Simply add the link at the very button of it (detailed in directions) to your browser bookmarks and it creates a pure JS overlay that tests all of those things and very well. No extensions needed. Using the tota11y tool: using tota11y

Or if you don't trust extensions of foreign JS you can do it manually to each element in question with the Chrome Inspect element which for the last ~8-10 versions has done this. It's pretty cool and works most of the time. individual-contrast

For Screenreading, I tried NVDA this time but disliked it. Just having to push a key at the same time I am also tabbing, arrow keying, jumping to different headers or tables, etc just was annoying and didn't seem to even work half of the time (very possible I just don't know the software fully). Have and will continue to use the JAWS application. It is unfortunately no longer free (as of June 2020), but for people that don't own it, each time you restart your computer you can use it for free for 40 minutes.

For the paragraph, character, font-size, and line-height spacing test, I just manually input the CSS as there are so many different extensions that could be added that it just seems more consistent to do it manually. Just add the following CSS styles to your inspect element for the site you're testing on. No extensions needed.

* {
    line-height: 1.5 !important;
    letter-spacing: 0.12em !important;
    word-spacing: 0.16em !important;
}
p {
    margin-bottom: 2em !important;
}

For the Rendering without a Stylesheet test/tab ordering flow is logical test, as tedious as it is, I just manually delete all of the <stylesheet> style elements in the <head> section of the HTML. That's how I got it to look the screenshot below. There is probably a better way to do it but that's just what I've been doing. In my defense the web best practice is to use a single stylesheet for all styling, not 50+ that JLab currently uses (just the out of the box product, no JLAB extensions). Anyway no special tools or browser extensions needed to test this. jupyterlab without styling

For Testing Low Vision just magnify your browser to 400% zoom for AA (WCAG version 2.0) support or 500% for AAA (WCAG version 2.1) support for these users (if I remember correctly). For the mobile/tablet tasks I either do the same or open the inspect element > device toolbar emulator. No extensions needed. device toolbar emulator

And that's it. No extensions needed for anything, just some JS code bookmarked, your screenreader app, and some in-app manipulations you do to the styling. :)

jasongrout commented 3 years ago

In my defense the web best practice is to use a single stylesheet for all styling, not 50+ that JLab currently uses (just the out of the box product, no JLAB extensions)

FYI, the design of JupyterLab is ~50-100 discrete "extensions" that all work together, and each have their own stylesheet to load.

manfromjupyter commented 3 years ago

Hahahaha, touché. Makes sense.

isabela-pf commented 3 years ago

Responding to @choldgraf. I'm glad the meeting notes are helpful! Thanks for your continued feedback on them.

  1. Don't forget that we have a little bit of funding from Bloomberg to run some kind of event around accessibility. I'm not sure how much flexibility we have with it, but perhaps it is worth discussing if / how this funding could be useful in a future meeting?

Thanks for the reminder! I put it on the agenda to bring up in the next meeting since I'm not sure how we might be interested in using it.

  1. I see that the plan is to consolidate a11y issues in either Lumino or JupyterLab. I think that's reasonable given that the major improvements to make are there - though just want to note that there are other places in Jupyter that could use a11y improvements too! (e.g. JupyterHub / Binder, Jupyter Book, etc)

You are absolutely right that there are other places that I'm sure could also use accessibility improvements. Right now we made the choice to limit our scope in order to make goals that are reasonable for the number of people we have working on it, the time each can devote to this work, and the fact that we all have been working on JupyterLab lately. I agree though that the ideal case would be to continue building a community around this to work on the whole ecosystem.

isabela-pf commented 3 years ago

12.02.20 Meeting Minutes

Attendees

tony @tonyfast Max @telamonian Jason @jasongrout Alex @ajbozarth Karla @karlaspuldaro Gonzalo @goanpeca Martha @marthacryan Thomas @manfromjupyter Darian @afshin Isabela @isabela-pf

Notes

Triage of existing accessibility issues This will be cross-referenced, updated with #9399, and stored in this project from here on out.

What are people working on?

Next Steps

manfromjupyter commented 3 years ago

Regarding the last-minute push we talked about that we could rush into JupyterLab 3.0, here is where I filed it (https://github.com/jupyterlab/team-compass/issues/114) . Looks like it's 24 lines of code instead of 8 hahaaha, so apologies for that. Didn't expect some other things that needing addressing. Each of the sections within these landmarks need improving, sure, but provides 85% of the aria landmarks needed and upon deciding on a solution for the header part for screenreader users to parse through them, will make it accessible to them. So users may not be able to parse through the header or sidebar with this alone, but they can get to the container and see if any combination of tabs, arrows, or "screereader start reading here" will let them parse through it. If it's too much of a lift before the release, no worries, just wanted to throw it out there.

P.S. Apologies in advance for screenreader users for the ticket. Included quite a bit of text in images and color-coded them to make them easier to understand because of the rushed situation. If you would like clarity on specifics of the proposed changes just let me know.

choldgraf commented 3 years ago

@manfromjupyter that "low hanging fruit" diagnosis is awesome, thanks for that :-)

isabela-pf commented 3 years ago

Thanks for everyone's patience with me posting this week's notes. We had a really active discussion so the notes needed some organization to make them better match the meeting (and easier to read later).

12.16.20 Meeting Minutes

Attendees

Notes

These discussions have identified four main accessibility needs for JupyterLab (can probably be extended to other Jupyter projects too)

JupyterLab Code Editor

Our main focus today is the accessibility of JupyterLab's code editor as discussed in #4878 and the comments of #9399.

Agenda items not yet covered

Next Steps

SamKacer commented 3 years ago

I just wanted to add a small note. Just so that it is explicitly noted, the WAI-ARIA Authoring Practises are directly useful for the points on the screen reader accessibility of the menu bar.

The Menu bar section:

Further, the section on keyboard navigation inside components describes how to manage the focus inside a composite component such as the menu bar. This is critical for screen reader users, as without it the screen reader can't let the user know where they are located in the menu bar! This section describes two ways to achieve this. Either one works well. I would expect the aria-activedescendant method might be easier though in the jupyter instance.

manfromjupyter commented 3 years ago

Regarding one of the discussions brought up today, wanted to catalog the different groups or issue topics that users may be concerned about that may not know accessibility or are not paid to work exclusively on accessibility that we could get buy in from to work on accessibility fixes and still have their orgs, companies, etc support it/fund them doing so. May not be a complete list, just a handful I could think of and briefly saw when looking at the project chart.

Accessibility Work and other issues it could fix:

Changes solely affecting Accessibility

As per the accessibility only buy-in work needed, have included information of what requires a screenreader or not - as this also came up in the meeting today. All issues above do not require a screenreader, but for contrast fixes for example, or labeling below (instead of a screenreader), user might find it easier to develop and test with the Tota11y toolbar (https://khan.github.io/tota11y/) instead because it's stupid easy and will expose labels of contrast ratio, header number, and aria label directly on the screen. Hopefully this will decrease the analysis paralysis and barrier to entry for developers to begin working on these issues and get their feet wet if they're new to accessibility before jumping into the screenreader issues, or else we can/should encourage them to jump straight to these.

Does NOT require Screenreader to Develop/Test

Screenreader Required to Develop/Test

isabela-pf commented 3 years ago

12.30.20 Meeting Minutes

Attendees

Notes

Next steps

isabela-pf commented 3 years ago

01.13.21 Meeting Minutes

Attendees

Max @telamonian Thomas @manfromjupyter Martha @marthacryan Jason @jasongrout Tony @tonyfast Isabela @isabela-pf Darian @afshin
Alex @ajbozarth

Happy new year!

Hooray for JupyterLab 3.0! Congrats and kudos who everyone who worked hard on it.

What are people working on?

Go around the meeting area and ask.

What we need to work on

We need to take stock of what's being worked on and split up the work we know we need to do.

Other Notes

choldgraf commented 3 years ago

Hey all - another thought that may be worth considering. I opened up this issue in @jtpio's jupyterlab-classic repo: https://github.com/jtpio/jupyterlab-classic/issues/80

the gist is: I wonder if getting jupyterlab-classic to be more a11y-friendly would be an easier path than getting JupyterLab to be fully ally-friendly. Perhaps we should start off with making improvements to jupyterlab-classic (which will probably benefit JupyterLab more generally anyway) to make some quick progress.

manfromjupyter commented 3 years ago

@choldgraf, if there are changes that can be received to improve both, I'm in favor. As per making it the precedent for making it fully compliant, I think is counter productive.

I am not a key contributor or in any of the inner groups, but it's my understanding that Jupyter Classic is deprecated and in a mere maintenance state until it can be decommissioned (JupyterLab would then become the new home page on initial load). Given that JupyterLab is the future and we can guarantee we'd get approval to make said changes unlike classic for the fixes that wouldn't affect both, I feel we shouldn't touch classic (unless changes affect both). The only other exception would be if its deprecation status was premature and for example they're not decommissioning for another 10 years. Elsewise it just seems like an uphill battle for something that may soon go away anyway.

It is true that Classic is more accessible (almost already supporting low vision users entirely, and header/settings more accessible to screenreaders the one times I look) and I agree in that it would require less work, but because it's deprecated, I and I imagine others can't get any sign off to work or even test something that's just going to go away some day soon. We need mobile and tablet support on JupyterLab, that'll make it fully accessibly for low vision users. Rest are just general UX fixes that JupyterLab needs anyway. What remains it is even less than what would take Jupyter Classic to be fully WCAG 2.0 or 2.1 compliant.

goanpeca commented 3 years ago

@manfromjupyter JupyterLab Classic is a new project https://github.com/jtpio/jupyterlab-classic, basically provide the classic notebook experience but using all the JupyterLab components.

Jupyter Notebook Classic != JupyterLAB Classic :)

choldgraf commented 3 years ago

Yes! Sorry for not making that clearer - the point of jupyterlab-classic is to use jupyterlab components to re-build the notebook interface. I think that all a11y improvements for jupyterlab-classic would happen in the form of upstream improvements to JupyterLab components. I'm just saying that it might be worth prioritizing the jupyterlab-classic components first, as it might be a shorter path to having a notebook interface that is more a11y-friendly.

manfromjupyter commented 3 years ago

@choldgraf Oh I misread, forgive me

ellisonbg commented 3 years ago

Because of the scale of JupyterLab's usage, I believe we should focus on work that helps JupyterLab itself to become more accessible. Obviously, jupyterlab-classic will benefit from that, which is also a good thing.

On Wed, Jan 20, 2021 at 8:21 AM Man from Jupyter notifications@github.com wrote:

@choldgraf https://github.com/choldgraf Oh I misread, forgive me

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/jupyterlab/team-compass/issues/98#issuecomment-763752573, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAGXUD2G53UHFEYKYVYGTTS237I5ANCNFSM4R7J3OPQ .

-- Brian E. Granger

Principal Technical Program Manager, AWS AI Platform (brgrange@amazon.com) On Leave - Professor of Physics and Data Science, Cal Poly @ellisonbg on GitHub

choldgraf commented 3 years ago

Again my point is not to work on jupyterlab-classic instead of JupyterLab, my point is that there are likely many things to do in JupyterLab itself to make it more a11y-friendly, and we'll need to prioritize which things to work on. I'd recommend prioritizing the things that are also used in jupyterlab-classic if it means that there is a shorter pathway to getting an a11y-friendly interface.

Basically I'm suggesting that jupyterlab-classic could be a quick win on the way to making JupyterLab in general more a11y-friendly.

The reason I say this is because particularly in the educational space, many many people will prefer a streamlined notebook interface (they're still using the "old" classic notebook interface), and having an interface that:

Would greatly increase the likelihood that they would switch.

tonyfast commented 3 years ago

The trouble with focusing on jupyterlab classic specific changes is that we only have audits and specifications for jupyterlab itself. If there were an audit and specifications for improving classic specific, i think we could move on this idea. without an audit like https://github.com/jupyterlab/jupyterlab/issues/9399 it is hard to know what takes action.

manfromjupyter commented 3 years ago

Maybe somebody else can review jupyterlab-classic for that (if we get there and/or like the idea) but because it is not part of the out-of-the-box experience of jupyterlab I personally am just not authorized to work on it/test it, so I can't be the one to do it.

choldgraf commented 3 years ago

I'll let y'all discuss whether to take this approach or not, I'm just a fan of quick wins and iterative progress wherever possible :-)

jtpio commented 3 years ago

I'd recommend prioritizing the things that are also used in jupyterlab-classic if it means that there is a shorter pathway to getting an a11y-friendly interface.

I think what this means is focusing on components such as the notebook, file browser and terminal first, since they are also used in JupyterLab Classic.

Instead of the code consoles, status bar and other components in upstream JupyterLab only.

SamKacer commented 3 years ago

if jupyter lab classic consists of a strict subset of components from jupyter lab, then it makes sense to prioritize components in such a order that jupyter lab only components are prioritized after the ones in classic, since then we would get to some fully accessible version of jupyter lab the most efficiently.

in either case, I think the next priority component, at least for screen reader accessibility is the menu bar, code editor and file browser.

isabela-pf commented 3 years ago

01.27.21 Meeting Minutes

Attendees

(oops! No one signed in today so I gave my best guess.) Max @telamonian Thomas @manfromjupyter Martha @marthacryan Jason @jasongrout Tony @tonyfast Alex @ajbozarth Karla @karlasupldaro Isabela @isabela-pf

What are people working on?

Other Notes

Merged PRs (let's celebrate!)

Next steps

manfromjupyter commented 3 years ago

Thank you/great work again Martha and Tony for getting us to that finish line for landmarks. Super awesome!

Given the discussion earlier about some different sections that are top priority that can/should be worked on that will enable other efforts that all can be worked, here's a list I was able to add a lot of detail too and should hopefully be easy. Can all be done at the same time without affecting each other next that aren’t already being looked at:

One that is less important because it's a WCAG 2.1 requirement not WCAG 2.0 requirement but could be done at any time for non-typescript people that just just know CSS:

SamKacer commented 3 years ago

@manfromjupyter I am not completely sure, but I think officially HTML elements are only supposed to receive keyboard events if they have a tabindex. So, elements without one that have a onclick handler, might not reliably respond to spacebar or enter from a screen reader. Unfortunately, I don't have any time to contribute, but just wanted to say it might be worth adding a tabindex to these clickable elements and see if that resolves the issue.

manfromjupyter commented 3 years ago

@SamKacer I think users just can't get focus on those nontraditional actionable elements to begin with, but you can gain focus technically anywhere (with JS or on any element you can get to with a screenreader). You may very well be right though and definitely worth doing first to see if it works on it's own. Either way, we need to add the tabindex="0" on there anyway to complete another requirement (and did include that in the info under point number 1).

I just wanted to bring up that the lift is slightly higher than anticipated because even when making that change in my tests it doesn't expand the dropdowns. The script may need manipulation. But yeah, definitely start with a tabindex="0" to see if that makes it work.

isabela-pf commented 3 years ago

02.10.21 Meeting minutes

Attendees

What are people working on?

Other Notes

Merged PRs (let's celebrate!)

Zsailer commented 3 years ago

Updated the top comment with links to each individual meeting's notes. I find this useful when trying to jump down to previous notes. Feel free to remove if you don't want it :)

fcollonval commented 3 years ago

Not sure it is the best place. But here is a talk by CodeMirror author on accessibility with CodeMirror 6 (FOSDEM 2021): http://bofh.nikhef.nl/events/FOSDEM/2021/D.javascript/codemirror.webm

isabela-pf commented 3 years ago

02.24.21 Meeting Minutes

Attendees

What are people working on?

Other notes

Next Steps

isabela-pf commented 3 years ago

In case anyone missed it, meeting minutes will be moving to jupyter/accessibility for (hopefully) easier to navigate and more centralized knowledge. I won't close this issue right away, but I don't think an issue like this is the best choice for long term note storage.