chocolatey-community / chocolatey-packages

Chocolatey Community Maintainers Team Packages - packages that are managed and maintained by core community team for community package repository (https://community.chocolatey.org/packages)
https://community.chocolatey.org/profiles/chocolatey-community
Apache License 2.0
448 stars 378 forks source link

(vscode-*) Split Visual Studio Code extension packages into package for latest and specific version #1230

Closed pascalberger closed 5 years ago

pascalberger commented 5 years ago

Expected Behavior

Package for Visual Studio Code extensions should be available in two versions: One which installs the latest version of the extension and lets Visual Studio Code to the update handling, and another one which installs a specific version.

Current Behavior

Currently the packages are installing the latest version, as this was the only possibility pre 0.30.0.

Possible Solution

For each Visual Studio Code extension package create a new package with -latest prefix (e.g. vscode-azurerm-tools-latest) which will install the latest version as the current package does.

Update the current package to install specific version.

Advantage of this approach would be to have clear packages afterwards. Drawback is that it will change behavior of existing packages and won't work for some packages yet, as the Visual Studio Code version number is lower than the current package version.

pascalberger commented 5 years ago

@AdmiringWorm @gep13 Opinions?

AdmiringWorm commented 5 years ago

IMO, I don't believe there is a need to have a package for specifically for latest version, IMO (and what I would do), is to only have the specific versions and put a dependency on the version of vscode the support was added in.

pascalberger commented 5 years ago

How should we handle the extensions which are still at version 0.x while the current manual package is already at 1.0?

AdmiringWorm commented 5 years ago

Unfortunately, they can't be handled with specific versions until they are above version 1.0. Unless we deprecate the package, and resubmit under a new name though. Which probably wouldn't make sense.

pascalberger commented 5 years ago

OK with this. I would suggest to wait with switch to specific versions until https://github.com/Microsoft/vscode/issues/63903 is fixed (targeted at February release)

AdmiringWorm commented 5 years ago

I'm actually considering a different option, which would allow us to start using specific versioning right away, and keeping backward compatibility with previous versions of vscode.

While it won't help the extensions we can't update yet, nor would it disable auto-update, but I still think it may be useful.

Would need to change the extension you submitted earlier though chocolatey-vscode.extension, and then depend on that one.

pascalberger commented 5 years ago

@AdmiringWorm You mean by extending the Install-VsCodeExtension function to detect the installed version of Visual Studio Code and either install latest version or specific version? Not sure if this makes sense or leads to more confusion for users

AdmiringWorm commented 5 years ago

That is actually what I was thinking of, don't really think it would lead to more confusion for users.

Most likely, most of them already have updated to a version that support specific versioning, those that haven't are most likely businesses I think.

AdmiringWorm commented 5 years ago

Basically it would be done silently, or just output a warning to the user and recommending them to update vscode, before installing the latest version instead

AdmiringWorm commented 5 years ago

As I said, I'm currently only considering it. Not committed myself to anything

pauby commented 5 years ago

A package has been submitted already for this with the -latest extension. I agree with @AdmiringWorm with not being keen on the idea of that extension. From what I can see above no decision has yet been made?

mkevenaar commented 5 years ago

I agree with @pauby, I think a package should always install the version it was intended to. I believe it's even in the requirements for moderation: https://chocolatey.org/docs/moderation#requirements-and-guidelines

pascalberger commented 5 years ago

So, common opinion is:

  1. Visual Studio Code Extension Package should install the exact same version of the extension as the Chocolatey package has
  2. For extensions installed from Chocolatey Packages auto-update will be disabled
  3. Extensions have a dependency to a Visual Studio Code version which allows to implement the above two points or fallback to install latest version of the extension and let Visual Studio Code do the auto-update in previous versions
  4. There will be no support to installing extensions through Chocolatey and let Visual Studio Code do the updating starting with a certain versions of Visual Studio Code and updates need to be done through Chocolatey. That will be different behavior than what the Visual Studio Code package itself has by default.
pauby commented 5 years ago

Just to be clear:

1. Visual Studio Code Extension Package should install the exact same version of the extension as the Chocolatey package has

So that means for this that version 1.0.0 of the extension would be installed?

3\. Extensions have a dependency to a Visual Studio Code version which allows to implement the above two points or fallback to install latest version of the extension and let Visual Studio Code do the auto-update in previous versions

Is this a .nuspec dependency, logic inside chocolatey-vscode.extension or the chocolateyInstall.ps1 of the package?

4\. There will be no support to installing extensions through Chocolatey and let Visual Studio Code do the updating starting with a certain versions of Visual Studio Code and updates need to be done through Chocolatey.

Can you explain this one?

pascalberger commented 5 years ago

I just tried to summarize what peoples opinion are.

1. Visual Studio Code Extension Package should install the exact same version of the extension as the Chocolatey package has

So that means for this that version 1.0.0 of the extension would be installed?

This package should not exist if I get peoples opinions correctly

3\. Extensions have a dependency to a Visual Studio Code version which allows to implement the above two points or fallback to install latest version of the extension and let Visual Studio Code do the auto-update in previous versions

Is this a .nuspec dependency, logic inside chocolatey-vscode.extension or the chocolateyInstall.ps1 of the package?

What's your opinion?

4\. There will be no support to installing extensions through Chocolatey and let Visual Studio Code do the updating starting with a certain versions of Visual Studio Code and updates need to be done through Chocolatey.

Can you explain this one?

As I've understand the votes people have given, then they prefer that Chocolatey packages always install the specific version (so Chocolatey package 1.2.3 installs Software version 1.2.3). Means that we install the specific Visual Studio Code extension from a Chocolatey Package for a Visual Studio Code extension, which also means that Visual Studio Code won't take care of updating the extension afterwards (actually it does in the current version, but there's an issue to change this behavior)

But as said I just tried to summarize what I understood peoples opinions are on this topic to try to come to a conclusion. I personally don't have strong opinions. I see use cases that people might want to install just the latest version and have Visual Studio Code do the auto-update, therefore my suggestion to provide two packages for these different use cases. But if common opinion is that this is not how Chocolatey packages should work I'm completely fine with it.

If I've summarized it wrongly or there are different opinions please speak out.

AdmiringWorm commented 5 years ago

@pascalberger I think you summarized it quite well.

@pauby said

3\. Extensions have a dependency to a Visual Studio Code version which allows to implement the above two points or fallback to install latest version of the extension and let Visual Studio Code do the auto-update in previous versions

Is this a .nuspec dependency, logic inside chocolatey-vscode.extension or the chocolateyInstall.ps1 of the package?

That would most likely be a summary from my previous comment regarding adding a fallback in the chocolatey-vscode.extension, no need to have that in the install script if I add it to the extension itself.

@mkevenaar I agree with @pauby, I think a package should always install the version it was intended to. I believe it's even in the requirements for moderation: chocolatey.org/docs/moderation#requirements-and-guidelines

hmm, I had forgotten about the requirement of package version == software version. I guess that settles that then, although when looking at the create packages docs, it's mentioned as a recommendation: https://chocolatey.org/docs/create-packages#versioning-recommendations

The best recommendation is to use the same versioning that the installable/portable application uses.

So there is kind of a conflict there (unless I'm reading it completely wrong).

pascalberger commented 5 years ago

So there is kind of a conflict there (unless I'm reading it completely wrong).

I also think this is not consistent. Also there are several packages which always install latest version (beside the existing Visual Studio Code extension packages also e.g. popular ones like Google Chrome)

To clarify consent is:

  1. Visual Studio Code Extension Package should install the exact same version of the extension as the Chocolatey package has
  2. For extensions installed from Chocolatey Packages auto-update will be disabled for newer Visual Studio Code versions providing this functionality.
  3. Extensions have in their nuspec file a dependency to a Visual Studio Code version which allows to implement the above two points. Optionally they might fallback to install latest version of the extension and let Visual Studio Code do the auto-update in previous versions
  4. There will be no support to installing extensions through Chocolatey and let Visual Studio Code do the updating starting with a certain versions of Visual Studio Code and updates need to be done through Chocolatey. That will be different behavior than current versions of Visual Studio Code extension packages and what the Visual Studio Code package itself has by default.
  5. For some existing packages it might not be possible to update them to install a specific version at the moment as they have a package version higher than the extension version. These package can be updated once the extension version is higher than the package version.
pauby commented 5 years ago

I also think this is not consistent. Also there are several packages which always install latest version (beside the existing Visual Studio Code extension packages also e.g. popular ones like Google Chrome)

There are always exceptions to the rule but from what I understand here I don't feel this is one of the exceptions. As far as possible a package version should be the same as that for which it is installing (software, driver, extension, module etc).

pauby commented 5 years ago

@AdmiringWorm said:

hmm, I had forgotten about the requirement of package version == software version. I guess that settles that then, although when looking at the create packages docs, it's mentioned as a recommendation:

It is. But it's a strong one. In my early days as a moderator this was pointed out to me when I missed it on a package I moderated.

stale[bot] commented 5 years ago

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

stale[bot] commented 5 years ago

Dear contributor, because this issue seems to be inactive for quite some time now, I've automatically closed it. If you still feel this is a valid issue, please feel free to re-open the issue. Thank you for your contribution.