Control / script · All operations

Write a custom component

A variant of Run a script

Supply code that the tool runs as one of its own building blocks, such as a reader, writer, learner, loss function or materialisation.

Status

In arcform

Not built yet

arcform does not do this yet; it would live in how a Protocol runs. Its place on the roadmap

What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

Apache NiFi (4)
RapidMiner Studio (2)
  • Python Forecasterread 2026-09-27

    Wrap Python code as a forecast learner whose model works with Apply Forecast

  • Python Learnerread 2026-09-27

    Wrap Python code as a learner whose model works with Apply Model

SQLMesh (1)
  • A Python class that defines how a model is inserted, as a user-made model kind

VisiData (1)
  • define-commandread 2026-09-23

    Define a new command from a longname and a Python exec string

Yggdrasil Decision Forests (3)
  • User-written loss, gradient and hessian functions for two-class boosting

  • User-written loss, gradient and hessian functions for multi-class boosting

  • RegressionLossread 2026-09-27

    User-written loss, gradient and hessian functions for boosted regression

Background

A plug-in, add-in or extension is a software component that extends the functionality of an existing software system without the system having to be rebuilt.[1] In Apache NiFi, InvokeScriptedProcessor runs a processor whose class is defined in a user's script.[2] In Rapidminer AI Studio, the Python Learner operator lets a user create a custom predictive model from a Python script.[3]

When to use it

A plug-in depends on services the host application provides and does not usually work by itself.[1] A host application operates independently of its plug-ins, so users can add and update plug-ins without changing the host application.[1] Write a custom component when the code has to take part in the tool's own machinery, such as a model the tool will apply later, rather than transform one table once. (Meridian's view)

In Rapidminer AI Studio, the model a Python Learner generates wraps the Python model the script returns, and both training and applying it require a compatible Python environment.[3] Treat the Python environment as part of the component: a model trained today must still be applied by an environment that can load it. (Meridian's view)

Apache NiFi marks InvokeScriptedProcessor as experimental, with the impact of sustained usage not yet verified.[2] Apache NiFi loads the script of an InvokeScriptedProcessor when the processor is populated with property values.[2]

The method

A host application provides services that plug-ins can use, including a way for plug-ins to register themselves and a protocol for exchanging data with them.[1] Programmers typically implement plug-ins as shared libraries loaded dynamically at run time, and programs may also load a directory of script files written in a language such as Python or Lua.[1] Early personal computer software with plug-in capability included HyperCard and QuarkXPress on the Apple Macintosh, both released in 1987.[1]

In Apache NiFi, the script given to InvokeScriptedProcessor must define a class that implements the Processor interface and set a variable named processor to an instance of that class.[2]

In Rapidminer AI Studio, an editable Python Learner lets the user change the operator declaration, such as its capabilities, parameter types and ports, and the Python script that trains and applies the model.[3]

Compared with the alternatives

A helper application also extends an application's functionality, but unlike a typical plug-in loaded into the host's address space it runs as a separate application, so it cannot crash the host.[1] A script step hands its code a table and takes one back; a custom component becomes one of the tool's own parts, which gives it more reach and leaves more to maintain. (Meridian's view)