Installing plugins from the marketplace using hermes init

  • Status: accepted

  • Deciders: nheeb

  • Date: 2025-03-04

Context and Problem Statement

For a smooth user experience common plugins (those which are on the marketplace) should be installable via hermes init. That however means we need to decide on a way for the plugins to ask question during that same init process.

Considered Options

  • Full install: Plugins are installed locally during hermes init, can hook into the init process, and ask questions themselves to adjust the hermes.toml or similar.

  • No install: Plugins are only added to the CI pipeline as pip install ... lines. Additional questions for the init process could be added in the marketplace input mask along with a property name under which the answer is stored in the hermes.toml.

  • Partial install: Plugins are only added to the CI pipeline as pip install ... lines. Additional questions for the init process are handled in a “detached” script that is downloaded, executed locally, and then deleted again (this script may only have dependencies of Hermes).

Decision Outcome

Chosen option: “Partial install”, because it is a good trade-off between giving plugins more controll over their init process and not being too invasive with local installs.

Pros and Cons of the Options

Full install

  • (+) Plugins have a lot of control over how they design their own init process.

  • (+) The plugin can be used locally on the device directly if the user intends to do so.

  • (-) The plugin might be installed unnecessarily, as locally only the init part may be executed.

  • (-) The plugin may introduce many dependencies that the user doesn’t necessarily need.

  • (-) There could be environment complications (e.g., if Hermes was installed with pipx).

No install

  • (+) Nothing is installed locally via hermes init.

  • (+) Overall, slightly less effort for the init command and plugin developers.

  • (-) The marketplace would need input masks for an arbitrary number of such questions.

  • (-) Plugins have little control over how they design their own init process.

  • (-) Plugins intended for local use must be installed manually.

Partial install

  • (+) Nothing is installed locally via hermes init.

  • (+) Plugins have relatively high control over how they design their own init process.

  • (-) Plugins intended for local use must be installed manually.