Skip to content

Zephyr Developer Summit 2024 (Seattle, Washington) - Community Focus

 

Zephyr Maintainers - Zephyr Developer Summit 2024 (Seattle, Washington)

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...

 

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:


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.


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.