-
Notifications
You must be signed in to change notification settings - Fork 29
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
UX/UI proposals for Gator #157
Comments
Hey @isabela-pf this is great to see you here. Thanks for putting together these mockups. We have also bee working on some UX designs for an environment editor and manager, and thinking about this kind of interactions lately. (Pardon the use of French in the UI mockups). Auto-complete on adding dependencies: (Collapsed diagnostic pager) Expanded diagnostic pager when specs are not solvable Expanded diagnostic pager with resulting set of packages Pure file editor interface for modifying the same environment - with auto-complete on schema, package and versions Said auto-complete UI has been developed in #141. |
Thanks @isabela-pf to open up the discussion.
Some secondary goals of the current extension are:
Other feature (not implemented) that has been discussed:
This may be useful to know if we need to add more columns for example in the listing.
❤️ One point I'm worried about is the breadcrumbs. In the classical case (not What is the objective of the link button in the toolbar?
We gonna need to iterate a bit on the information to be displayed here (probably this will depend on the environment management system). Does that panel needs an editable mode?
For the standard management system, a Clone environment will useful and the Create a file in this environment won't make much sense.
We may want to have additional information (may be optional columns) for the channel and maybe the license. We definitely need a way to list quickly the packages that can be updated (as the packages list will most likely be too long to see all of them in the sidebar). How do you image the UI for creating/editing the environments? Would you rather use a main widget similar to what Sylvain posted or a in-sidebar form?
Thanks for sharing the mock-up
Definitely displaying an icon for the environment like the box you use sound a good indicator. For the packages, I don't if this is needed.
That's a good question actually and the input of @pierrotsmnrd will be interesting. Do you imagine the extension to use simultaneously multiple managers or they will be exclusive? |
Hi everyone :) Thanks for the feedback on the mockups @fcollonval, it's very valuable ! Using multiple env management systems at the same time would bring paradoxes and confusion :
also, the use cases for conda/mamba on one hand, and conda-store on the other hand, are kind of mutually exclusive : Users using conda/mamba won't need to use conda-store, and the other way around. Conclusion : The extension should use env managers in a exclusive manner. The users will be able to switch from one environment management to another. For the other points in your feedback : we're processing them and thinking them through. Also, interesting UI and feature ideas @SylvainCorlay ! I like the idea of the diagnostic pager when an env is not solvable. Have a nice day you all :) |
Great this aligns with my vision 😉
For this one, you mean that the user should be able to switch without restarting JLab? |
I like the idea of exposing the licenses for each package. I needed to check this yesterday. |
Sorry for the delayed reply; my time is split between a lot of projects right now. @fcollonval thanks for the line-by-line feedback. I really appreciate the additional goals so I know we are at least kind of on the same page. The idea about using icons by environment manager in the breadcrumbs is a great idea. I’ll make sure to get them added in on the next round of mockups.
I am a little worried about that too. I was hoping that since nothing is referenced as a file that it would help. I'm totally open to ideas that makes this more clear.
I was using it as an
Probably! Thanks for catching that.
I agree, this is the least worked out area to me. Does it make sense to have an editable mode overall, or by section. I’m asking because I imagine there will be non-editable information, such as a license. On another note, I don’t see any conflicts in the work @SylvainCorlay shared, either. I think having that quick and abbreviated list view in the side bar is one of the first things I’d like to see added, while the main document area stays more open as a space to make larger changes like what was shown above. I look forward to seeing the features in gator in the future because they sound super helpful! My next goal is update mockups based on this feedback and include more interactions like listed above (editing, installing and uninstalling, so on). |
Thanks @isabela-pf I'll wait for the new mock-ups. It helps a lot to discuss with those supports.
I don't a better idea - so let's try like that.
For the other side panel of JupyterLab, the main widgets are usually opened from action on list items or context menus. So I think the patterns of using double-click, context menu,... would be enough to trigger the detail views. |
So I’ve been scrambling to get some ideas completed for a few different discussions happening above. I have a few goals here, so I’m going to break them into a few comments so I can get them to you faster. First, here’s an updated version of the last set of mockups addressing @fcollonval’s feedback. I figured it’s easiest to compare that way. Selected pieces from that prototype:
For reference, here’s my rough mockup changelog:
One piece of feedback from @fcollonval that I didn’t follow was making the box icon in the path at the top of the sidebar match the environment manager in use. I tried it, but am hesitant to have a UI landmark like that change. It also relies on users recognizing the logos, and at a quite small size.I might be able to be convinced, otherwise, though. I'm experimenting more with creating new environments and installing new packages (two seperate actions, but a similar experience in terms of the idea of adding something new). There are a lot of ways to potentially represent this, so I'm trying to write up a helpful description now. |
Here’s some proposed flows for adding items, specifically creating new environments and installing packages. Some notes:
Option 1Sidebar New environmentThis version creates a new environment based on where the user currently has navigated. Description and specification (to make an environment immediately ready to go) are optional. Install packagePackage installation seems to need even less information, so it fits nicely in the sidebar. Package name and version will similarly trigger the install of a package based on the environment the user has navigated to. The package version will default to the most recent one once a package is selected. To be clear, I think that package name should kind of fuzzy-search for package names once users start typing. We don't want to rely on people remembering or accurately typing package names every time. Option 2The main area These options take advantage of the larger space of the main area to have more detailed options on adding content. New environmentThis has a lot in common with its Option 1 equivalent. This time, users can create the new environment anywhere and have several options for creating a complete environment from other info (I know that these features don't exist yet; I wanted to show off the pros and cons of having more space regardless). It's split into Required and Optional for clarity since I think this option could be overwhelming. I also considered making this collapsible to hide Optional if users want (and so the Create button isn't as far down on the screen) Install packageThe biggest change for package installation I think this larger area works well for queuing up several packages at once. I don't know if this is useful at all, so feedback there would be helpful Option 3Sidebar These options are the shortest path to adding content and behave like the file systems of similar IDEs. New environmentBased on where the user has navigated, the Because I'm not sure if this is possible, I do have an idea for another way to handle this flow if more information than environment name is needed. Install packageJust like environment creation, this installs a package in the place a user has navigated. As mentioned in prior versions, I still think this needs some kind of check for spelling/if the package exists as well as defaulting the version the the latest version of the chosen package. Next up is removing environments and uninstalling packages. I'll be back with more info soon! |
Thanks @isabela-pf for the updated design.
This looks nice 👍
One minor question on the context menu, should the I would bring the
I like them. Minor comment, it will be nice to get a visual indicator that updates are available for an environment or a package.
I'm fine with the current proposition as the information is in the breadcrumb. |
Indeed they will.
I like the side bar approach (option 1) better. The fast approach (option 3) is good for package but too simple for environment. The main area proposal (option 2) has some advantages in term of verbosity. But I find the namespace / environment selection a bit redundant with the side bar. Regarding the ability of stacking multiple changes, it usually happen when creating an environment or when opening a file from somebody else. So if the specification are well defined, the first case can be covered most of the time. Then usually people add package one at a time when looking at some tutorial or help. |
@fcollonval thanks for the replies above! I'll need to get back to them in my next step of mocking up all the changes we've made at once for easier review. For now, here's Deleting environments/ uninstalling packagesDeleting environments and uninstalling packages seems like a straightforward enough, but I still have a few questions worth resolving. These mockups show deleting environments as the example, but the pattern should match for uninstalling packages since they are both removals. Ideal experienceThe main expectation users will have when deleting/uninstalling something is for it to be removed from relevant lists and no longer usable. Maybe it seems obvious, but I think it’s worth noting this is the ideal. Screen.Recording.2021-11-16.at.6.16.16.AM.mov(Video description: The proposed Gator environment listing in the JupyterLab side bar with an environment selected. It shows the context menu, then deletes the environment with the button at the top of the sidebar. The environment is no longer listed. There is no sound.) The main question is if/how meeting this ideal expectation is possible. I’ve heard that in Conda Store that making any changes, including deletion/uninstallation, initiates changes that may take some time to run. I would guess that other environment managers could have similar delays between the request and the actual deletion. Is it possible to remove the item from the listing immediately even if it isn’t fully deleted yet in all the environment managers used in Gator? If it is, would there be any issues that could be caused by users not seeing that listing when it’s still at least partially there (for example an error in the deleting process)? If items can’t be deleted right awayIn case it isn’t possible (or could cause serious user problems) to have listed items removed from their lists when deleted/uninstalled, here are two ideas about feedback we could give users so that they understand why their expectation isn’t being met. To be clear, I’d prefer to have none of these options in Gator if we don’t need them. Option 1Just tell users that there is a delay. We could have a dialog that mentions the delay between making deletion/uninstallation requests and having them reflected (with a nifty Don’t show this message again checkbox). I am always hesitant about adding dialogs, but since this would be information users need immediately to avoid confusion I think it’s a reasonable approach. Option 2Change the look of the list item pending removal and include a tool tip that provides the message about delay on hover. In this case, I replaced the environment icon with an asterisk. This solution might also be helpful if there is a reason that removing an item from its list before its fully deleted could cause problems. As always, feedback is welcome! It would be especially helpful to know if the ideal experience seems feasible or if I need to work on polishing these backup ideas to accommodate delays. Thanks! |
Hey @isabela-pf Thanks for the new sketch. We could hide the environment/package requested for deletion. But as you said, some points to take in mind:
For all the reasons mentioned above (that actually apply to most actions like creation, update, modification), the current extension is showing a toast notification informing the user something is going on. Regarding the options, you are proposing:
We could also display the item in disabled state (in addition to some change indicator) as the user should not be able to carry out any new action on that particular item. |
Hi there! I’m part of a team looking to integrate conda-store into gator (thanks to @fcollonval for meeting with us). I would like to start this issue as a place to propose some UX and UI changes to make gator more user-friendly no matter what environment management is being used.
I also have very little experience with designing for environments, so I know there’s a lot of things I don’t know in this area. Feel free to let me know if you think something I’ve proposed doesn’t actually make sense or if I’m missing an important feature.
Some goals
If you have thoughts on other goals to keep in mind, let me know.
Proposal
This is still pretty rough (and mostly without color), but I’d rather share ideas and get feedback early!
So far, I’ve been working on the main organization of content and not the more specific interactions (like no mockups for
install new package
yet). Once we are okay with an idea for organizing info, I plan to jump into those features.One of the problems I heard about early on was trying to convey a lot of info in not a lot of space while being clear the relationship between the layers (like which packages are in which environment). In many ways, this is similar to what the file browser does. So this proposal extends that behavior.
It also makes it so that much of the information fits in the sidebar and users don’t have to use the main document area unless they want to.
The basic list of environments in the sidebar:
An environment with expanded information in the main document area:
And context menus show the same basic interactions as in the top of the sidebar. (Though I'm not sure what else should go here.)
This is also the same structure for packages within an environment.
Try it out
I think the interactions can be most easily seen in this simple prototype. ✨
Problems
Thanks in advance for the feedback!
The text was updated successfully, but these errors were encountered: