By Jim White, EdgeX Foundry TSC chair
May was a busy month at EdgeX Foundry. EdgeX released version 2.2, Kamakura in the middle of May (details here) and went straight into planning our fall release – code named Levski. We also selected our 2022 EdgeX Award winners as well, and I’ll be posting a follow-up to congratulate them and speak to some of their efforts.
Levski
First, what is the next release of EdgeX going to be about? It is slated to be released in November of 2022. It will, in all likelihood be another minor dot release (version 2.3 to be precise) that is backward compatible with all EdgeX 2.x releases. The Levski release will also not be an LTS release. Jakarta remains the first and only LTS for EdgeX for now (more on that below). By the way, in case you are wondering where the name Levski (or the name of any EdgeX release) comes from, a top contributor to our project is selected in each release cycle to name an upcoming release. Levski is named after one of our CLI developers’ favorite home-country (she is from Bulgaria) mountain peak.
You will see the words “likely” and “anticipate” show up a lot in this post because a lot can happen in the span of six months when building open-source software. These caveats are there to remind the reader that what is planned is not set in stone – so if you are an adopter/user of EdgeX, design accordingly.
Major Features
Two of the most important features that we are looking to land in the Levski release are:
- North-to-south message bus communications
- Control plane (aka system management) events
North-to-south messaging will set up the means for a 3rd party application or cloud system to use MQTT to communicate with EdgeX’s command service and trigger an actuation or data fetch command all the way through to the devices/sensors.
Today, communications going from north to south in EdgeX are accomplished via REST. Therefore, things are not really asynchronous and there isn’t the opportunity to set the quality of service (QoS) of the communications in these instances. Levski will allow adopters of EdgeX to use messaging to trigger actions and communicate data needs. This compliments what is already available in EdgeX which is the ability to use messaging from south to north. The design for this feature was finalized in this past Kamakura release cycle. You can see the design document for more details.
The second major feature to highlight in Levski is control plane events (CPE) or also known as system management events. This feature will allow EdgeX to send important events to would-be listeners (could be other EdgeX services, could be 3rd party subscribers) that something (an event) has happened in EdgeX. Examples of control plane events are that a new device/sensor was provisioned or a new profile was uploaded. Control plane events could also report on micro service issues – such as not having access to a database it needs. Each EdgeX micro service will define its own control plane events, however in this release, it is anticipated that control plane events will first be tried with core metadata.
Other Features and Fixes
More Metrics
During the Kamakura release cycle, we implemented a new beta metrics/telemetry feature. This feature allows any service to report (via message bus) on telemetry from the service that allows for better monitoring and management of EdgeX. Telemetry such as how many events have been persisted, or how long does it take for a message to be processed in an app service can now be collected and published by EdgeX Metrics. In this release cycle, we plan to proliferate metrics across all services (it was only in a few services for Kamakura) and take the feature out of beta status.
Experiment with MQTT authentication in service-to-service communications
Today, EdgeX has an API gateway to protect the REST APIs. We also secure external message bus communications, but there is nothing that secures message bus communications internally. In Levski, the community is going to be exploring possible solutions for securing MQTT message traffic. We plan to explore and prototype with OpenZiti – a zero trust open-source project that provides an overlay network for secure communications between services and may even allow us to provide an alternative to our API gateway (Kong today).
Unit of Measures
In this past release cycle, we spent some time designing a solution that would allow units of measure to be associated to all of the edge sensor data collected. There are many “standard” units of measure in the world. We did not pick one, but allowed the adopter to pick / use the units of measure they want associated to their data. In the Levski release, we hope to implement the design we formalized in the last release. See our design documentation for more details.
Miscellaneous
The community is seeing more efforts by users/adopters to deploy EdgeX in non-containerized environments and wanting to build EdgeX for other environments (ARM32, RISC-V, etc.). There is also a growing desire on the part of adopters to be able to have versions of our micro services that don’t include dependencies or modules that aren’t being used (for example, not including 0MQ when not using 0MQ for communications or not including security modules in a deployment that is not using EdgeX security features). Therefore, the project is looking to provide more “build” from scratch options that remove unnecessary libraries, modules, etc. in environments where these features are not needed. We call them “lite builds” and they should be more prevalent in Levski.
A growing demand for NATs as a message bus implementation in EdgeX will have the community doing some research and experimentation with NATS in this release cycle. It is unlikely that full-fledged NATS message bus support comes out of this release, but we should begin to understand if NATs can be used as a message but implementation for our messaging abstraction and know the benefits of NATs over Redis Pub/Sub or MQTT for our use cases.
As you hopefully can see, Levski, while considered a minor release, will likely include a number of useful new features.
EdgeX 3.0
As part of the planning cycle, the EdgeX community leadership also considered the question of the next major release (EdgeX 3.0) and next LTS release. By project definition, major releases are reserved for significant new features and inclusion of non-backward compatible changes. We have tentatively slated the spring of 2023 as the target time for EdgeX 3.0. We have been collecting a number of fixes and features that will require non-backward compatible changes. We think the time will be right to work on these in the Minnesota release (code name for the spring 2023 release). If all goes to plan, an LTS release will follow that in the fall of 2023. The Napa release (code name for the fall 2023 release) would be the community’s second LTS release. The 3rd major release and 2nd LTS release would fall exactly two years from our 2nd major release (Ireland in spring 2021) and first LTS (Jakarta in fall 2021).
Adopters should take some comfort in the fact that the project is healthy, stable and is looking out to the future. As always, we welcome input and feedback on how EdgeX is supporting your edge/IOT solutions and what we can do better.