Releases According to a Strict Schedule: Major releases occur on a six-month cycle predictably
in October and April. The most recent two releases support point releases to address
common vulnerabilities and exposures. This predictability is crucial for projects based on the
Yocto Project and allows development teams to plan activities.
Rich Ecosystem of Individuals and Organizations: For open source projects, the value of
community is very important. Support forums, expertise, and active developers who
continue to push the Yocto Project forward are readily available.
Binary Reproducibility: The Yocto Project allows you to be very specific about dependencies
and achieves very high percentages of binary reproducibility (e.g. 99.8% for core-image-
minimal ). When distributions are not specific about which packages are pulled in and in
what order to support dependencies, other build systems can arbitrarily include packages.
License Manifest: The Yocto Project provides a license manifest for review by people who
need to track the use of open source licenses (e.g. legal teams).
2.1.2 Challenges
Here are challenges you might encounter when developing using the Yocto Project:
Steep Learning Curve: The Yocto Project has a steep learning curve and has many different
ways to accomplish similar tasks. It can be difficult to choose between such ways.
Understanding What Changes You Need to Make For Your Design Requires Some Research:
Beyond the simple tutorial stage, understanding what changes need to be made for your
particular design can require a significant amount of research and investigation. For
information that helps you transition from trying out the Yocto Project to using it for your
project, see the “What I wish I’d known about Yocto Project” and “Transitioning to a custom
environment for systems development” documents on the Yocto Project website.
Project Workflow Could Be Confusing: The Yocto Project workflow <overview-
manual/development-environment:the yocto project development environment> could be
confusing if you are used to traditional desktop and server software development. In a
desktop development environment, there are mechanisms to easily pull and install new
packages, which are typically pre-compiled binaries from servers accessible over the
Internet. Using the Yocto Project, you must modify your configuration and rebuild to add
additional packages.
Working in a Cross-Build Environment Can Feel Unfamiliar: When developing code to run on a
target, compilation, execution, and testing done on the actual target can be faster than
running a BitBake build on a development host and then deploying binaries to the target for
test. While the Yocto Project does support development tools on the target, the additional
step of integrating your changes back into the Yocto Project build environment would be
required. Yocto Project supports an intermediate approach that involves making changes on
the development system within the BitBake environment and then deploying only the
updated packages to the target.
The Yocto Project OpenEmbedded Build System produces packages in standard formats (i.e.
RPM, DEB, IPK, and TAR). You can deploy these packages into the running system on the
target by using utilities on the target such as rpm or ipk .
Initial Build Times Can be Significant: Long initial build times are unfortunately unavoidable
due to the large number of packages initially built from scratch for a fully functioning Linux
system. Once that initial build is completed, however, the shared-state (sstate) cache
mechanism Yocto Project uses keeps the system from rebuilding packages that have not
been “touched” since the last build. The sstate mechanism significantly reduces times for
successive builds.