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

[core] Plugins: Introduction of NodePluginManager #2589

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from

Conversation

waaake
Copy link
Contributor

@waaake waaake commented Oct 29, 2024

TCSR-1193 | Part 1 - Introduction of a Plugin Management System

Node Plugin Manager

The NodePluginManager provides a way for registering and managing node plugins within Meshroom.
This also provides a way for other components to interact with the plugins to understand whether a plugin is available or not.

The Node Plugin Manager serves as an initial setup by removing a standard python dictionary "nodesDesc" and using a Singleton class dealing with Plugins.
The Registered Node Plugin is of the type NodeDescriptor.
The NodeDescriptor would later evolve into a Class holding the Module and its Modification times.
The Errors should also be stored in the NodeDescriptor along with its Version.

The changes here also replace the usage of standard conditions of dictionary to validate whether a plugin exists with the lingo of now checking "registered".

What's Next

The Next steps would be to update the plugin registering mechanism to also include the plugins which have an error on them.
Currently the plugins with issues/errors are discarded and not registered.
With the changes proposed here, the Error Nodes should also be allowed to be created in the NodeGraph, but will be of the form of CompatibilityNode, allowing the developer/user to visualise the Errors on the Node.

Tests

  • All existing tests have been updated
  • Introduced a test to validate the Plugin Manager behaviour with registering and unregistering Plugins.

@waaake waaake self-assigned this Oct 29, 2024
@waaake waaake marked this pull request as draft November 8, 2024 12:13
@waaake waaake force-pushed the dev/NodePluginManager branch 2 times, most recently from 253b32c to d31d134 Compare November 11, 2024 04:00
@waaake waaake marked this pull request as ready for review November 11, 2024 04:02
@waaake waaake marked this pull request as draft November 26, 2024 11:28
The NodePluginManager provides a way for registering and managing node plugins within Meshroom. This also provides a way for other components to interact with the plugins to understand whether a plugin is available or not.
The Plugin Manager UI lets users see the available loaded Node Plugins. Each of the plugins have a detailed descriptive view which shows up when the label of the plugin name is clicked in the UI

Node Plugin Manager allows browsing the Python Packages consisting the Node Plugins to load them in the current instance of Meshroom.
… on a Paramter Descriptor to hold the status of whether the parameter has an issues with the value types, if so this gets skipped when adding an Incompatible Plugin Node.
Reloading forces the python reload of the module a plugin and if the reload is successful -> the update gets propagated to the node graph holding any instances of the given node type.
… Node from Plugin Manager UI

Plugin manager has Reload button for each of the pluginto allow reloading the plugin and the nodes if instanced in the graph.

The reload also prompts user before reloading
@waaake waaake force-pushed the dev/NodePluginManager branch 4 times, most recently from 3e2185b to 34e4473 Compare November 28, 2024 13:37
@waaake waaake marked this pull request as ready for review November 28, 2024 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant