Embedded Made Easy -- Rethinking Embedded + Cloud Software Development (WIP)
This addresses the complexity of heterogeneous software stacks for developers building distributed edge-cloud applications, but remains an early-stage proposal without empirical validation.
The paper proposes a unified language and runtime system to simplify embedded and cloud software development by enabling seamless scaling across edge and cloud, with integrated diagnostics for debugging. No concrete results are provided as it is a work-in-progress vision.
The process of engineering and deploying applications in the edge/embedded space is massively complicated by the non-homogeneous nature of the software stack and the complexity of diagnostics & debugging. Often different languages and runtimes are used for different components of the system forcing designers to, irrevocably, make decisions about what components run on the periphery and what components run in the cloud. Further complications arise when handling and diagnosing failures in the system. Multiple stacks and, often, limited support for debugging complicate the already difficult task of analyzing distributed applications. This paper presents a work-in-progress vision for a unified language and runtime system that allows applications to scale seamlessly across the edge and cloud. Using a single language and runtime, applications can be developed and tested in a single environment, and then deployed to any component of the system -- from resource limited controllers to large cloud servers. Further, we outline how this retargetable stack can provide integrated diagnostics and debugging tools that allow developers to record and replay distributed events locally for analysis and debugging.