Plugin policy¶
GEMSEO features can be extended with Python modules or packages, called plugins. All kinds of additional features can be implemented: disciplines, optimizers, DOE algorithms, formulations, post-processors, surrogate models, etc.
Since its creation,
GEMSEO has consisted of a main package, called gemseo, and plugins, named as gemseo-<suffix>.
The logic is to integrate as many developments as possible into gemseo,
provided that:
- they are broadly consistent with the GEMSEO product (architecture, features, user experience, etc.),
- they do not involve the integration of restrictive dependencies, either from a practical standpoint (installation) or a legal standpoint (incompatible license, proprietary code, etc.).
This integration policy is designed to make life easier for GEMSEO users by:
- limiting the number of packages to be installed,
- striving to standardize APIs,
- avoiding getting lost in a jungle of plugins.
From a developer's point of view,
this facilitates maintenance and reduces the risk of incompatibility between gemseo and its plugins.
The exceptions that give rise to the creation of a plugin are:
- the feature has a restrictive dependency,
- the feature is not mature enough,
- the feature has a development cycle that is faster than the
gemseoone.