-
Notifications
You must be signed in to change notification settings - Fork 391
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
Dependencies Node UX improvements #4362
Comments
I like the spinner. Nodes will not be expandable anyway if there no child items in the snapshot. |
One note for @davkean's sake - VS also has the concept of "Extension SDKs". If any of those are at play, there should also be an "Extension SDKs" root node. |
I've seen a spinner for folders within projects, though don't know how that happens yet. |
What is the semantic difference that's worth highlighting in this case between Framework References and Shared Frameworks? I'd argue they're the same thing when it comes to visualizing them here. Also, can we make the nodes interactive at all, e.g. supporting deletion, selection, property editing via the grid, etc. |
|
In this case, I'm calling for Shared Framework and Framework Reference to be distinct sub-nodes. If a given project type gets its references from only one or the other, we should only show that sub-node unless one is added. Otherwise, both would have the same tree view for displaying their contents.
I think that's a separate issue that I'll have to think about. Having a way to manage these various kinds of dependencies beyond the project file (and in NuGet's case, the NuGet UI) may be helpful. What sorts of items would you feel are good for CRUD operations? |
@cartermp still not really following. What is the difference? A FrameworkReference is a reference to a shared framework, so I'm not sure why they'd be separate at all. |
Gotcha. Sorry, just not caught up on what FrameworkReference is yet. So it seems like we'd have just one section and name it either "Framework References" or "Shared Frameworks". Which is the nomenclature we wish to push moving forward? |
I think it's fine to just split the difference and say "Frameworks" for now. We can adjust as necessary. |
I would consider an alternative design; the spinner on the outer node makes entire tree "feel slow" even though I may never open the dependencies node. I'd consider a design where we only show a spinner on the individual references items as you expand them. They might not have children, but it's a pattern that we use elsewhere, including Explorer, Server Explorer and SQL Server Object Explorer. These all add a "fake" sub node, and remove it when the data is loaded and there is no children. This would fall in line with the work we plan on doing to delay load the data unless someone expands them. |
I can see why people would have a "feel slow" impression, since spinner means "Loading" in general. It can be something else not exactly that spinner. Though I believe that putting "spinners" on lower level nodes alone (without top level Dependencies node) is kind of useless since vast majority of users have their Dependencies node closed. When you compare this behavior to other things like Server Explorer etc, existing logic is not necessarily better. In fact it can not even be compared with Solution Explorer, since in Server Explorer actionable nodes are lower level nodes them selves, i.e. user would want to keep root node open; when in Solution Explorer actionable nodes are files and Dependencies is (almost) always closed. I know there are many opinions and we did have lots of conversations years before for Dnx and for this existing Dependencies node, thus I think we need to define the end goals for this redesign and try to adjust all proposals so they fit those goals: a) there should be a way to indicate that something is wrong in Dependencies, it should be easily accessible and understandable to users at all times without opening Dependencies root node and without keeping Error List opened Those points above are coming from previous discussions. Also i would include NuGet team here since Restore plays pretty big role in Dependencies state changes and still missing good progress indication. |
We should consider scheduling a UX review to talk about this. @jjmew do you want to set that up? |
Yes, I can do that. Additionally I think that we should agree on what metrics we are trying to move. Then we can run a experiment putting the loading spinner in different levels (or even not having it). @cartermp @Pilchie what is the time frame that we have in mind to have a UX review? |
Not sure if there's a particular metric established so far, but my thoughts are: For the redesign of SDK --> References and not duplicating stuff in the NuGet tab...
For the loading UX...
Though I'm not really convinced this would help move the needle on having a faster time to interaction, since user studies I've conducted so far indicate that people aren't paying too much attention to the node. |
If it starts animating, they will. @jjmew is there a way to factor the perception of performance into measurable metrics in such an experiment? There's a lot of psychology in user satisfaction around performance. For a good example of what I'm talking about, see the recent trend of using skeleton screens in place of wait spinners. There's a lot the user can still do while dependencies are loading. Showing potentially many spinners on screen would, I expect, increase the perception of slowness (and potentially actually increase the actual slowness due to animation). I wonder if we can measure this. |
I think we can schedule a UX review sometime in January, I don't think it's urgent. For metrics, I think "Time to first interaction" is probably the best one. Anecdotally, I know a bunch of people wait until the see the exclamation going away before doing anything. @davidfowl talks about it all the time. |
Animation is unnecessary it indeed could be annoying, however state indication is. We can get other icons or small adornment next to the node instead of spinner , anything else... |
The background task center is where we putting background progress of tasks and the incremental state of project load. When we delay load data from top level nodes downwards, we are going to have to put a spinner on those nodes anyway. |
The other thing, it's not clear what this "progress state" of the node is actually tracking:
If it's only tracking "when does the node have up-to-date data", we may as well only show the progress when the user digs into the data. |
Some previous discussion: #2248 |
Yes, there are ways to extrapolate if perception has change. I do want to call out that If perception changes but behavior doesn't then it wasn't that helpful. At the end of the day we want to motivate behaviors. For example having spend less time waiting before their first action. We can do a brainstorm to think about metrics. |
sounds good, I will schedule it. |
@cartermp I've broken the various actionable ideas here out into their own issues and converted this into a tracking issue. Please take a peek. |
@drewnoakes I like it! |
Closing this as we have issues for the ideas presented here. |
This is a tracking issue for features related to the UX of the dependencies node:
The text was updated successfully, but these errors were encountered: