The Yocto Project helps developers and companies get their project off the ground. It is an open source collaboration project that provides templates, tools and methods to create custom Linux-based systems for embedded products, regardless of the hardware architecture.
While building Linux-based embedded products, it is important to have full control over the software running on the embedded device. This doesnt happen when you are using a normal Linux OS for your device. The software should have full access as per the hardware requirements. Thats where the Yocto Project comes in handy. It helps you create custom Linux-based systems for any hardware architecture and makes the device easier to use and faster than expected.
The Yocto Project was founded in 2010 as a solution for embedded Linux development by many open source vendors, hardware manufacturers and electronic companies. The project aims at helping developers build their own Linux distributions, specific to their own environments. The project provides developers with interoperable tools, methods and processes that help in the development of Linux-based embedded systems. The central goal of the project is to enable the user to reuse and customise tools and working code. It encourages interaction with embedded projects and has been a steady contributor to the OpenEmbedded core, BitBake, the Linux kernel development process and several other projects. It not only deals with building Linux-based embedded systems, but also the tool chain for cross compilation and software development kits (SDK) so that users can choose the package manager format they intend to use.
The goals of the Yocto Project
Although the main aim is to help developers of customised Linux systems supporting various hardware architectures, it has also a key role in several other fields where it supports and encourages the Linux community. Its goals are:
- To develop custom Linux-based embedded systems regardless of the architecture.
- To provide interoperability between tools and working code, which will reduce the money and time spent on the project.
- To develop licence-aware build systems that make it possible to include or remove software components based on specific licence groups and the corresponding restriction levels.
- To provide a place for open source projects that help in the development of Linux-based embedded systems and customisable Linux platforms.
- To focus on creating single build systems that address the needs of all users that other software components can later be tethered to.
- To ensure that the tools developed are architecturally independent.
- To provide a better graphical user interface to the build system, which eases access.
- To provide resources and information, catering to both new and experienced users.
- To provide core system component recipes provided by the OpenEmbedded project.
- To further educate the community about the benefits of this standardisation and collaboration in the Linux community and in the industry.
The Yocto Project community
The community shares many common traits with a typical open source organisation. Anyone who is interested can contribute to the development of the project. The Yocto Project is developed and governed as a collaborative effort by an open community of professionals, volunteers and contributors.
The projects governance is mainly divided into two wings administrative and technical. The administrative board includes executive leaders from organisations that participate on the advisory board and also in several sub-groups that perform several non-technical services including community management, financial management, infrastructure management, advocacy and outreach. The technical board includes several sub-groups, which oversee tasks that range from submitting patches to the project architect to deciding on who is the final authority on the project.
The building of the project requires the coordinated efforts of many people, who work in several roles. These roles are listed below:
- Architect: One who holds the final authority and provides overall leadership to the projects development.
- Sub-system maintainers: The project is further divided into several sub-projects and the maintainers are assigned to these sub-projects.
- Layer maintainers: Those who ensure the components excellence and functionality.
- Technical leaders: Those who work within the sub-projects, doing the same thing as the layer maintainers.
- Upstream projects: Many Yocto Project components such as the Linux kernel are dependent on the upstream projects.
- Advisory board: The advisory board gives direction to the project and helps in setting the requirements for the project.
The build system is composed of different layers, which are the containers for the building blocks used to construct the system. The layers are grouped according to functionality, which makes the management of extensions and customisations easier.