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

Plugin Development Kit ( PDK ) #791

Open
11 tasks
darach opened this issue Mar 1, 2021 · 11 comments
Open
11 tasks

Plugin Development Kit ( PDK ) #791

darach opened this issue Mar 1, 2021 · 11 comments
Labels
_complexity:medium A task with a medium complexity that should be challanging enhancement New feature or request mentorship needs-rfc This change needs to follow the RFC process _size:medium A medium sized task that will take some time to complete

Comments

@darach
Copy link
Member

darach commented Mar 1, 2021

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/

@darach darach added enhancement New feature or request needs-rfc This change needs to follow the RFC process mentorship labels Mar 1, 2021
@Licenser Licenser mentioned this issue Mar 19, 2021
8 tasks
@Raman-Kumar
Copy link

hi, I have just learned the kubernates and studying the source code.
Can I contribute to this PDK or I need more experience.

@Licenser Licenser added _complexity:medium A task with a medium complexity that should be challanging _size:medium A medium sized task that will take some time to complete labels Apr 16, 2021
@marioortizmanero
Copy link
Contributor

As the maintainers of Tremor already know, I was preparing myself to work on this project during the summer via the Google Summer of Code. My proposal wasn't accepted in the end so I won't be able to continue, but the research I made is probably worth taking a look at for whoever attempts this next. I'm posting it here so that it's not lost in the Discord server:

Cheers!

@Licenser
Copy link
Member

you are a legend mate!

@marioortizmanero
Copy link
Contributor

Surprise update! Please read my new blog post for more progress on this issue: https://nullderef.com/blog/plugin-start/

@marioortizmanero
Copy link
Contributor

New update on dynamic loading: https://nullderef.com/blog/plugin-dynload/

Next up... abi_stable :)

@darach
Copy link
Member Author

darach commented Oct 6, 2021

I love update day 🤘

@marioortizmanero
Copy link
Contributor

@darach the RFC link has been updated to this, please change it: https://www.tremor.rs/rfc/accepted/plugin-development-kit

@marioortizmanero
Copy link
Contributor

marioortizmanero commented Oct 31, 2021

Tracking comment for Connectors PDK

Pull Requests:

Currently tracking my progress here: https://github.com/marioortizmanero/tremor-runtime/projects/1

@marioortizmanero
Copy link
Contributor

marioortizmanero commented Jan 29, 2022

Forgot to link the last update!

"Plugins in Rust: Reducing the Pain with Dependencies" - https://nullderef.com/blog/plugin-abi-stable/

The next one should be out in February :)

@marioortizmanero
Copy link
Contributor

New article after the implementation of the first version!

"Plugins in Rust: Getting our Hands Dirty" - https://nullderef.com/blog/plugin-impl/

@marioortizmanero
Copy link
Contributor

Here's the final article of the series, concluding my work: "Plugins in Rust: Wrapping Up" - https://nullderef.com/blog/plugin-end/.

It's been a pleasure to work with Tremor, really. I will be around for any doubts anyone may have. And I really look forward to seeing how the plugin system continues to evolve :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
_complexity:medium A task with a medium complexity that should be challanging enhancement New feature or request mentorship needs-rfc This change needs to follow the RFC process _size:medium A medium sized task that will take some time to complete
Projects
None yet
Development

No branches or pull requests

4 participants