ZDS is always a great networking event with loads of interesting talks (Seattle,WA) This was my...
Zephyr Developer Summit 2024 (Seattle, Washington) - Community Focus
Zephyr Maintainers - Zephyr Developer Summit 2024 (Seattle, Washington)
Hot on the heels of the announcement of a second Zephyr Developer Summit (ZDS) for this year in Vienna, we thought we would share some observations from the most recent conference in Seattle. As always, the greatest opportunity was the chance to catch up in person with project leaders and other maintainers, to discuss project direction and areas we can improve on. It was also interesting to see the topics that were represented across multiple talks, particularly those that were not mentioned in the original call for proposals. To me these topics represent areas of substantial community interest and effort. In Seattle, the topic that really showcased this was composable applications.
Composable applications are ones where the final functionality is built of multiple independent blocks, like a stack of lego. The benefits of building your application this way come when you have multiple applications that need to perform similar tasks, for example obtaining a GNSS location fix. Instead of rewriting or copy-pasting this logic into each application, it can be re-used as a common building block. This is just DRY (Don’t repeat yourself) at a higher abstraction level, with the same benefits. New applications benefit from the stability of deployment-hardened code, and all applications improve with any bug fixes implemented. Ideally, the results of tasks are pushed to a common location, which enables new consumers of data to be added without needing to modify the producing logic.
There were several categories of talks under the umbrella of composable applications at ZDS.
Zephyr bus (zbus) is an embedded publish-subscribe message bus enabling many-to-many communication in an application. Zbus is ideal for sharing the results of composable tasks to other tasks:
Embedded Open Source Summit 2024: ZBus - New Features and Roadmap - Rodrig...
Embedded Open Source Summit 2024: Microservices for Microcontrollers: Comp...
Linkable loadable extensions (llext) is a mechanism for extending the functionality of an application at runtime by dynamically loading ELF files. These extensions can be written in a way to consume data from the core application while providing their own output back to the system:
Embedded Open Source Summit 2024: Extending Zephyr Based Applications at R...
Embedded Open Source Summit 2024: Zephyr Extensions: How to Dynamically Lo...
In addition to the native code execution of llext, there were also two integrations of Zephyr with well known language runtimes, WebAssembly and Python. Both of these benefit from the message passing functionality of Zbus, enabling them to interact with the larger application despite not being compiled into the original application.
Embedded Open Source Summit 2024: WASM on Zephyr: Securely Running Code in...
Embedded Open Source Summit 2024: Build Wireless Products Faster with Zeph...
These solutions are still early in development, each with their own teething issues, but it is good to see the community pushing towards greater code re-use and more robust applications as a result.