Flow-based programming for heterogeneous systems

with NoFlo and MicroFlo

Heterogeneous systems as found in the Internet of Things are made up of many devices of different types working together. Each device class is typically developed with separate tools using different paradigms. We propose that using NoFlo and MicroFlo one can develop heterogeneous systems consisting of micro-controllers, servers, and mobile devices using flow-based programming (FBP) as an unifying programming model.

Systems qualifying for the label "Internet of Things" are often complex hetrogenous systems
consisting of many nodes spanning over several device classes, working individually and together to realize the intended function:
Microcontrollers w/peripherals are used as sensors and actuators, servers used for data-aggregation and analysis,
desktops and mobile devices as user interfaces for monitoring and configuration.
Typically each of these classes of device are programmed with separate tools, by different people using different paradigms:
for example C/C++ for microcontrollers, Python for servers, JavaScript+HTML5 for user interfaces.

This talks aim to introduce flow-based programming (FBP) as a programming paradigm that can be used
across and between device classes, and to show how NoFlo and MicroFlo can be used to implement heterogeneous systems.

About:
NoFlo is a JavaScript-based FBP runtime by Henri Bergius, which runs on Node.js and in the browser. http://noflojs.org
MicroFlo is a C++ based FBP runtime by Jon Nordby. It runs on AVR and Cortex-M microcontrollers, including Arduino. http://microflo.org

NoFlo and MicroFlo can both be targeted by the NoFlo UI, an IDE for flow-based programming currently in development.
Systems can be programmed visually, using a domain-specific language or the runtimes can be embedded and controlled programmatically.