Node-RED is a flow-based programming tool originally developed by IBM’s Emerging Technology Services team and is now part of the OpenJS Foundation.
flow-based programming
Invented by J. Paul Morrison in the 1970s, stream-based programming is a method of describing the behavior of an application as a network of black boxes, or “nodes” in Node-RED. Each node has a clear purpose; it’s given some data, it does something with that data, and that data is passed to it. The network is responsible for the flow of data between nodes.
It is a model that is well suited for visual representation and is more accessible to a wider range of users. If someone can break the problem down into discrete steps, they can look at the flow and understand what it’s doing; no need to understand the individual lines of code in each node.
runtime/editor
Node-RED includes a Node.js-based runtime that you point your web browser to to access the flow editor. In the browser, create your application by dragging nodes from the palette to the workspace and starting connecting them together. With a single click, you can deploy your application back to the runtime it was running on.
The node palette can be easily expanded by installing new nodes created by the community, and the flows you create can be easily shared as JSON files.
history
Node-RED began in early 2013 as a side project of Nick O’Leary and Dave Conway-Jones in IBM’s Emerging Technology Services Group.
What started as a proof-of-concept for visualizing and manipulating mappings between MQTT topics quickly turned into a more general tool that can be easily extended in any direction.
It was open sourced in September 2013 and has been under public development ever since, eventually becoming one of the founding projects of the JS Foundation in October 2016.
In 2019, the Node.js Foundation merged with the JS Foundation to form the OpenJS Foundation.
Why is it called Node-RED? The name is a light-hearted play on a word that sounds like “Code Red.” It stuck and was a huge improvement on anything called it in the first few days. The “Node” part reflects the stream/node programming model and the underlying Node.JS runtime. We never came to a conclusion as to what the “red” part represented. “Quick Event Developer” was a suggestion, but we never felt the need to formalize anything. We stick with “Node-RED”.