Definitions

A plugin supplies a service that other plugins can use. This service can for example be a handler for the ICQ protocol or GUI that the user can interact with. What's important to note is that a single plugin can not do both. There's no concept of complex plugins; a plugin does one thing and one thing only.

A plugin instance is, as the name implies, an instance of a plugin. All plugin instances run in separate threads of execution. Using the ICQ protocol plugin as an example, there are one instance for each ICQ account. So if an user has two accounts (e.g. one for work and one for personal use), there would be two instances of the ICQ protocol plugin running.

A plugin bundle is an other name for a dynamic library, and is simply a way to bundle similar plugins in the same library.

The daemon loads a plugin bundle, gets information about available plugins and then creates a plugin instance when the plugin's service is required.