Erlang-RED provides an innovative low-code, flow-based programming experience through an Erlang backend, enhancing the concurrent processing capabilities offered by Node-RED. This project aims to bridge the gap between simplicity in programming and the powerful features of Erlang, making it easier to develop complex, concurrent applications.
Erlang-RED is a visual low-code flow-based programming environment that serves as an Erlang backend for Node-RED, aimed at delivering the advantages of low-code development with the powerful concurrency capabilities of Erlang. The project is designed to be fully compatible with existing Node-RED flow code, facilitating seamless transitions for users familiar with Node-RED's ecosystem.
Node-RED is an excellent tool for designing flows that represent concurrent processing. However, the limitations of NodeJS's single-threaded architecture can hamper performance. Erlang, built for concurrency from the ground up, addresses this shortcoming – allowing for the creation of complex, multi-process applications while maintaining operational efficiency.
Erlang-RED combines the simplicity of visual flow-based programming with the robustness of Erlang, making it an ideal choice for developers seeking efficiency and reliability in concurrent applications.
The development philosophy behind Erlang-RED is rooted in flow driven development, utilizing a comprehensive set of test flows to validate node functionality. This ensures that the properties of nodes in Erlang-RED align with those of Node-RED, maintaining familiarity for users. Test flows are maintained in a separate repository for easier integration and upkeep.
Erlang-RED's architecture supports various node types that enable diverse functionalities, including:
The code structure includes interdependencies, highlighting the interconnectedness of nodes, which facilitates efficient message handling across the architecture.
Erlang-RED currently supports a range of nodes, each designed to streamline specific tasks within flow implementations. Here’s a brief overview of some of the noteworthy nodes:
| Node | Description |
|---|---|
| http in | Handles HTTP GET and POST requests. |
| json | Parses and stringifies JSON data. |
| mqtt out | Sends messages through MQTT protocol. |
| template | Supports Mustache templating for dynamic content. |
Note that not all Node-RED features are supported, and contexts for message settings are currently not available.
Erlang-RED welcomes contributions from developers looking to enrich the ecosystem with their own nodes or enhancements. The project's flexible architecture allows easy integration with Elixir through dedicated helper environments, provided a corresponding Erlang wrapper is implemented.
To support unit testing, Erlang-RED introduces assert nodes that can be employed for testing individual functionalities. Visual unit testing can be conducted directly within Node-RED, thereby integrating testing into the development workflow. The testing suite is rigorously maintained to ensure that Erlang-RED's implementation continues to align with Node-RED’s operational framework.
Erlang-RED simplifies the development process through Docker integration and concise commands for testing and building. This approach fosters quick experimentation and iteration, allowing developers to focus on crafting efficient flows.
Erlang-RED represents an innovative solution for those looking to harness the simplicity of low-code visual programming alongside the performance of Erlang's robust concurrency model. By bridging the gap between Node-RED and Erlang, this project opens the door for new possibilities in flow-based programming.
No comments yet.
Sign in to be the first to comment.