Plugin concepts#
OctoPrint's plugins are Python Packages which in their top-level module define a bunch of control properties defining metadata (like name, version etc of the plugin) as well as information on how to initialize the plugin and into what parts of the system the plugin will actually plug in to perform its job.
There are three types of ways a plugin might attach itself to the system, through so called mixin implementations, by attaching itself to specified hooks, by offering helper functionality to be used by other plugins or by providing settings overlays.
Plugin mixin implementations will get a bunch of properties injected by OctoPrint's plugin subsystem to help them work.
The plugin subsystem will also manage plugin's general lifecycle and register declared hook handlers and helpers.