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

Create ADR for new "Plugin System" that is able to scale and allow collaboration #1200

Open
morri-son opened this issue Dec 16, 2024 · 0 comments
Labels
area/ipcei Important Project of Common European Interest kind/epic Large multi-story topic

Comments

@morri-son
Copy link
Contributor

morri-son commented Dec 16, 2024

Description
We want to re-write the current system the OCM Library / CLI offer for plugins. The new system should have a focus on scalability and ease of contribution by others.

Why?

We noticed that the scope of OCM is huge and that the integration of all implementable accesses and repositories will likely be huge and / or impossible to maintain. As such we need to rely on a plugin system as our main interaction point instead of having it in the library as a second class citizen.

This means we want to focus on making the Plugin System the main interaction point when working with OCM as a developer and thus we need a plugin format and design that is much more finely designed and controlled than the current plugins that are mostly there to cover 1 or 2 specific use cases.

*Features and Characteristics

  • The plugin system should be easy to understand
  • Others should be able to easily implement new plugins that extend the existing base functionality
  • The plugin system should be built in a way that new plugins do not negatively impact the overall behavior of the OCM library / CLI

Other Requirements from engineering Side:

  • Plugins need to be well-defined and we need to define categories for plugins (such as Access Methods) that are implementable by everyone. This means we need a OCM Reference Implementation Specification for a Plugin.
  • Plugins need to be downloadable remotely as a code unit so that we can setup a registry format later. This allows us to implement flows such as "Download Component Version => Download Resource => Download Plugin for Resource Access => Download Resource"
  • Plugins should be easy to implement in a minimal form, but extendable arbitrarily.
  • Important is a clean interface definition that is well documented
@morri-son morri-son added area/ipcei Important Project of Common European Interest kind/epic Large multi-story topic labels Dec 16, 2024
@jakobmoellerdev jakobmoellerdev moved this from 🆕 ToDo to 📋 Next-UP in OCM Backlog Board Jan 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ipcei Important Project of Common European Interest kind/epic Large multi-story topic
Projects
Status: 📋 Next-UP
Development

No branches or pull requests

1 participant