-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededpinned
Description
The plugins page (source) doesn't explain the layers of plugins and how they interact with each other.
User testimony:
"One thing that took me a bit to work out is what the different parts of the plugin system actually fit together.
You can read the config file and sort of work out that thedidManagerdepends on the providers, and the providers usekeyManagerbut I had to read both the config file and the source code to understand it."
The documentation should mention:
- The 2 (or more) types of plugins that exist in Veramo
- Top-level, "agent" plugins, that implement
IAgentPlugin- Example,
KeyManager,DIDManager,CredentialIssuer, etc - These provide a
IPluginMethodMapof methods that are bubbled up to theagent - These methods are the external interface of the agent, and can also call each-other.
- Usually only one implementation of a top-level plugin interface is installed on an agent. The
MessageHandleris [currently] an exception.
- Example,
- Lower level implementations of certain interfaces
- Top level plugins use implementations of specific interfaces to provide their functionality.
- Example,
AbstractKeyManagementSystemimplementations used byKeyManager,AbstractIdentifierProviderimpl used byDIDManager,DIDResolverimplementations,DIDstore,KeyStore,PrivateKeyStore, etc. - There can be (and usually are) multiple implementations of these interfaces in use
- These lower level plugins are only called by the top-level plugin where they are used and are not exposed globally.
- These plugins don't call each-other, unless deliberately coupled by implementation details.
- Top-level, "agent" plugins, that implement
- The doc should also link to the plugin template repository
- The existing "core" plugins depend on each-other, so the docs should also include a diagram of the dependency tree.
- The more advanced sections of this doc can mention plugin schemas, type safety, OpenAPI compatibility, multi-platform limitations.
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededpinned