Imagine you're an engineer at an ODM or OEM working on a IoT product for
the smarthome - from a simple thermostat to security alarms, from set top
boxes to internet gateways.
Linux is a fairly obvious choice to build these product that have greater
than 128MB of RAM and storage. On resource-constrained devices, an RTOS
such as Zephyr is able to even run on devices with as little as a few
hundred KB of RAM and storage.
However, the kernel is a small part of the device's software stack - there
is middleware, application frameworks, security policies, key management,
OTA and multi-year maintenance that the company needs to budget into the
device's engineering support costs.
Viewing the Linux and RTOS ecosystems as two parts of a single product
platform allows for a coherent view of both ecosystems by developers. You
want to make sure that you can apply the same set of software
configurations and policies across both ecosystems e.g. library versions,
compatible protocol suites, security configurations, OTA mechanisms and
even a single set of IP compliance tools.
As an example, when you decide you want to secure all your network
communications out-of-the-box in your product platform, you need to:
- Find an SSL library that'll fit both footprints
- Configure it to have a coherent set of modern ciphers compatible across
the two ecosystems
- Get the various protocol libraries to build against the chosen SSL
library
- Create key provisioning tools that can work across the two ecosystems
- Perform interoperability tests
Now repeat this exercise across every key component of the OS - security
policy, networking features, OTA, toolchain hardening, IP compliance tools
and you end up with a meta-project that spans and contributes to both
ecosystems.
We've started to build such a open product platform with opinionated
defaults that follow community best practices with Eclipse Oniro. And
this is our story about our plans for the future.