gitextensions / gitextensions.pluginmanager

Package manager for downloading and installing Git Extensions plugins.
MIT License
13 stars 10 forks source link

Filter out unsupported packages #61

Closed RussKie closed 2 years ago

RussKie commented 2 years ago

Git Extensions is being migrated to .NET, and many existing packages are targeting the old version of the app that runs on .NET Framework 4.6.1. The new version of the Plugin Manager shows all known version, which is quite misleading: image

Consider how we can filter out (or render) unsupported packages.

Few ideas but nothing concrete, e.g.:

maraf commented 2 years ago

I think we should rely on GitExtensions.Extensibility version. Plugin manager has already a support for this, but it's turned-off since the initial release.

The down side is that we need to publish a new version of this package with Git Extensions release. From my experience, since we don't have a public API, my plugin needs an update with almost every Git Extensions feature update. But this raises a broader question of compatibility and also we may need to disable already installed plugins after update, etc.

Summary: both filtering based on dependency version and TFM are already supported.

RussKie commented 2 years ago

I believe we need to publish that package. And the app and all plugins must use that version.

Ultimately it needs to host all shared concerns. IIRC @ivangrek started some work in that direction (but got stalled partially because I was available to help and review in timely manner).

On Mon, 15 Nov 2021, 7:41 pm Marek Fišera, @.***> wrote:

I think we should rely on GitExtensions.Extensibility version. Plugin manager has already a support for this, but it's turned-off since the initial release.

The down side is that we need to publish a new version of this package with Git Extensions release. From my experience, since we don't have a public API, my plugin needs an update with almost every Git Extensions feature update. But this raises a broader question of compatibility and also we may need to disable already installed plugins after update, etc.

Summary: both filtering based on dependency version and TFM are already supported.

  • TFM version would only need a small change here.
  • GitExtensions.Extensibility version requires to publish that package.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/gitextensions/gitextensions.pluginmanager/issues/61#issuecomment-968657123, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBTEXUDF5EH2XEWJTDQ77TUMDBVJANCNFSM5IAMWXMQ .

ghost commented 2 years ago

Perhaps we need to change the version for plugins in the main application and discard all plugins that have a lower version?

RussKie commented 2 years ago

Yes, I think that'd be the right move.

On Mon, 15 Nov 2021, 8:32 pm Ivan Grek, @.***> wrote:

Perhaps we need to change the version for plugins in the main application and discard all plugins that have a lower version?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/gitextensions/gitextensions.pluginmanager/issues/61#issuecomment-968700844, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBTEXSMZVOK3LP6SJGGBPLUMDHT5ANCNFSM5IAMWXMQ .

maraf commented 2 years ago

We should check and disable/uninstall plugins that are already installed, but doesn't fit in updated Git Extensions version, shouldn't we?

ghost commented 2 years ago

We should check and disable/uninstall plugins that are already installed, but doesn't fit in updated Git Extensions version, shouldn't we?

I think something like this.

? AppPluginVersion > PluginVersion : not load plugin and don't install

maraf commented 2 years ago

Yes, that is something I had in my mind too.

But I think it requires to load nuspec info Git Extensions (where MEF is used) and determine whether the plugin fits in or not. There isn't currently an extension point for this.

RussKie commented 2 years ago

Can we inspect the dependency of a package? I.e., check if a plugin is dependent on a specific version (or a range) of GitExtensions.Extensibility, and install.

In the end of the day we can install any package, but the app will load only those supported... This issue is about improving the UX and making users aware what plugins are supported.

maraf commented 2 years ago

Yes, on a nuget level we can do that (and we are already doing that). What I am thinking about is how to check for compatibility on already installed plugins (after Git Extensions update). Because Git Extensions currently loads dlls from a folder. It doesn't know anything about nuget.

RussKie commented 2 years ago

I checked and we released v0.2 version of with .NET 5.0 support (https://github.com/gitextensions/gitextensions.extensibility/pull/21). Though we perhaps should have removed net461 support from it... So I think we should all update to the latest version, and not filter out/visibly mark plugins that aren't built against [0.2.0, 0.3.0).

What do you think?

maraf commented 2 years ago

Though we perhaps should have removed net461 support from it...

It would be better, but we probably can live with it.

and not filter out/visibly mark

Is it what you wanted to say? Or did you mean "do filter out"? 🙂

RussKie commented 2 years ago

Typo ;) "do filter out"

On Fri, 19 Nov 2021, 5:57 pm Marek Fišera, @.***> wrote:

Though we perhaps should have removed net461 support from it...

It would be better, but we probably can live with it.

and not filter out/visibly mark

Is it what you wanted to say? Or did you mean "do filter out"? 🙂

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/gitextensions/gitextensions.pluginmanager/issues/61#issuecomment-973802109, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBTEXTDTTHJ4KPS72EAPPTUMXYMZANCNFSM5IAMWXMQ .

RussKie commented 2 years ago

Here's a test build: https://ci.appveyor.com/api/buildjobs/2svhhdi4ank88rgg/artifacts/GitExtensions-4.0.0.13119-alpha-aabfaf14b.msi