Ivy-Interactive / Ivy-Interactive/Rusty-Framework

[Subsystem] Implement Plugin Subsystem Architecture (Port of Ivy.Plugin.Abstractions)

Open
#115 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
3
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Problem Statement

The original C# Ivy-Framework features Ivy.Plugin.Abstractions and a dynamic plugins/ directory system for third-party extensions, custom widget registrations, and backend message handlers.

Rusty-Framework currently lacks a plugin system. Developers cannot package or load third-party extension modules dynamically into a rusty-server application.

Missing Functionality

  • Plugin and PluginModule trait definitions in Rust.
  • Dynamic widget and custom WebSocket message handler registration mechanisms.
  • Plugin lifecycle hooks (initialize, register_widgets, register_handlers, shutdown).
  • Schema validation for plugin configuration.

Proposed Architecture & Design

  1. Create a rusty-plugin module (or crate) defining Plugin, PluginContext, and PluginRegistry.
  2. Add plugin registration methods to rusty-server::ServerBuilder.
  3. Support plugin-scoped state injection and middleware registration.
  4. Implement an example plugin crate (rusty-plugin-example) demonstrating custom widget and route registration.

Acceptance Criteria

  • Plugin trait defined with lifecycle hooks (initialize, register_widgets, shutdown).
  • rusty-server supports loading and registering plugins during startup.
  • Custom widgets and message handlers registered by plugins render and execute cleanly.
  • Example plugin implementation provided with unit and integration tests.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the proposed rusty-plugin module or crate, rusty-server::ServerBuilder, and the stated lifecycle hooks and registration mechanisms. Compare the original C# Ivy.Plugin.Abstractions behavior with the requested Rust architecture. Done means plugins can load during startup, register widgets and message handlers, support configuration validation, and include the example plugin with unit and integration tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.