Plug-in Proxy Overview — Overview of Gwyddion plug-ins and the plugin-proxy module
Plug-ins are external programs that can be executed by Gwyddion to either perform some operation on the data or to read or write data in a third-party file format.
Generally it is preferable to extend Gwyddion functionality by modules, because modules are dynamic libraries linked directly to Gwyddion at run-time allowing much more versatile interaction with the application, and they are also faster (for the same reason). For example, plug-ins generally cannot make use of existing Gwyddion data processing functions and cannot modify data in-place, a new window is always created for the result. Programming of modules is also no harder than programming of plug-ins, maybe it is even easier (assuming you know C).
They are however two reasons to use plug-ins:
The capability to use plug-ins is not a built-in Gwyddion feature, instead it is provided a by a smart module called plug-in proxy. With the small exception there is a dedicated directory for plug-ins defined directly in Gwyddion, the plug-in proxy module is in no way privileged or otherwise special. It can be removed and/or other plug-in proxies can be added and happily coexist with the current one.
When the plug-in proxy module registeres self, it scans the plug-in directories, requests information from the plug-ins it finds and passes the information as its own features. Likewise when it is run to process some data it executes the appropriate plug-in to process it and passes the result back to Gwyddion. All plug-in features thus look as plug-in proxy features to Gwyddion, as you can see yourself in the Module Browser.
FIXME: More to be said.