Skip to content

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 gemseo one.