The Yocto Project: What It Is and What It Isn’t

By Davide Ricci

Davide-ricci-85x85

As I work heavily with embedded Linux on a daily basis, I’m often asked about the Yocto Project.  While the Yocto Project is gaining traction and folks in the industry are generally aware of it, there still exists a bit of unfamiliarity of the details. What exactly is the Yocto Project? Is it a Linux distribution?  How would I use it in my embedded Linux projects? 

Let’s dig in. The Yocto Project is an open source collaboration project that provides sorely needed standardized, high-quality infrastructure, tools and methodologies to help decrease the complexity and increase the portability of embedded Linux implementations. It is not a Linux distribution similar to what Wind River and other Linux distributors provide.  

A lot of vendors across the hardware and software ecosystem participate in the Yocto Project, and together this community is helping embedded Linux developers realize greater cross-platform compatibility and component interoperability.   How the heck does the Yocto Project accomplish that?

Consider this: In the embedded world, building a scalable Linux relies on the availability of a piece of software and set of associated tools. When taking the usual open source input (i.e. a kernel, userspace packages, patches) and your own input (size of the filesystem, kernel configuration), and using the appropriate cross-toolchain would produce different output (one for IA, another for ARM, etc.).

It's not unlike cooking. With the same ingredients (flour, water, salt, sugar) and set of tools (mixer, spoons, rolling pin), you can come out with different results just by slightly changing your recipe (different temperature, proportions, etc.), and in the end you might pull off pizza or bread! Now, think about trying to combine recipes or perform some fine-tuning, without a common set of metrics. One recipe may require a tablespoon, another teaspoon, or liter or gram. This challenge is often what you see in the embedded Linux world before using a standardized environment like the Yocto Project:  No common repository for ingredients (kernel, userspace), no common set of recipes for cross-architecture builds, no common tools (toolchain, makefiles, compilers, debuggers), and no common build system to bake all the ingredients together.

As an embedded Linux distributor who built and maintained our own build infrastructure, I am excited to say that by adopting the Yocto Project as our standard build environment, we’ve removed a major part of the effort and cost of packaging a user-friendly, standards-based embedded Linux distribution.    Now we can focus on developing cool new features and cutting-edge capabilities. In other words, our engineering team is having a lot more fun these days! 

For customers, the value proposition is no vendor lock-in if they adopt the freely available Yocto Project infrastructure or engage with vendors like Wind River who embrace the Yocto Project.   We pride ourselves on delivering the leading embedded Linux solution, while helping our customers manage risk. It’s just good business sense to keep your technology options open.   

The benefits of better interoperability, portability and reuse of our Linux implementation means we can build better stuff cheaper and faster. How great is that?   For our customers, that translates to Wind River’s ability to deliver far greater value at a lower cost. You can see that everyone wins with the Yocto Project!

Wind River is dedicated to advancing the state of embedded Linux, and will continue to support open standard efforts like the Yocto Project to deliver commercial-grade, optimized, open standard offerings that allow our customers to get the greatest value out of their open-source platforms.

I’d be interested to hear your feedback. Please feel free to post comments on what you’re hearing in relation to Yocto.

To stay posted, sign up here.

 

For additional information from Wind River, visit us on Facebook.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>