microsoft/vscode

Add extension deprecation and redirection

Tyriar opened this issue Β· 38 comments

Allow extensions to specify they are deprecated in their package.json, with an optional alternative extension(s) field. This setting can inform the user of the deprecation in-product, and if specified, potentially update to the new extension automatically without informing of the deprecation?

Related: #3670

Any progress? I'd like to rename my extension be5invis.julia into be5invis.syntax-julia, but the old one cannot be removed.

cc @egamma This could be an alternative for renaming.

@joaomoreno yes, but this would still have the statistics issue in that the download count is now accounted to 2 extensions. For a not yet popular extension this is not an issue, but for a popular one it is. So I still think we need support for this from the market place.

@modigrv Is there any concept of deprecation?

Forwarded the request to Marketplace PM

@joaomoreno We don't have the concept of deprecation yet in the Marketplace. But we do intend to support it soon. The fact the extension is deprecated will be added to the extension properties. And the current plan is to not show deprecated extensions on the marketplace in searches etc, to prevent future installs. Will work with Wade on how to handle it on the client side.

@waderyan @hamenon any movement here?

There has been some work here. #10551

Oh cool, is it planned to look into a deprecated extension automatically installing another extension that supersedes it? These are the use cases I'm aware of:

  • Abandoning an extension (could also use vsce unpublish?)
  • An extension is deprecated in favor of another publisher's (chrisdias.vscodeEditorConfig -> EditorConfig.EditorConfig)
  • An extension being renamed within the same publisher (be5invis.julia -> be5invis.syntax-julia)

It's not clear after skimming #10551 whether users are informed about the deprecation of they're just hidden from search.

We punted on the use cases you described for now. We had to get the filter in for the search query, but should look at solving the cases you describe.

Hello, been some time, just wanted to check what is the status of this if anyone is kind enough to give some feedback? Thanks!

much needed with the number of deprecated extensions in vscode marketplace growing and getting in the way of search and filtering.

We need 20 upvotes for this issue to get added to the backlog and be revisited by the vscode team.

P.S.: @misolori I like the proposed UX in #10551

@RandomFractals seems like more then 20 upvotes already for sometime it seems but nth much from core team, this would be really good to have!

@Jaimeloeuf well, I did my job rallying the ext. dev troops in dev community slack to get us over 20 upvotes for this to be added to backlog.

The rest is up to @eamodio & vscode team to decide on when this gets implemented and released.

There are a lot of 'deprecated' extensions in vs marketplace that just get in a way of search & other things just confusing devs trying to find good extensions to use.

Man do we really need this.

I need to move an old extension to a new organisation (as the former maintainer left and want to use a new name/user). But sadly I can’t do it, looks like I’m going to have to duplicate it. The issue with that is the old one will still be top for probably yearsπŸ™

It also means the marketplace is a mess.

i filled out a survey on the marketplace last year and this was my top concern, this issue also has a lot of votes.

CC @chgill-MSFT

FYI @isidorn, this would help get rid of the extensions with titles containing "deprecated" in searches.

Thanks for the feedback everyone!

Right now the Marketplace team is engaged in an effort to completely rebuild the backend infrastructure. This will entail positive changes to organization management, extension ownership, deprecation experiences, and more.

While it's difficult to give a firm delivery date - we can expect the ability to deprecate extensions will be an outcome of this effort in the near future.

To get an idea of how this might look in the future, you can see the nuget.org package deprecation docs.

To build on what @Tyriar said, the goal of deprecation would be the following:

  1. Make it clear to users which packages are up-to-date and actively maintained
  2. Enable publishers to suggest alterative extensions

At this time, it's still unclear how deprecation may factor into search ranking or how indicators may appear in the VS Code client - however I'll be happy to use this thread to review ideas and get community feedback πŸ™‚

Thanks for jumping in @chgill-MSFT

Upstream issue microsoft/vsmarketplace#23
Though this one has more details. fyi @prashantvc

image

@chgill-MSFT FYI a common reason I deprecate extensions is because the functionality becomes built into core like with https://marketplace.visualstudio.com/items?itemName=Tyriar.terminal-tabs

@Tyriar just catching up here. Where is that UI from? Is that available in vs marketplace now when updating an extension, or did you have to add the (deprecated) part to your extension name and republish it?

As @chgill-MSFT nicely explained above the Marketplace support for deprecated extensions will not come soon. Until this is available we have decided that the information for what extension are deprecated will come internally from VS Code. Downside of this approach is that those extensions will not get rendered as deprecated by the Marketplace, upside is that all the UX work we do on the VS Code side will be reused once Marketplace starts supporting this.

So assigning to April for an initial exploration. Based on how this goes, we will now more when this lands.

In the meantime, if you have any extensions that are deprecated feel free to share them in this issue.

Hi @isidorn, could you clarify the scope of what you're planning to achieve internally in VSCode? Are you just focusing on showing that something is deprecated, or also handling redirection to another extension too? How do you plan to "gain" this information? is this something maintainers will need to input? or you will be infering it somehow.

In the meantime, if you have any extensions that are deprecated feel free to share them in this issue.

jpoissonnier.vscode-styled-components is deprecated and should now be styled-components.vscode-styled-components. It's been a hassle migrating our users. We still need to tell users who raise issues that they're using the old version.

Downside of this approach is that those extensions will not get rendered as deprecated by the Marketplace

That I can live with, i think a majority of users search for extensions within VSCode itself.

@jasonwilliams thanks for raising this great questions. We are thinking there are two cases:

  • Extension is deprecated and there is an alternative. We will look into guiding the user to the alternative extension
  • Extension is deprecated but there is no alternative. Then we should just make sure the user is aware that the extension is no longer maintained

We will gain this information by working with extension authors so they let us know which extensions are deprecated.
Also I plan to manually go through a list of extensions that have not been updated in last 2 years and reaching out to their authors. If one of those extensions truly appears deprecated and the authors does not reply in a couple of weeks we might go ahead and mark it as deprecated on our own.

Hope that makes sense. I have added your extension to our list.

I don't like this somewhat aggressive action idea, but I think the rest sounds good ...

If one of those extensions truly appears deprecated and the authors does not reply in a couple of weeks we might go ahead and mark it as deprecated on our own.

@RandomFractals thanks for sharing your concern, we will make sure to give extension authors enough time to reply. Possibly even a whole month.
We are doing this because a lot of extensions are in a really abandoned state = so the extension authors are no longer checking their email associated with the extension. So if we had to wait on confirmation of extension authors a lot of deprecated extensions we could not mark as such.
We will of course use this approach responsibly.

In the meantime, if you have any extensions that are deprecated feel free to share them in this issue.

zenclabs.reactpreview is deprecated in favour of zenclabs.previewjs :) Thanks!

Initial exploration and design has been done. Moving to next milestone when we will start looking into the implementation on the VS Code side.

Thanks to the great work done by @sandy081 this is now done.

Try it out in VS Code insiders and let us know what you think.
Also please comment here if there are any deprecated extensions which we did not mark as deprecated yet. Thanks!

I still plan to update our extension author docs to explain extension deprecation.

Here's an example of how this looks like:

Screenshot 2022-05-23 at 14 02 03

Screenshot 2022-05-23 at 14 05 29

@Isidon isidorn small, drive-by nit: that message at the bottom should probably say "Use the Live Preview extension instead.".

@lnicola thanks! I am not 100% convinced - but I am not a native English speaker :)
Maybe "Use Live Preview instead". So we remove "extension" part

@sandy081 what do you think?

@isidorn the current sentence sounds wrong to me but either proposal sounds natural. I'd go with Use Live Preview instead since "extension" is mentioned in the previous sentence already.

mjbvz commented

@isidorn Are there any plans to (gently) alert users who already have a deprecated extension installed? Right now I find it easy to miss unless you are explicitly looking for it

@mjbvz yes, more details here #150011
@Tyriar thanks, I see Sandy has pushed a change with your proposal.

@mjbvz & @isidorn: perhaps adding the deprecated extensions list to the welcome/getting started view when vscode IDE is updated could be a good solution to highlight deprecated extensions with alternatives to install and use instead, or migrate to via the new migrate feature you proposed in #150011

@RandomFractals thanks for the idea. Something to consider.
Though right now we are leaning towards having everything in the extensions viewlet / extension details scope.

@isidorn my suggestion was mainly for the scenario @mjbvz described as many devs, us included, have and use many extensions and unless we go to extension view to review latest changes & updates, finding good up to date alternatives will be hidden. Could be another feature as you iterate on this ext. deprecation implementation later. I like the described experience so far. Thanks for taking it on!