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 defined boundaries for which applications will be executed and which will 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 may 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 an 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_versionis separated from the Hermes version itself, allows to continue deliver new versions which does not change runtime extensions api.