I'm expriencing a great confusion about the threesom of terms: Yocto, OpenEmbedded and Poky. I'll quote some quotes from the documentation, note what i understand and ask some questions along:
What is Yocto?
I'll start with trying to understand what exactly is the Yocto Project. This is from the first paragraph of the Yocto Project Overview and Concepts Manual:
The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems that are designed for embedded products regardless of the product's hardware architecture. Yocto Project provides a flexible toolset and a development environment that allows embedded device developers across the world to collaborate through shared technologies, software stacks, configurations, and best practices used to create these tailored Linux images.
Ok, i understand that Yocto is a project that helps developers to.. and provides.. But exactly is it? is it a software? is it just a bunch of people? The word "project" can be understood in many ways.
OpenEmbedded and Poky:
This is the definition of the OpenEmbedded build system from the Reference Manual, Chapter 2:
The build system specific to the Yocto Project. The OpenEmbedded build system is based on another project known as "Poky", which uses BitBake as the task executor.
It seems that OpenEmbedded is based on another project named "Poky" (In what sense is this a project? is it a software? etc.), and that Poky uses BitBake. From other sources i read i understand that BitBake is the actual software that does all the building.
Now let's get to the definition of Poky. This is from the Reference Manual also:
Poky, which is pronounced Pock-ee, is a reference embedded distribution and a reference test configuration. Poky provides the following...
Poky is explained everywhere as a "reference distribution", something that you can start with. What i understand from this definition is this: Let's take Visual Studio as a comparison: You have Visual Studio, which is a tool, and you can (may) have some "reference code" that is built and run by Visual Studio.
Back to our business: Seemingly, Poky is sort of a "reference code" that the tool, in our case: OpenEmbedded, can build. But then again, in the definition of OpenEmbedded it says that OpenEmbedded is based on Poky.
It only gets worse: This is from the Yocto Project Overview and Concepts Manual, 2.3.4:
Poky is the Yocto Project reference distribution. It contains the Open-Embedded build system (BitBake and OE-Core) as well as a set of metadata to get you started building your own distribution.
So now Poky contains OpenEmbedded, which is based on Poky. What's going on??
I'd be really happy if someone could clarify all these terms to me, with respect to the famous figure that describes the relations between all these.