From its inception pyFormex was intended to be easily expandable. Its open architecture allows educated users to change the behavior of pyFormex and to extend its functionality in any way they want. There are no fixed rules to obey and there is no registrar to accept and/or validate the provided plugins. In pyFormex, any set of functions that are not an essential part of pyFormex can be called a `plugin', if its functionality can usefully be called from elsewhere and if the source can be placed inside the pyFormex distribution.
Thus, we distinct plugins from the vital parts of pyFormex which comprehense the basic data types (Formex), the scripting facilities, the (OpenGL) drawing functionality and the graphical user interface. We also distinct plugins from normal (example and user) pyFormex scripts because the latter will usually be intended to execute some specific task, while the former will often only provide some functionality without themselves performing some actions.
To clarify this distinction, plugins are located in a separate subdirectory plugins of the pyFormex tree. This directory should not be used for anything else.
The extensions provided by the plugins usually fall within one of the following categories:
The next section of this chapter gives some recommendations on how to structure the plugins so that they work well with pyFormex. The remainder of the chapter discusses some of the most important plugins included with pyFormex.