.. SPDX-License-Identifier: CC-BY-SA-2.0-UK

**********************************************
The Yocto Project Overview and Concepts Manual
**********************************************

.. _overview-manual-welcome:

Welcome
=======

Welcome to the Yocto Project Overview and Concepts Manual! This manual
introduces the Yocto Project by providing concepts, software overviews,
best-known-methods (BKMs), and any other high-level introductory
information suitable for a new Yocto Project user.

The following list describes what you can get from this manual:

-  `Introducing the Yocto Project <#overview-yp>`__\ *:* This chapter
   provides an introduction to the Yocto Project. You will learn about
   features and challenges of the Yocto Project, the layer model,
   components and tools, development methods, the
   :term:`Poky` reference distribution, the
   OpenEmbedded build system workflow, and some basic Yocto terms.

-  `The Yocto Project Development
   Environment <#overview-development-environment>`__\ *:* This chapter
   helps you get started understanding the Yocto Project development
   environment. You will learn about open source, development hosts,
   Yocto Project source repositories, workflows using Git and the Yocto
   Project, a Git primer, and information about licensing.

-  :doc:`overview-manual-concepts` *:* This
   chapter presents various concepts regarding the Yocto Project. You
   can find conceptual information about components, development,
   cross-toolchains, and so forth.

This manual does not give you the following:

-  *Step-by-step Instructions for Development Tasks:* Instructional
   procedures reside in other manuals within the Yocto Project
   documentation set. For example, the :doc:`../dev-manual/dev-manual`
   provides examples on how to perform
   various development tasks. As another example, the 
   :doc:`../sdk-manual/sdk-manual` manual contains detailed
   instructions on how to install an SDK, which is used to develop
   applications for target hardware.

-  *Reference Material:* This type of material resides in an appropriate
   reference manual. For example, system variables are documented in the
   :doc:`../ref-manual/ref-manual`. As another
   example, the :doc:`../bsp-guide/bsp-guide` contains reference information on
   BSPs.

-  *Detailed Public Information Not Specific to the Yocto Project:* For
   example, exhaustive information on how to use the Source Control
   Manager Git is better covered with Internet searches and official Git
   Documentation than through the Yocto Project documentation.

.. _overview-manual-other-information:

Other Information
=================

Because this manual presents information for many different topics,
supplemental information is recommended for full comprehension. For
additional introductory information on the Yocto Project, see the
:yocto_home:`Yocto Project Website <>`. If you want to build an image
with no knowledge of Yocto Project as a way of quickly testing it out,
see the :doc:`../brief-yoctoprojectqs/brief-yoctoprojectqs` document.
For a comprehensive list of links and other documentation, see the
":ref:`Links and Related
Documentation <resources-links-and-related-documentation>`"
section in the Yocto Project Reference Manual.
