Flow-based Programming

Panta rhei (Panta rhei) - Everything flows.

In computer programming, Flow-Based Programming (FBP) is a programming paradigm that uses a "data factory" metaphor for designing and building applications. FBP defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is thus naturally component-oriented.

FBP is a particular form of dataflow programming based on bounded buffers, information packets with defined lifetimes, named ports, and separate definition of connections.

Animation of simple diagram

If you have come across Flow-Based Programming by way of NoFlo or Flowhub, it is recommended that you read Relationship with NoFlo, which attempts to highlight the differences and similarities between what we are now starting to refer to as "classical" FBP (the subject of this web site) and NoFlo. "Classical" FBP involves a paradigm shift and so may seem harder to grasp than NoFlo, but our experience suggests that understanding FBP at a deep level is well worth the effort, as it promises more maintainable and understandable applications, as well as improved performance for jobs involving large data volumes.

We know you are tired of Powerpoint presentations, but this one (from 2007) gives quite a good overview of FBP - it's worth taking a look!

Sections:

  1. Introduction
  2. History
  3. Concepts
  4. Software:

  5. Examples
  6. Comparison with other paradigms and methodologies
  7. Relationship with NoFlo
  8. Bibliography
  9. Chapters from the first edition - online
  10. External links

Google group on Flow-Based Programming

Link to Flow-Based Programming Wiki

Twitter hashtag: #FlowBased