What is a Plugin?

What is a Plugin?

A plugin consists of a specification and a number of shared libraries. The specification describes all of the information needed to load the plugin: It defines what shared libraries are needed, what other plugins have to be loaded and what interactions a plug-in has with other plugins.

Plugins interact with the Perception Studio and with each other through extension-points. Each extension-point is described in the plugin specification and is typically a function in a shared library. The function knows what to do when other plugins extend the extension-point. To extend an extension-point, other plugins provide extensions, which are described in their specifications and that the extension-point of interest understands.

Many plugins can be completely described by their specification, without any shared libraries. They make use of the extension-points from other plugins which only need to read the specification to know what to do. Others need to provide a shared library to either create extension points or to add code based extensions.

Perception Studio based on a plug-n system.

Plugins can interact with each other, and the Perception Studio. There can be many plugins, all working together. The Perception System will manage plugin dependencies and ensure that only necessary plugins and extension-points are created.

Extension-points can be extended multiple times and plugins can even extend their own extension-points. The application can also provide extension points for plugins to use.