Flow-based Programming

Panta rhei (Panta rhei) - Everything flows.

Animation of simple diagram

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.

FBP is described in J. Paul Morrison's book "Flow-Based Programming: A New Approach to Application Development", now in its 2nd edition, which can be obtained in paperback form from Amazon, or in 2 e-book formats: Kindle and epub.

Video Interview with J. Paul Rodker Morrison, Summer 2013

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), on the one hand, and NoFlo and other similar FBP-like systems on the other. "Classical" FBP involves a significant paradigm shift for the majority of programmers, and so may seem more "alien" than NoFlo and its relatives, but our experience suggests that the current von Neumann paradigm has outlived its usefulness, and as an industry we need to shift over to a new paradigm, which has proven over several decades to result in applications that are more understandable and maintainable than those built using the conventional (von Neumann) paradigm, providing better communication between application designers, programmers, users and systems people, as well as improved performance for jobs involving large data volumes. As a bonus, FBP lends itself to rapid prototyping, unit testing of components, plus easy addition and removal of "monitoring" components.

We know you are tired of Powerpoint presentations, but this one (from 2007) gives quite a good overview of FBP - as it was at that time. There is also a video (not very professional, I'm afraid!), where I present this at a Meetup in Toronto in Sept. 2013 organized by Paul Tarvydas, CEO of Tarvydas-Sanford Controls Inc., and Dann Toliver. It has a few jokes and reminiscences, and may be more accessible than the straight Powerpoint presentation! The Paul referred to in the video is Paul Tarvydas. Towards the end (at 40:12) there is a brief demo of the FBP diagramming tool, DrawFBP.


  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

C2-style Flow-Based Programming Wiki ("Classical" FBP - last maintained in 2010)

Vladimir Sibirov, et al.: more general FBP Wiki (still under development - intended to cover both "classical" FBP and FBP-like approaches)

Twitter hashtag: #FlowBased