Skip to content
Gregg Irwin edited this page Oct 24, 2013 · 7 revisions

Welcome to liquid!

The liquid repository contains all core parts of the Liquid dataflow management system, as a slim module package.

This documentation is being written on the fly, so it may be a bit coarse for a while.

What is dataflow management?

A paradigm, concerned primarily with the relationship of data and its transformation.

In a nutshell, dataflow management explicitly maps out all the dependencies in a systems and makes sure that any subsystems are notified about changes to data they depend on.

Mapping is performed explicitly by manually linking nodes together, in a variety of patterns.

Fundamental Liquid principles

  • All nodes can be linked together (though not all connections create valid systems).
  • The !plug, a single root class for all node types and all patterns.
  • Plugs manage their own messaging and processing, they aren't just data.
  • Plugs have a unique identity, but are not forced to be used within any specific node manager
  • Each plug is, conceptually, only responsible for sharing out a single value, i.e. they are atoms. This value may be a compound type, like a list or an object, but it's still a single thing, with a single identity.
  • Plugs should not create or rely on side-effects. Although this is not enforced, in general, plugs should copy any data they are given, unless this is resource prohibitive or is part of the process.
  • Plug derivatives can modify every part of the plug's functionality as long as they respect the valid inputs and outputs of the functionality being tweaked.
  • Unless you include measures to prevent cycle deadlock in processing, cycles are not allowed, as there is currently no cyclic deadlock protection. Cycle protection is enabled on linkage instead. By default, you cannot link up nodes that would result in a link cycle.

A quick note about how things are named in Liquid

Liquid doesn't use traditional terms in many of its values concepts and methods, that is because it isn't a traditional node graph model.

Some of the terms are borrowed from the physical world, they are an analogy from their use in real life.

Old docs

Old documentation (very old) can be found here: old liquid docs. Note there are few pages there, if you switch using the top right menu.

Most if not all of the information there still applies today. The liquid model has been quite stable for a few years and has proven its flexibility in a variety of projects.

In time, all topics covered there will be updated and rewritten here.