Skip to content
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

Roadmap: move plugins #6542

Open
6 of 37 tasks
mast-eu opened this issue May 8, 2019 · 11 comments
Open
6 of 37 tasks

Roadmap: move plugins #6542

mast-eu opened this issue May 8, 2019 · 11 comments

Comments

@mast-eu
Copy link
Member

mast-eu commented May 8, 2019

Scope

Move plugins from Git Extensions main repo into their own repos (#5574).

Step 1) Preparation

Mandatory things that need to be clarified or done before we can actually start relocating the plugins.

Step 2.a) Move plugins out

Start with the "easier" plugins, i.e. those who do not have specific settings (less contact points with GE).

  • Create local tracking branches
  • Gerrit Code Review
  • GitFlow
  • Impact Graph
  • Release Notes Generator

Move the remaining plugins in a second round (maybe tackling #5797 as well).

For each plugin do:

  1. Extract current plugin code "as is" from GE, wrap it as NuGet package and push to it's own repo. Do not remove it from the main repo yet.
  2. Publish NuGet package on nuget.org and mark the embedded plugin as deprecated in next feature release of GE.
    ❗️ There should always be at least one GE feature release with the embedded plugin marked as deprecated and the NuGet-based counter-part already available to allow a smooth transition.
  3. Get some core and community members to verify whether the embedded and the NuGet-based have the same functionality.
  4. Move existing issues into plugin-specific issue tracker. Go through this list.
  5. Fully remove embedded plugin with next feature release of GE (code, resources, unit tests, installer, documentation?, etc).

Step 2.b) Improvements to GE and it's plugin API

Things that are not necessary (strictly speaking), but will facilitate the work, make the implementation more robust and improve maintainability.

Step 3) Evolution of existing plugins and development of new ones

Ideally, this will be community-driven.

Some ideas for new plugins are already floating around:

@mast-eu mast-eu self-assigned this May 8, 2019
@mast-eu mast-eu added this to To do in Move plugins via automation May 8, 2019
@mast-eu
Copy link
Member Author

mast-eu commented May 8, 2019

I will update the roadmap as things evolve to always reflect the current status.

@gitextensions/git-extensions-source : Obviously any kind of feedback is much appreciated, but in particular I would like to discuss these open questions:

  • Who will be the owner of the plugins' repos and the publisher of the NuGet packages?
  • Has the plugin relocation any impact on the GE relicensing process (Relicense request #4737)?

@maraf : What do you think?

@mast-eu mast-eu moved this from To do to In progress in Move plugins May 8, 2019
@maraf
Copy link
Member

maraf commented May 9, 2019

@mast-eu I agree with you in all points.

About plugin ownership, it think that plugin author should be also the owner of the repo and the nuget package. Current "default" plugins could stay under gitextensions org.

@gerhardol
Copy link
Member

Current "default" plugins could stay under gitextensions org.

and be transferred if someone else takes responsibility

@RussKie
Copy link
Member

RussKie commented May 9, 2019

Few points

  • Plugin author is an owner of a plugin
  • Ideally Git Extensions team should be a co-owner - in event the author abandons a plugin or there is a vulnerability we must be able to step in
  • We would transfer a plugin ownership to a party interested in maintaining it

@mast-eu
Copy link
Member Author

mast-eu commented May 10, 2019

Ok, seems so far we all (including myself) agree on:

  1. New plugins are owned and published directly by its author.
  2. Existing GE plugins will start their life under Git Extensions team ownership.
  3. Transfer of ownership should be possible somehow. I'll think about it.

in event the author abandons a plugin or there is a vulnerability we must be able to step in

How about giving GE the ability to blacklist plugins? This way we could block abandoned plugins.

@RussKie
Copy link
Member

RussKie commented May 10, 2019

How about giving GE the ability to blacklist plugins? This way we could block abandoned plugins.

I'm not sure it is feasible. This would require a centralised directory of approved plugins (think of a plugin store).
Otherwise a bad actor may publish a different plugin...

It is a user's responsibility to exercise caution and due diligence when using software downloaded from internet.

@mast-eu
Copy link
Member Author

mast-eu commented May 11, 2019

How about giving GE the ability to blacklist plugins? This way we could block abandoned plugins.

I'm not sure it is feasible. This would require a centralised directory of approved plugins (think of a plugin store).

Actually, I was thinking of a blacklist contained in the GE release itself (i.e a file with GUIDs or base URLs or something else to uniquely identify plugins), rather than of a centralised directory.
However, thinking further i now agree it is not the right way. In this scenario blacklisting a plugin would always require to release a new version of GE with the updated blacklist file.

@mast-eu
Copy link
Member Author

mast-eu commented May 11, 2019

GitHub has just announced the launch of their own package management service. It's called GitHub Package Registry and supports, among others, also NuGet.
It's still beta, so too early to judge seriously, but it might become an interesting alternative to nuget.org. I will keep an eye on it.

@mast-eu
Copy link
Member Author

mast-eu commented May 17, 2019

Found a few issues and PRs that might become blocking:

@RussKie
Copy link
Member

RussKie commented May 18, 2019

  • Research compile-time XLF tools #5189: Switch to a compile-time XLF tool. Most (all?) plugins have localized strings, too. I wouldn't like to duplicate the TranslationApp and the current mechanism to update XLF files in all these repos. I'd rather prefer to set them up with some compile-time tool right from the start.
    @RussKie: What do you think? I consider this one quite urgent. I suppose you didn't have time yet to look deeper into XLF tools, right? If it's ok for you, I will start working on this issue.

I'm doing some what in this area, but I'm happy to share 😉 Let's continue the discussion in #5189.

Sure. But it can equally be redirected to a different repo, if necessary

ditto.

I think before we can start moving any plugins we need to define a public plugin contract. This would involve moving and publishing GitUIPluginInterfaces project as a package.
To do that, we need to review IGitModule and all other interfaces - should they be there, do they have all necessary definitions and so on.
I would also like to rename GitUIPluginInterfaces to something like GitExtensions.Plugins.Interfaces (open to ideas).

@mast-eu
Copy link
Member Author

mast-eu commented May 21, 2019

I've updated the roadmap, in particular:

As these are the next issues to be tackled.
They should be mostly independent, so discussions can be done directly in the respective issues.
I write "mostly independent", because probably each plugin should have it's own XLF file containing localisations. Thus the plugin API must support this scenario as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Move plugins
  
To do
Development

No branches or pull requests

4 participants