Hello, UNiD fans! Today, I'd like to talk about the design concept of UNiD products.
The UNiD Edge SDK currently under development focuses on edge devices as its initial target. Still, there are many variations of edge devices. For example, even if I only compare the OS layer, the RA series from Renesas Electronics runs a real-time OS (RTOS) such as FreeRTOS and the Raspberry Pi running a preemptive multitasking OS including the Raspberry Pi OS. In the case of Linux OSes, such as the Raspberry Pi OS, there are differences in the packages provided by different distributions, so there are even more variations.
In a sense, providing a standard UNiD Edge SDK for such a varied environment is very demanding. The SDK must have a design to handle distributions and operating systems abstractly so that edge device developers can have an "easy to implement" experience without worrying too much about the differences between devices and operating systems. My product design philosophy is heavily influenced by Doug McIlroy's Unix philosophy (1978), which he summarized in the Bell System Technical Journal as follows.
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".
- Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
- Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
- Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.
Of these, I am particularly influenced by the first statement. In modern systems, the complexity of the entire system is increasing, and designers and developers are constantly confronted with the challenge of preventing security incidents and ensuring interoperability. For example, a system like Chimera is no longer possible for anyone to accurately grasp the entire specification. Also, even if the whole team makes an effort to capture the specifications accurately, there will inevitably be parts that cannot. Still, there is a limit to the range one person can have the understanding to the specs. This kind of situation should not happen in the field of security products. The Unix philosophy is one of the most important concepts to keep in mind even today. And, the Chimera situation would not appear.
Want to make a technical deep dive into UNiD EDGE? Visit our GitHub.