Yocto and OpenEmbedded Combine Forces: What Does It Mean?


Two major embedded Linux projects formally joined their efforts this week, a move that simplifies the landscape for device makers and embedded software developers. Yocto, a Linux Foundation (LF)-stewarded project that creates development tools, and OpenEmbedded, a community-driven distribution build system, announced their “alignment” on March 1st. The merger includes governance changes and new corporate collaborators, but for the average Linux developer, the main effect will be a streamlined embedded development process.

Yocto was launched in October of 2010, with the goal of simplifying the build process for teams working on embedded Linux systems. “Embedded” systems in Yocto’s context refers to computing environments without a traditional computer interface, and perhaps no GUI at all. It includes routers, NAS devices, and other stationary platforms that offer a web management front-end, but also extremely small, single-purpose devices that do little more than boot up and execute from flash storage. In any case, the storage, processing power, and memory available are typically very small — rarely above a few megabytes for even the most high-end routers — and almost always built on non-x86 CPU architectures.

That class of device is quite different from the portable GUI-based platform of consumer electronics targeted by MeeGo, where today’s mobile phones offer almost all of the resources found on desktops and notebooks of just a few years ago. Building “true” embedded Linux products requires a cross-compilation environment and a distribution build system that can target very specific device specifications. Yocto sought to simplify the process by creating plugins for major host IDEs like Eclipse and Anjuta, plus badly-needed missing pieces such as a fakeroot-like utility called Pseudo, a cross-prelinker, and a suite of testing and quality-assurance tools.

Initially, Yocto worked on the Poky build system, which allows developers to cross-compile an entire embedded Linux distribution quickly and with guarantees of stability. But Poky itself shares many of the goals of OpenEmbedded, although OpenEmbedded is not limited to building embedded Linux alone, and the two projects have long maintained compatibility. Consequently, when Yocto was first announced, there were questions as to whether it competed with the older and well-established OpenEmbedded or complemented it.

Thus, this week’s announcement does not amount to a significant shift in the underlying technology, but it does formally align two projects that already had similar goals. As a result of the merger, Yocto will now support an “OpenEmbedded Core” that can serve as a foundation for building an embedded Linux distribution. The OpenEmbedded Core consists of base-layer recipes and files, on top of which the developer would stack other components, including other Yocto utilities, hardware-specific drivers, and custom user interface or application code.

By strictly defining the core, the two projects resolve one of the original criticisms of OpenEmbedded — that its broad design included many components unnecessary for true embedded products, adding development time and making QA more complicated.

Along with the technical adoption of OpenEmbedded Core, the merger adds OpenEmbedded project representatives to the Yocto governance board, to help ensure that the two projects continue to work smoothly together. The Linux Foundation also announced that a slate of commercial vendors was officially throwing its support behind the combined effort, including Cavium Networks, Dell, Freescale Semiconductor, Intel, LSI, Mentor Graphics, Mindspeed, MontaVista Software, NetLogic Microsystems, Texas Instruments, Tilera, Timesys, and Wind River.

With broader support, Yocto is far less likely to be perceived as a “challenge” to OpenEmbedded, and raise the ugly spectre of fragmentation. The better-defined OpenEmbedded Core system gives vendors building devices with OpenEmbedded access to the Yocto tool set, and Yocto developers an additional set of options for expanding their system beyond what was offered by Poky.

Ultimately, the type of embedded devices where Yocto and OpenEmbedded make their strongest showing are those where the vast majority of consumers is never aware of which operating system is running on the inside — and where they shouldn’t have to care. Yet that’s precisely why Linux is the dominant player on these devices: it’s customizable and solid enough that the owner simply flips the power switch and it runs. But historically it hasn’t been simple to adapt Linux to the peculiarities of any given embedded hardware device. Yocto doesn’t yet make developing for these systems trivial, but it’s a big step in the right direction, and sharing code with OpenEmbedded only makes things easier.