Skip to content

0003 Hermes runtime extensions api version control

Author:
Alex Pozhylenkov <alex.pozhylenkov@iohk.io>
Created:
2024-02-16
Status:
Draft

Context

Hermes should be a robust and reliable platform for Hermes applications to be run on. So it has to have a defined boundaries of which application would be executed and which not.

NOTE There is an acknowledged need for version control of the APIs in a mature Hermes state, however at this stage we will not define such a policy until the core hermes engine and libraries have matured enough to make an informed choice.

Assumptions

  • Hermes runtime extensions api could not be stable and evolve during the development process.

Decision

As a part of the metadata of the Hermes application, provide a api_version field. During the application loading step it should be validated, against the current Hermes api_version on which this application going to be executed. Validation is a equality check.

Risks

  • Failing to specify a version control policy and method of enforcement at a sufficiently advanced state of maturity could make it difficult to interoperate with Hermes applications over time.

Consequences

Consequences to consider:

  • Eliminates maintenance and support complexity for the Hermes development itself.
  • Eliminates the need of the internal api version management system.
  • Force Hermes application developers and it's users to use the latest version of the Hermes engine.
  • As api_version is separated from the Hermes version itself, allows to continue deliver new versions which does not change runtime extensions api.