Flow-based Programming

Panta rhei (Panta rhei) - Everything flows.


FBP was invented by J. Paul Morrison in the early 1970s, and an early implementation of this technology has been in continuous production use at a major Canadian bank since that time.

FBP at its inception was strongly influenced by some IBM simulation languages of the period, in particular GPSS, but its roots go all the way back to Conway's seminal paper on what he called coroutines.

FBP has undergone a number of name changes over the years: an early implementation of this technology on IBM mainframes (called AMPS) was used by the Bank of Montreal in 1975 when they introduced their on-line banking system. One of the programs built using AMPS is still being run, almost 40 years later (as of Jan. 2014). A number of the basic concepts were put into the public domain by IBM, by means of a Technical Disclosure Bulletin in 1971, using a very general title. An article describing its concepts and experience using it was published in 1978 in the IBM Research IBM Systems Journal under the name DSLM. A second implementation was done as a joint project of IBM Canada and IBM Japan, under the name "Data Flow Development Manager" (DFDM), and was briefly marketed in Japan in the late '80s under the name "Data Flow Programming Manager".

Generally the concepts were referred to within IBM as "Data Flow", but this term was felt to be too general, and eventually the name Flow-Based Programming was adopted, and a book with that title was published in 1994. The 2nd edition is now available, published by CreateSpace, a DBA of On-Demand Publishing LLC, part of the Amazon.com group of companies.

The late IBM architect, Wayne Stevens, wrote several articles describing and supporting the FBP concept, and included material about it in several of his books.

As of 2009 several companies were marketing tools based on FBP concepts, among them: InforSense, Accelrys, and open-source Kettle and Knime. IBM also sells a tool for general data transformation called DataStage which combines FBP with parallel processing. A number of projects based on these concepts have appeared over the last several years - see under "External links" below.

Around 2012, Henri Bergius and his team started work on implementing the concepts of FBP in JavaScript, and their project, NoFlo, has been garnering a lot of attention world-wide. NoFlo should more properly called an FBP-inspired system, as it shares a number of characteristics with FBP, but is missing some key concepts (due largely to the limitations of JavaScript). For some comments on how these products relate, see Relationship between NoFlo and Flow-Based Programming.