In the fields of embedded and IoT design, hardware devices and software have traditionally been closely connected, and as systems have become more intricate, this coupling has only grown stronger.
In contrast, modern software design (outside of embedded/IoT) is more flexible. This modern design adopts a microservices-based approach, which results in a less monolithic structure. It utilizes hardware-independent blocks of code rather than a single, unified block
Now, when we look at cyber-physical systems, those characteristics are precisely needed – scalability and flexibility with the choice of hardware.
How do we as an industry make this huge transition from monolithic, tightly-coupled systems to an open source microservices-type approach? We are considering designing a system that allows for interchangeability at the board level, so that, for instance, an ESP32 board can be replaced with one from NXP if desired.
Throughout my academic and professional career, I have consistently encountered the same issues.
Change a component, a system, add a feature, and the whole project had to be redesigned. At the same time, I saw my friends working in the software industry change course with alarming ease. All the knowledge we developed to redo what had already been done could be much more efficient if it could be reused from project to project, whatever the purpose.
And then having the ability to reuse the code and methods developed by others. This could be represented by SDKs in the software domain, for example.
A common tool adaptable to the project
With Luos, our goal is to give each developer the necessary and useful tools so that they can be as flexible and efficient in their personal or professional project. And for this change in method to take place and for us to talk about a change in philosophy beyond Luos, using the open-source philosophy was an obvious choice.
The open-source philosophy will allow anyone to improve, reuse, and share code.
Coupled with a microservices philosophy, unrelated pieces of hardware or code will be able to work together without having to know specifically how. This means being attentive to the security of the system, but these checks are carried out independently depending on the code sections.
The next piece of the puzzle needed is to share an open API allowing users to use it as a command base, guaranteeing good compatibility. Users should be encouraged to improve those APIs, create new ones for uncovered features, and share those to create a versatile ecosystem.
Sharing experience and knowledge
One of the main challenges of collaborating on, and specifically using, open-source projects is often the lack of direct access to support or assistance when needed. These projects require users who are self-motivated and invested in the idea to develop, understand, maintain, and improve them. This can be difficult if one needs to use the technology but lacks the necessary resources or support.
As a result, a few months ago the Luos team and I decided to create a community on Discord for cyber-physical systems, embedded, and edge developers to share their perspectives, best practices, and recommended tools for working with CPS, embedded, and edge systems. As our idea/project involves a change in how we develop projects, we need to surround ourselves with as many people as possible who work in embedded systems of all types daily.
Makers have joined the community, as well as companies such as Siemens, Dyson, and Bosch, students, and researchers who come together to assist one another, learn from each other, and progress collectively.
This community guarantees the maintenance of the technology and its exchanges keep ideas flowing, which helps more and more projects.
A technology that improves thanks to the community
The community of CPS, embedded, and edge developers, who are familiar with the problems and challenges that many encounter, is also very valuable for Luos as the code developed will enhance the technology on a global scale. Linux or Github are living examples of this.
The embedded, CPS and edge developers Discord community already has over 11,000 members who exchange ideas daily.
If you are interested in joining the community and doing your monitoring, getting help, exchanging ideas or ways to develop, we invite you to join.Get started with Luos