The project pulls its explanation of flow-based programming from Wikipedia, which states: “In computer science, flow-based programming (FBP) is a programming paradigm that 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.”
On the project’s GitHub repository, the developers highlight how the modular nature of flow-based programming emulates Alan Kay’s original definition of object-oriented programming, as well as the well-known Unix philosophy of writing programs that do one thing well and work well together.
NoFlo isn’t a standalone implementation, but part of the Flowhub platform of IDE and consulting services for development of IoT systems and web services. And NoFlo already has a number of tools in its ecosystem:
- Flowhub — browser-based visual programming IDE for NoFlo and other flow-based systems
- noflo-nodejs — command-line interface for running NoFlo programs on Node.js
- MsgFlo — for running NoFlo and other FBP runtimes as a distributed system
- fbp-spec — data-driven tests for NoFlo and other FBP environments
- flowtrace — tool for retroactive debugging of NoFlo programs. Supports visual replay with Flowhub