-
Notifications
You must be signed in to change notification settings - Fork 29.4k
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
Need better extension management UI #637
Comments
Let me present what I call the Global Extensions Viewlet solution. The idea is to use the sidebar area to manage your extensions.
I like this because it is minimal, practical and solves many of the currently existing issues. It can also be implemented on top of our existing infrastructure. The main concerns surrounding this is the breakage of the parent-child hierarchy we have with viewlets. You click a file in the parent Explorer view and it opens an editor in the child view. All viewlets work that way. The concern is that this solution would be confusing since clicking an extension would not open any editor view. IMO this can be solved by displaying this sidebar in a different style: render it with a different background color for example. This would provide the user some indication that this pane is somehow different and thus behaves differently. |
Any reason in particular that the extension's README would not display in the editor view on click? There is a lot of good content/images in many extensions that will barely fix in the sidebar. |
Looks cool! Don't you already have an extension's README in its Marketplace metadata? Seems like you could just automatically show the README for any of the selected extensions, but maybe I'm missing something there. |
That would go into the same problem that we have for settings. Doing so would take an editor away, and you'd have to manually restore the state after you're done with extensions. It's sad that it happens with configuration settings today and we definitely don't want to go the same way with this. |
I'd go a step further and not allow editors or (debug) output windows while managing extensions (or for the future managing aspect of the product, like settings, keybinding etc.) My reasoning is that managing the product and coding (typing, searching, debugging) are two fundamentally different tasks that deserve separation. Our workbench is optimised for the For the The interaction would be like this:
|
+1, looks great! What tool are you guys using for these mockups? |
Credits to @joaomoreno for finding: https://moqups.com/ |
I like the idea of having a higher level affordance that you can use to switch between coding and management. We might want to consider positioning the affordance at the top of the sidebar though for a couple of reasons:
I don't have any firm ideas right now about what this might look like though. Another thing we might consider too would be if we could allow the user to work with both views simultaneously, similar to how browser debugger tools can be snapped inside the browser or as a separate window. Doing so would allow the user to see the effects of changing any settings or installing an extension in the main coding window. Without this it could be a little laborious to switch to management mode, install an extension or change some setting , go back to coding mode, see if the extension or setting does what was expected, switch back to management mode, find another extension or setting, switch back to coding mode etc. I know that this goes against the principle of not introducing any new UI but from a UX point of view I think this potentially provides a smoother workflow. |
I liked Bracket's extensions UX, they have a button on the top-right which opens up a modal dialog with extension/theme search. Regardless of the direction we go, the presence of a button on the UI will make extensions much more convenient and accessible. |
These are some excellent ideas. I think making management (settings, themes and extensions) as a mode of the product is a wise choice, because it would allow you to leave your editors all intact. It also gives us more real estate and a neater, more consistent place to render these views. |
+1 for having a UI that is not interfering with my coding workflow. for that we should make it very clear (in terms of UX) that the UI for managing extensions, settings, etc. is visually looking different from our workbench. my fear is that once you go into the management UX, it looks too similar to the actual coding UX. I am fine reusing the concepts of sidebar, viewlet and editor (which is really just a master-detail thing) but imho it should really have a look that you can separate the one from the other. I like Johs design, but I wonder if this one should pop up as overlay over the workbench so that you can see it is somewhat modal or even be in a separate window to make clear that you are not interfering with the coding workflow. |
if the extension itself has some settings, how about providing GUI and interfaces for these ext-settings :) |
Joao and I chatted about this a little today. The key things I propose here are:
I do think my mock up is a little 'over designed' we don't need all those controls all over it. And it's something we could grow into vs. start with. It's also not nearly flat enough i.e. it would look out of place in VS Code right now. So think of it as components and a suggested direction. I'm not too much in favor of a modal experience as I don't perceive any of the UI actions as blocking - so I'd love to leave the interaction mode free. |
@seanmcbreen I'm not sure if modal was the right word to describe it. Modal tends to mean, like you said, blocking further interactivity until an action has been taken by a user. What I see this as is a management view, not a mode. For instance, you could go back and forth between Editing views (including Explorer, Git and Debug) and the Management view via the action bar on the left and pickup right where you left off on each without losing any of your context or activity in the views. Utilizing a "view" approach would allow us to take up the full real estate of the window, which allows us to give richer experience at discovering and managing extensions. It also avoids editor management clutter by repurposing editors, as is used in Atom. @stevencl what would you think of launching this management experience in a new window via Ctrl + Shift + N to do a side by side experience? People with two monitors could easily make changes this way. Or, perhaps this is a good opportunity for us to introduce the ability to tear off windows. Also, @jrieken, I'm not sure I like replacing buttons in the activity bar, since it might be confusing where they went and it adds another level of interaction to get back to certain parts of the Editing views. Rather, I would suggest simply adding an additional action button, and making that action button take us to a view that takes the whole window as I've described earlier. Getting back to previous Editing views would then just be a click away, |
I agree with @stevencl. Can we discuss the relevant user scenarios? Extension life cycle - User Stories
In my mind each part of the above life cycle is important and should be considered in the design. Do you think these are relevant and should be considered? What would you change? Is there any user scenario you would add? Many of the UI mockups seem to be addressing these stories and I feel good about the direction we are going. |
Personally I dislike the idea of having a UI management for extensions, I dislike it in Visual Studio and if anything I'd argue that this is nothing but annoyance! Visual Studio has grown to be a stack of interfaces that I no longer use because I do everything in the command line much faster and I have a better experience with it than clicking on things. I really hope that the Visual Studio team would realize one day that there should be one way to install extensions, install packages, install anything and it's the Package Manager Console! that's how I'd really like to do things. Now, to Visual Studio Code what I'd really want to have is a Console that I can use to install extensions, install nuget packages, install npm packages or another kind of packages and the only thing it needs is Intellisense for packages but yeah definitely unified experience for installing packages. Instead of tackling specific problems, I'd argue that a much better design is to let programmers handle it and what I mean by that is creating a Console that is extensible and is designed for installing packages, whatever the package might be, VSCode extensions, nuget, bower, npm, you name it. Just to be clear, I mostly suggest the experience of the Package Manager Console available in Visual Stuidio to Visual Studio Code but taking it few steps farther. |
@Tyriar thanks! ;) |
The extension installation shouldn't have built-in UI like this, its defeats the purpose of Visual Studio Code imho. Instead i'd rather just have [Read More] [Install / Uninstall] ..instead of Cloud-down icon. If the route is to explode this into UI first principles then in reality its just back to Visual Studio we all go? The target audience is developers so their insights into command line control / development is potentially higher from a discoverability standpoint plus with supportive loop-backs to the vscode extension page(s) online, one has the ability to unpack "what is this extension?" there vs trying to mirror that experience inline. Key factors.
Imho, it's fine, just nuke the icon given its reliance of symbology, size and colour have a negative effect. Instead, continue with the wording but remove License and fold it into [ReadMe] or [More.]. and keep the options to two. Isolating the [Install] into better grouping ie (solid fill while [Read Me] / [More] has wire frame bordering) also imho reduces cognitive load. |
Although I really like the willingness to improve the user experience, I have a few concerns I would like to put out there. There is this one thing I really dislike about atom - I have to leave my keyboard and use my mouse to install extensions. It's only a minute worth of time, but the experience is very jarring, and I have found myself trying to avoid installing packages until absolutely necessary, or trying out new themes at all. This was never the case with SublimeText, which in spite of having a limited UI around extension discovery/installation, makes the experience of using new packages much faster. Atom has it's I have another flicker of an idea, which largely keeps the same flow as now, but also makes it more easier to read the docs and manage extensions: Basically, a developer presses Maybe another action Ctrl+Enter can be added to do a Quick Install (bypassing the above-mentioned flow). |
I definitely prefer @jrieken's mock-up (and it seems like others do as well). You could add Installed/Recommended/Marketplace tabs under the search field, and do a fancy animation of the icons when switching between coding and management mode. |
We'd like to do a round of 1:1 interviews to get more feedback on your thoughts about the extension UI and UX. If you can spare 30 minutes of your time, please pick a time slot and I will set up a call with you: https://calendly.com/stevencl/vs-code-extensions/05-03-2016 |
If you are interested in giving us some feedback about the extensions UI and UX, we've opened up some more time slots: https://calendly.com/stevencl/vs-code-extensions/05-03-2016 |
I like @kumarharsh and @jrieken 's mockup. Using the sidebar as a result list / popular extensions list (maybe categories that can be collapsed) and showing the readme on the right like an open file while clicking through the results. It should be keyboard accessable (shortcut for opening the extensions area, navigate with arrow keys, install with enter) and should not be a blocking modal (Brackets 👎 ). Extensions should be able to install in the background (and please stop prompting to restart Code even if there are other extensions still installing). |
Is there an "update all" button? I noticed this is missing in the pre-1.2 release and would be quite good to have. There is "list all outdated" but not "update all outdated". |
@joaomoreno did we end up getting an "update all" button? |
@Stanzilla see #8124, it's marked for July (v1.4) |
^Thank you |
The quick open UI isn't working fully well.
We need to come up with a better UI story that can
The text was updated successfully, but these errors were encountered: