6 years after it was originally open sourced by IBM, we’re excited to see Node-RED reach the major milestone of its 1.0 release. This release reflects the maturity of the Node-RED project whose community has continued to grow from strength to strength with over 2 million downloads, 2200 third-party add-on nodes available, and more and more companies adopting it as part of their own products and services.
What is Node-RED?
Node-RED is a low-code programming environment for event-driven applications. It uses flow-based programming to let you draw a visual representation of how messages should flow through the application.
It’s ideally suited to run on devices such as the Raspberry Pi for creating IoT solutions, as well as in the cloud for any event-driven type workload, such as providing REST APIs and integrations between systems.
Node-RED embodies a “low code” style of application development, where developers can quickly create meaningful applications without having to write reams of code. The term low code was coined by the Forrester Research company in a report published in 2014, but it clearly embodies a style of development that goes back further than that.
Three key benefits of low-code application development, all of which are seen first-hand with Node-RED, are:
It reduces the time taken to create a working application.
It is accessible to a wide range of developers and non-developers alike.
The visual nature helps users to see their application.
You can find out some more about the background and philosophy of Node-RED’s low-code approach to application development in this previous blog post.
What does 1.0 bring?
This release brings a number of useful feature enhancements that you can read about on the nodered.org blog. In this blog, I wanted to highlighting some of the bigger changes.
While the emphasis is on stability, the Node-RED project has taken the opportunity of a major version change to make some updates that weren’t suitable for smaller maintenance releases.
Asynchronous by default
For end users, the main change is that flows are now fully asynchronous, which allows for fairer handling of messages across multiple flows. It also unlocks a number of exciting features that are further on in the roadmap, including the ability to pause and debug flows as one would with a traditional code debugger.
It is possible that some existing flows have been written to take advantage of the sometimes-synchronous, sometimes-asynchronous nature of the current runtime. So this change does have the potential to affect existing flow behavior.
The Node-RED project has done a lot of work to minimize any potential impact and have written a number of blog posts to help users understand the changes:
Making flows asynchronous
Cloning messages in a flow
The current Node-RED editor had CSS classnames dating back to the very first day of its development 6 years ago. It has evolved over time without a lot of consistency. This made it hard to produce custom themes or to embed the editor into another page without a lot of tedious work.
With this release, the editor’s entire CSS has been completely overhauled to ensure consistency and ease of use. The Node-RED project has also provided tooling to help produce custom themes and there’s already a ubiquitous dark theme available from the community.
The Node-RED Docker images are a popular way of using the Node-RED project. However they were built on base images that are no longer maintained. This has meant, among other issues, that we’ve not had an image suitable for the Raspberry Pi with the current 10.x version of the Node.js runtime for a while now.
Thanks to the community, the Docker images have been completely redesigned, with proper multi-architecture images now available.
New Look for the Node-RED Flow Library
The Node-RED Flow Library is a place where all third-party contributed nodes are listed. It’s also a place where users can share useful flows that they have created. With over 2200 contributed nodes and 1000+ flows, there’s a lot of great stuff in the library. The challenge is often finding what you’re looking for.
To coincide with the 1.0 release, the flow library has had a make over and a new feature added: the ability for users to create and share collections of things. This is a way to help bring some order and curation to the flow library. For example, there is a collection of extra nodes for the Node-RED Dashboard project.
Getting started with Node-RED
If this 1.0 release of Node-RED has caught your interested to find out more, you have a number of choices. You can follow the Node-RED project documentation for installing it on your local machine or a device like a Raspberry Pi. Alternatively, you will find Node-RED in the IBM Cloud catalog as one of the example starter applications.
You can also find many more articles, tutorials, and code patterns featuring Node-RED on IBM Developer.