Skip to content

Input-Output system for Providers

Think of a clean input-output system that providers can use to communicate with one another.

We probably want to distinguish between "signals" (update this or that) and "variables" (stuff we need for calculations and visualizations). For this, we should do several things:

  • Better formalize and specify contexts. They are the runtime-interface of how to communicate with widgets and providers / alter their behavior. This in particular means that we should strictly distinguish between "listening" and "notifying" observables.
  • Introduce clear data input and output requirements for each provider. Currently, we look into the internal context of other providers (without any real structure) or use the global variable store. This can probably be improved greatly.
  • I still think the approach of connecting the interactive components of widgets via providing a key to another widget with a given interface is fine, but data accesses should follow a model of graphical programming (connecting the input and outputs of different providers). One thing that has to change is more flexibility in choosing names (i.e., currently the "output" of one provider and the "input" of another must share a name, unless hard-coded differently).