Skip to content

Plugin Development Kit ( PDK ) #791

@darach

Description

@darach

Describe the problem you are trying to solve

The plugin development kit ( PDK ) is an interface that allows developers to develop plugins to tremor with a minimal set of dependencies rather than having to build the full tremor runtime with its full set of dependencies.

Describe the solution you'd like

Separating plugins from the runtime has many advantages:

  • Faster build and test for the tremor runtime project
  • Easier extensibility as plugins ( dynamic shared object libraries ) can be built and deployed without a release cycle
  • Fewer dependencies in the tremor runtime project
  • Each plugin can be built, tested, and packaged separately
  • Standardises lifecycle of the pluggable artifacts
  • Encourages standard internal interfaces for tremor micro-architecture where there is no standard internal API or interface today ( design by contract )
  • Would allow runtime upgrades of pluggable artifacts without changes to the runtime ( where compatible )

There is an existing RFC for tremor that covers the requirements in depth:

https://rfcs.tremor.rs/0006-plugin-development-kit/

Suggested initial target:

  • Pipeline operators
  • Codecs
  • Preprocessors
  • Postprocessors
  • Modules/Functions

Enhancements to initial target:

  • Implement connectors RFC ( pre-requirement for connector plugins )
  • Contribute to and finalize Connectors and Streams tremor-rfcs#32
  • Add source, sink, and peering connectors to pluggable artefacts
  • Add a PDK TCK ( test compatibility kit ) that asserts plugin invariants and provides testing mechanisms for plugin developers
  • Consider plugin documentation generation and another tooling for better developer convenience and usability
  • Make trickle sub-graphs a first-class modular and pluggable artefact

Notes

RFC https://rfcs.tremor.rs/0006-plugin-development-kit/

Metadata

Metadata

Assignees

No one assigned

    Labels

    _complexity:mediumA task with a medium complexity that should be challanging_size:mediumA medium sized task that will take some time to completeenhancementNew feature or requestmentorshipneeds-rfcThis change needs to follow the RFC process

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions