Skip to content

Rely on UUIDs for extension identification #34812

@joaomoreno

Description

@joaomoreno

Extension identification is essential to the update mechanism. It is through an identifier that we're able to match several extension versions against one another.

We are currently using the publisher.name tuple as an identifier. This is very beneficial in some scenarios such as VSIX side-loading, in which updates would still work seamlessly.

The Marketplace team intends to provide publisher/extension renames. This will break our assumptions that the publisher.name tuple is valid during its entire lifecycle. So we must only rely on the marketplace UUID returned from the Marketplace, which will stay consistent in renaming situations.

This needs to be adopted in a few places:

  • We should store the marketplace UUID into the extension's manifest, as soon as we are aware of it. Installing extensions from the Marketplace should immediately store that UUID.
  • Internally, extension matching should always be based on UUID. This should be the stored marketplace UUID or, in case it is nonexistent, the tuple publisher.name.
  • Our outdated mechanism currently prevents the loading of and deletes older versions of an extension, if multiple versions are installed into the user's extensions folder.
  • At startup, whenever an installed extension is found without UUID, we should attempt to match it against a marketplace extension and, if matched, store that UUID.
  • At VSIX installation time, we should attempt to match the extension against a marketplace extension and, if installed and matched, store that UUID.

cc @sandy081

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions