You're a company that is working on a suite of products that spans every conceivable gadget built for the smarthome - from a simple thermostat to security alarms, from set top boxes to internet gateways, mobile phones and tablets and even servers running in the cloud.
Linux is a fairly obvious choice to build these products on top of - it scales well for devices with more than 128MB of RAM and storage. On devices at the resource-constrained end of the spectrum, Zephyr is quickly maturing into a competitive option, able to even run on devices with as little as a few hundred of KB of RAM and storage. Both ecosystems have diverse and active communities and an open governance model so it is a no-brainer to use them as the basis for the entire suite of products by the company.
Considering Linux and Zephyr 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 - user interfaces, 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 at https://oniroproject.org. And this is our story about the challenges we've seen in getting to a coherent configuration that'll work across the entire suite of products across Linux and Zephyr and how we want to improve this interoperability in the future.