-
Notifications
You must be signed in to change notification settings - Fork 1
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
Type up requirements issue for Zoom fixes #34
Comments
This is a summary of the Zoom audit in the latest Jupyterlab interface Referenced issues
Findings
General questions
Tasks
For more info about each pane please see its particular issue where screenshots and more notes are described. |
Thanks for summarizing this! I have some thoughts and comments about the above which I will cover in no particular order, one quoted line at a time.
I could check on my Windows laptop to see what happens in similar situations on Windows if you like.
Ditto, could check something similar on Windows.
Ditto, could check on Windows.
Can you show an example of this, a button for context menus?
I think I was able to resize settings left menu on mine. I can show in tomorrow's call.
Good catch on the Settings Editor. I imagine that our planned extension will need to make use of the Settings Editor. On my dev machine, which has a pretty high resolution (3072 × 1920), it starts to get hard to use at around 150% zoom in Chrome.
I'm not sure what you mean by responsible layout breaking the menubar. Also not sure about your comment about the status bar and responsiveness. Perhaps we could cover this in the team call. |
Thanks for giving such thorough review and compiling your findings, @steff456! This is so pleasantly skimmable so I can figure out the best places to dive in with the more focused issues. I'm not sure how much this comment will help, but I do want to say I think all your findings and tasks make sense to me. I think the following apply to me immediately
Does that sound correct? I've been looking into patterns for zoom behavior and small screens in tandem. Zoom is an areas I've worked on less, so I think I'm still synthesizing the info I've gathered there. I think my direct next step is to provide a low-fidelity visual and pattern for how each content area (from what you've listed) behaves in
|
Yes, it sounds like a good plan :) |
Questions to dive into
📌 - need to scope/design
Fix Zoom issues first and these should help with most of the issues. https://adrianroselli.com/2019/12/responsive-type-and-zoom.html
@isabela-pf will look at other tools and how they deal with these
Refs:
@isabela-pf will work on:
TBD
|
One question all of this raises for me: should we say that we won't support screens below a certain width? |
This sounds reasonable - might need to define what certain width it is |
I was hoping that by taking a look at how Windows handles scaling, we might find solutions for squeezed tabs, dialogs, and file menu bars, since Microsoft has done a lot of work on accessibility. However, the results were a mixed bag. At 400% scaling, I came across multiple dialogs that had content off screen and with no way to reach it. With lots of open tabs in Edge, I found that there was no way to scroll through the tabs, but you could use keyboard shortcuts to cycle through tabs. In Microsoft Word, I discovered that the menu bar had a neat feature of putting little left/right arrow buttons at the left and right ends of the file menu bar; this keeps the bar on a single line, as opposed to wrapping the bar to two or more lines; however, at 400% scale, the fine menu bar disappeared completely and I had no idea how to find it, so that seemed less than ideal. I also noticed that in the settings app, the two-panel layout switched to a single panel after a certain point. So like I said, mixed bag. But we may want to steal the left/right arrows for the menu bar. And we may also want to adopt the approach of switching a two-panel layout to a single panel with a back button to a one-panel home menu. |
Long overdue, here are some ideas on how to approach the reflowing and content prioritizing needed forJupyterLab to zoom up to 400% without losing content. I’ve been noodling over this at a few different levels, but I think we need to start with thinking about how all the parts interact before spending time on how each detail fits in the many JupyterLab regions. That's why we're operating in a neon, quilted JupyterLab land for now. I think the core problem from @steff456’s review is the conflict of
Only 2 and 3 are in our control, so my goal is to get us discussing what UI we want to prioritize as visible by default, what UI is collapsed (but not gone) as default, and how to optimize the responsiveness of these areas. Option 0-3This approach
Option 0-5This approach
Option 0-9This approach
Option 0-4This approach sets the UI based on how the user is interacting with the document. Command mode is for high-level document traversal and edit mode is activated when a user has entered an editable part of a document (ie. when focus in a notebook moves from outside a cell to the editor region of a cell). When in command mode, this approach
When in edit mode, this approach
NotesAll of the above are very rough explorations to get discussion started, so they all need more ironing out in order to fill out what the user flow would actually need to be from end to end. Please point out missing gaps, but also know I may not have all the answers yet. I think option 0-4, while pretty logical and following patterns of other dense, document-based interfaces on small screens, probably isn't viable. It's a totally different experience than JupyterLab unzoomed or at a large screen, and it seems wrong for the UX to be that great. Still, I wanted to provide in case it sparks ideas that are more flexible. As always, feedback and questions are useful. Thanks! 🌻 |
I also like a lot the option 0-4, I think is the less disruptive one in terms of the current UX in JupyterLab. I think we might need to explore the idea of completely collapsing the main menu, in terms of API flexibility and location of panes. I think my main concern with options 0-9, 0-5 and 0-3 is how to manage hiding the sidebars, are they going to be always hidden? How are we going to manage all the options that are inside of them? |
Thanks @isabela-pf for providing the scaffold for us to have more concrete discussions. I finally got a chance to re-review these proposals. I also did a deep dive into WCAG 1.4.10 - Reflow aka 400% zoom. I played with Google Docs and Google Colab at 320 CSS px. On desktop, 320 CSS px means start at 1280px width at 100%, then zoom up to 400%. I also played with JupyterLab on my Windows laptop. And I played with it on my iPhone at various levels of zoom and text sizing. It reminded me of my findings when I scaled up Windows really high and tried to work with Microsoft Word: disappointing, discouraging. I'm starting to feel that it simply might not be realistic for us to try to rework JupyterLab to meet guideline 1.4.10. I'm not saying I think it's impossible for us to conform to the guideline. But I want us to ask if it would be worth it. This guideline might be the hardest of all of them to meet with JupyterLab. I have yet to see a classic desktop-style app that strictly conforms at 320 CSS px. Can someone give me a counter example? Now, the counter argument is that Isabela's proposed layouts could conform to the guideline. But my guess is that Isabela's suggestions will take a lot of effort to implement. I'm not sure they can be done in an extension, and if they can't, it would require either a fork of JupyterLab or a lot of changes to the core of JupyterLab. Maybe this is where we need an engineer with lots of JupyterLab experience to give us a quick size estimate. That being said, my alternative suggestion is that instead of trying to conform at 320 CSS px, we try for analogous reflow conformance at 640 CSS px (aka 200% zoom instead of 400%). We will need to do that anyway to conform to guideline 1.4.4: Resize Text. This will still give us a lot of work to do, but it seems more tractable to me. 400% zoom is much more than twice the work of 200%; to me, it's like 10x or more. That's because 200% zoom unlike 400% doesn't require a complete re-think of the existing UI, which is what I consider Isabela's layouts above to be. Correct me if I'm wrong but I think 320 CSS px was chosen to ensure that web pages would be responsive across a very broad array of mobile devices. Perhaps it's okay for us to say that it's a higher priority for us to focus on the accessibility of the desktop experience (plus tablet). I dunno, what are all of your thoughts? |
Some thoughts 🤔
So TLD;R the expected behaviour of the reflow is that at 200% (and +) the content will be a single column, and navigation menus will appear below or under the main content.
These behaviours are, IMHO what we should strive for rather than trying to be extremely precise and adhering to the 320 CSS px requirement.
This is not a simple problem - and we cannot anticipate/fix/prevent all the scenarios and possible fails.
They will require a lot of work, yes. More thoughts:
As we discussed last week (or maybe the previous one) the best path forward is this and it is what we should do:
I know it can sound like a drag (😉) aiming to align multiple stakeholders and potentially ending in many calls, syncs, and the such. But this is inevitable - and the sooner we get this done, the better. I am happy to join all the calls, align all the folks, and have all the discussions needed, it might seem like a big hurdle at first but long-term this will make it easier for all parties involved and we will be wasting less resources. |
Following up on the discussion from a few hours ago, we will be moving forward with working on this from 200% zoom. I don't think this changes much from a design perspective in the sense of interaction patterns and needing to free up space for the document. |
Okay, here’s another idea for review! Please note that this is an opinionated take because I think it’s easier to critique that way. I have some issues with this solution—or at least questions that need more attention—so I’m expecting we’ll end up with a more moderate compromise. The major changes:
All at once, here’s a basic set of interactions for when users zoom and and how they might navigate when the layout changes. Screen.Recording.2022-09-28.at.5.00.59.PM.movBreaking that down, I’ll explain key points with notes. The main menu and both sidebars disappear at 200% and not before. Document name/open tabs are at the top followed by the document menu if the document type has one. Any document specific UI (like the notebook cell toolbar) would stay. The command palette stays as an overlapping dialog-like thing. Pinned at the top are sections for easy navigation of the UI areas removed, in this case the main menu and side bars. I do believe this could be open so that extensions could opt in to add themselves as well, so I like the potential for it to scale even if it’s not our main concern. I do think all commands we add should be available in the command palette at all times, but they may not need to be pinned by UI when the main menu and side bars are visible at lower zooms. Areas from the sidebars that are not document-reliant can open as their own tabs. For example, the file browser can exist totally separate from all open documents. This behavior matches the launcher and settings. Tabs also can be listed for easy switching without relying on the main menu or sidebar options that are less available. I think this should exist for JupyterLab at any zoom level, to be honest. Areas from the sidebars that are document-reliant can open as some kind of overlap. For example, the table of contents is generated based on the open document selected and can’t work without a document chosen. I don’t love having these two behaviors at once, but it’s what I have for the time being. Finally, this shows how the approach can scale to 400% browser zoom. I know 200% is the current focus, but I think it’s worth noting. I also think this can work with different screen orientations. Questions that might help you get the feedback muscles moving!
|
Thanks @isabela-pf for amazing work, and once again providing the scaffold for us to have concrete conversations. I have some thoughts that I want to break down into two sections. In the first section I remain a bit abstract. And in the second section, I try to offer thoughts that are more concretely tied to Isabela's idea. Translating DimensionsI think one of the biggest challenges we face with WCAG 1.4.10, or making JupyterLab work at 400% zoom (or 320 CSS px) is that much of the JupyterLab UI was built around the assumption of having enough space to work with in both the x and y dimensions. Let's take the Contextual Help feature for example. You can get to it by right-clicking on a code cell and clicking "Show Contextual Help" near the bottom of the context menu that pops up on right click. That opens up a Contextual Help tab to the side of the notebook document tab. So together, the notebook and contextual help are displayed side-by-side. It looks like this: We could keep going like this, pulling up example after example of how the current UI has been built around the assumption of having horizontal space to work with. (We could also pull up examples of the how the current UI has been built around a similar assumption in the y/vertical dimension. For example, in the left sidebar, if the vertical space reduces too far, some of the buttons disappear and you cannot scroll to them.) But I think that in order to properly meet the 1.4.10 guideline, we will have to translate that UI paradigm from x and y to y and z, by which I mean, we will have to think about pulling things that are laid out horizontally and stacking them vertically, and whenever we can't stack them vertically, we'll have to stack them on top of each other in the z axis (the axis coming out of the screen). Let's take the Contextual Help feature, as an example. Instead of opening it to the side, we could imagine opening it as a modal. As another example, I don't think we've considered taking the sidebars and laying them out horizontally instead of vertically. To continue on that last thought, I could imagine getting rid of the top menu bar (File, Edit, View, etc.) and replacing it with a band at the top that acts as a kind of app switcher. The File Browser would be an app, the Open Tabs and Kernels would be an app, as well as the Table of Contents, the Extension Manager, the Debugger, the Property Inspector, the Settings Editor, the Launcher, the Notebook Editor, and so forth. But I think translating (x, y) to (y, z) is a pretty drastic refactor of the UI, which is why I've had my doubts about being able to meet this WCAG guideline. More Concrete ThoughtsThat said, I'd like to offer some thoughts on Isabela's idea. I'm not sure how to organize my thoughts, so apologies for the stream of consciousness. First of all, I think the idea of getting all commands into the command palette is a really smart idea. Whatever route we decide to go down, I think having an always-visible button that opens the command palette is an accessibility feature that we should consider adding to JupyterLab. Secondly, I still see this as a kind of mobile-first renovation of the JupyterLab UI. On Monday, it might be worth discussing the trade-offs of going down that route versus one that attempts to patch reflow issues in a minimally invasive manner. In a previous conversation that I had one-on-one with Isabela, she pointed out that if we go down the route she proposes, it might save as much work as it creates. Specifically, we won't have to spend time fixing the various side panels if they disappear at 200%. But then again if the aim as suggested by the new 200% mocks above is to pull the side panels out from the side and into document tabs and on-top-of-document overlaps (or modals), then we're back to either having to create new UIs (such as the new open tabs UI imagined above) or having to fix these sub-UIs for narrow screens / high zooms (such as in a table of contents overlap at 200% or greater zoom). Another thing—I'm sure you've already thought about this—but I'm not sure that it's feasible (from a usability perspective) to take the debugger panel out from its side position and into either a modal or separate tab. I'm not sure (perhaps for lack of imagination) how I would use a debugger without seeing two things at the same time: the code that I'm stepping through and the tools to step through that code. That said, I don't want to imply that I think we should abandon Isabela's proposal just because it may or may not work for one or two extensions that ship with JupyterLab by default. Because overall I think Isabela's designs are the best choice we have right now for the end user experience (over and above conforming to WCAG 1.4.10). The question that's been turning in my head, and for which I don't have a very confident answer, is whether it's feasible—or whether there's a more feasible route. On a smaller note—the mocks above don't show this—but I think we should get rid of the status bar at 200%. I hope some of that is helpful! :) |
From #11 #16 #18 #12 #14
The text was updated successfully, but these errors were encountered: