Extension Manager feature for conditional installation of extension?

Hi devs,

Here’s a use case:

  • Setup
    • There’s a LaTeX extension with extension points
    • There’s a Figure extension that has 2 modules
      • One containing the Figure macro
      • Another one containing the LaTeX extension points impl for the Figure macro
  • Use case:
    • User installs the LaTeX extension
    • User installs the Figure macro extension

Right now the user would not get the “LaTeX extension points impl for the Figure macro” if he/she doesn’t remember or know that it needs to be installed too. It would be nice that just installing the Figure macro extension would also automatically install the “LaTeX extension points impl for the Figure macro” if the EM detects that the LaTeX extension is installed.

WDTY? Is that something we would be interesting in implementing?

Do you suggest doing it in a different manner? For ex, the “LaTeX extension points impl for the Figure macro” will have a dep on the Figure macro extension and thus if the user installs this extension rather than the Figure macro extension, it’ll work just fine. However the user needs to know this and I don’t think it’s obvious.

Thanks

All we have currently in that area is the concept of optional dependencies, but we are lacking a related UI during the installation to let the user choose to not install some optional dependency branch. Currently, the only effect of using an optional dependency is that you can uninstall it without impacting the backward dependency.

On adding a condition system to those optional dependencies, the difficulty is how far it should go and how to express it in a not too painful way, as you can only put that in a <properties>.

Yes I don’t think “optional” is the same use case. I would use it to declare the “LaTeX extension points impl for the Figure macro” dep in the Figure macro pom but we would also need to tell the EM that there’s a condition to install it.

Maybe something like:

<xwiki.extension.optionalConditions>
(artifact reference of the optional dep)=(artifact reference of the dep that needs to be installed to install the optional dependency)
</xwiki.extension.optionalConditions>

?

I’d check on the full dependency tree.

+1 for the concept, we come across this issue very regularly.