-
Notifications
You must be signed in to change notification settings - Fork 30.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
Install Another Version action should show all versions for pre-release extension and only released versions for released extension version #142040
Comments
If a user experiences an issue with a prerelease build, they may want to manually switch to the immediately previous build, which might be a release build. Currently, that release build is not immediately obvious to them, and they are likely to switch to the previous insiders build instead, which may predate the latest release build. |
@isidorn @sandy081 Our team has been discussing the prerelease extension experience in VS Code's marketplace UI and have questions and some feedback regarding the current design.
|
@sean-mcmanus @Colengms thank you for your feedback. Let me respond in order:
|
@isidorn For our extension, our releases will almost always have a higher version than the previous pre-release version, except in the very rare case where we have to ship a "patch" fix release after a higher versioned Pre-Release has already been released. |
@isidorn it is item 3 that we have issues with. We feel that it should be unnecessary to post a pre-release that is identical to the latest stable release. This doubles the work required by extension publishers for every stable release if folks subscribed to pre-releases don't get the highest available version installed. They should always be on the newest version whether is it a stable or pre-release. When they want to downgrade, all published versions should be available to choose from. The way we see it, anyone who opts in to pre-releases should basically see all versions all the time. There are four states a user can be in at any time and users can transition between states by upgrading to latest/downgrading to specific builds or switching to and from the pre-release channel:
|
@isidorn Also, after we released identical 1.8.2/1.8.3 (pre-release) we've gotten a significant amount of "noise" along the lines of "it also repros in 1.8.3" because users expect 1.8.3 to be different and possibly have the fix for the bug they're hitting in 1.8.2. We'd prefer to avoid this "noise", and avoid wasting user's time upgrading and testing an identical version when it's unnecessary. For example, microsoft/vscode-cpptools#8760 (comment) |
@bobbrow let me clarify the current behavior, there seems to be a misunderstanding.
As for your table I am sure the on latest current behaviour is as you describe. For not on latest I will let @sandy081 comment. Long story short: I think you are good. You do not need to release subsequent pre-release versions if you do not mind your pre-release users shortly being on a release version of the extension. Our recommendation to release subsequent pre-release version is only for those extensions that would like to avoid their pre-release users getting the stable version - which is not the case for you it seems. |
@isidorn I think there is still a misunderstanding. We already understood the behavior in your "Tom" scenario in regards to how updating will occur, because I believe Colen filed a bug directly on that which got fixed. Our concern is about the "downgrade" options that are available to Tom after upgrading to the release version 1.7.3 -- we want the "previous version" to always appear in the downgrade list, which doesn't happen unless we ship identical pre-release versions for every release version. |
@sean-mcmanus I think we're all back on the same page. The ability for subscribers of pre-releases to see all versions when they want to downgrade is the subject of this issue. Instead of seeing "Install Another Pre-Release Version" in the context menu, it should just be "Install Another Version" and all available releases should be offered. @isidorn seems to agree in bullet number one of his first comment. There was some side discussion about the UX and whether it is confusing for folks "subscribed" to pre-releases to be offered stable releases (@Colengms's last bullet). If we want to discuss that further, I think it would be best to open another issue about it. |
Apologies for not commenting on this until now. Thanks @isidorn for taking the 🔥 and answering the questions. I completely agree with @sean-mcmanus @bobbrow that the root cause or the single core problem you are seeing is with Downgrading. I am summarizing the points and actions to be taken here:
@bobbrow - Your comment here very well documented what is needed to be supported that aligns exactly with my above points. In short, we always install/update to latest version of release/pre-release depending on what user has opted to. It is not mandatory to have a newest pre-release version always (which I also mentioned in above points) and it is up to the extension. In addition to what we supported now, supporting 1 & 2 points will fulfill the table you mentioned. Actions Required: Points 1 & 2. Updating the issue summary accordingly. |
@sandy081 regarding point 1, I think a user who has opted in to pre-release should get "Install Another Version" and be offered both kinds (pre-release and ordinary ones), but a user who hasn't switched to pre-release should only be offered ordinary releases (i.e. not shown the pre-releases). Indeed, I think that is what @alexr00 originally requested in #140262 |
@gjsjohnmurray You are 💯 right. I was in the impression that I was supporting the behavior requested here before #140262 was implemented. And with #140262 I thought @alexr00 is requesting to provide an option to filter pre-release versions from the versions list when user clicks on I would be implementing the following requested behavior for I think a user who has opted in to pre-release should get "Install Another Version" and be offered both kinds (pre-release and ordinary ones), but a user who hasn't switched to pre-release should only be offered ordinary releases (i.e. not shown the pre-releases) @alexr00 Please confirm if your ask in #140262 is also same as above? |
Ah -- our extension only releases a small number (like 5 at most) of pre-releases between a release version. The problem of having a hard time finding the release version in a giant list of pre-release versions could maybe have some alternative fix for the subset of users who ship a lot of pre-release versions. |
Yes, I would still be very happy with this. My issue was primarily around stable users seeing tons of pre-release builds. That is resolved by your original change @sandy081 and would still be resolved by the proposed change. I do not have strong feelings either way for whether pre-release users see stable builds. |
At present, downgrading to any release version will opt out of pre-release and user has to explicitly switch to pre-release version to opt in again. IMO this makes sense because, by choosing to install a release version, user has opted out and user can always use the action Switch to Pre-Release version to opt in back. I also think that the current UI represents this flow very well and is simpler to understand. May I know the reason of not opting out when installing an older release version? I think this makes UI more complicated for the user to understand. Please assume that this flow is considering that |
@sandy081 Consider this...
Our team wants "release" vsix's to be fully usable by "pre-release" and "release" users without causing any opting out. From the user's perspective, they're just downgrading to the previous verson they were using (while in "pre-release mode")...same as when the user doesn't get opted-out of pre-releases when they're auto-upgraded to a release version. |
What is the UI you are expecting after downgrading to 1.8.4 release version? Generally, when you downgrade a version we show Update to <latest_version> action. Are you expecting the same action in this case? Say Update to 1.8.3 ? |
If the user has opted into pre-releases, we want them to see "Update to 1.9.0" or "Update to 1.9.1" (when that is released), regardless of if they downgraded to 1.8.4 (release) or a pre-release (1.8.3 or 1.8.5). |
But as a user I would argue that if I switch to a release version either using Switch to Release Version action or through Install Another Version... action, I choose to be on released versions. I do not want this update action in my face that takes me back to pre-release. I would use Switch to Pre-Release Version action to go back to pre-release again if wanted. I think the problem we are trying to solve here is following: I am on a pre-release and I see it is buggy, so I would like to go back to a release version (using any of the above actions). How does I know there is a new pre-release that is not buggy? I do not think showing the action Update to 1.9.0 or Update to 1.9.1 helps because I do not remember versions. IMO this needs some UX thinking and user feedback. |
Our interactions with customers on GitHub tell us that our users do remember which versions are the bad versions that impact their work. I think the sticking point here is the semantics of "I'm a pre-release user" vs "I'm a stable user." I don't think we should be using these two buckets. The buckets we've defined for the C++ extension are "I can see all available releases" vs "I only want to see stable releases". The difference is subtle. In the first case you could argue that the user only wants to see pre-releases, but I don't think they care if the latest is a "stable" vs a "pre-release". They just want to be on the latest version. And if the latest version has a regression that impacts their work, they downgrade until a new release comes out (pre-release or stable, it doesn't matter to them). We've been doing it this way for several years now and have not had any reports of confusion from our customers. So coming back to this:
Our "pre-release" customers don't care if the version they go back to is a stable or a release version. They just want to roll-back by one. And when the Extensions Panel offers them a new one, they can go try it out (again, they actually do remember the buggy version numbers). If rolling back by one takes them out of the "I want to see all releases" bucket just because the version they rolled back to happens to be a "stable" version, I think that is actually the more confusing behavior. |
@bobbrow Thanks for the detailed explanation and I see the validity of the use case. More importantly, it is helpful to know that c++ extension runs this model already and has user feedback. I already fixed the bucket that a pre-release user can see all available releases. As this issue is getting longer and has multiple topics, I would like to create a separate issue for retaining pre-release flag on downgrading and continue discussion there - #142659 Lets close this issue for fixing |
To verify:
|
Does this issue occur when all extensions are disabled?: Yes
Commit: 5554b12
Date: 2022-02-02T17:16:15.360Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.22000
Steps to Reproduce:
For example,
1.9.0 (insiders) ships with some regression, so a user wanting to downgrade to the latest version without the regression would want to downgrade to the previous release, which ideally would be 1.8.2 (non-Insiders), but due to this bug, they'd only be shown 1.8.1 (Insiders) unless we simultaneously published a 1.8.3 (insiders) that is identical to 1.8.2. We'd prefer users to not ever have to switch off the Pre-Release "channel" in order to get access to those versions, because that makes it harder for them to see when 1.9.1 (Insiders) is released (i.e. with the fix they want), once they switch to a non-Insiders -- to say it another way, we'd want Pre-Release users who switch to a non-Pre-Release version to still be counted as Pre-Release users, the same as if all our non-Pre-Release vsix's were also counted as Pre-Release.
The "reverse" scenario of showing the Insiders versions in the non-Insiders version selection list doesn't really matter to us either way.
The text was updated successfully, but these errors were encountered: