<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->

<chapter id='overview-manual-intro'>

<title>The Yocto Project Overview and Concepts Manual</title>
    <section id='overview-manual-welcome'>
        <title>Welcome</title>

        <para>
            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.
        </para>

        <para>
            The following list describes what you can get from this manual:
            <itemizedlist>
                <listitem><para>
                    <emphasis><link linkend='overview-yp'>Introducing the Yocto Project</link>:</emphasis>
                    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
                    <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
                    reference distribution, the OpenEmbedded build system
                    workflow, and some basic Yocto terms.
                    </para></listitem>
                <listitem><para>
                    <emphasis><link linkend='overview-development-environment'>The Yocto Project Development Environment</link>:</emphasis>
                    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.
                    </para></listitem>
                <listitem><para>
                    <emphasis><link linkend='overview-manual-concepts'>Yocto Project Concepts</link>:</emphasis>
                    This chapter presents various concepts regarding the
                    Yocto Project.
                    You can find conceptual information about components,
                    development, cross-toolchains, and so forth.
                    </para></listitem>
            </itemizedlist>
        </para>

        <para>
            This manual does not give you the following:
            <itemizedlist>
                <listitem><para>
                    <emphasis>Step-by-step Instructions for Development Tasks:</emphasis>
                    Instructional procedures reside in other manuals within
                    the Yocto Project documentation set.
                    For example, the
                    <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>
                    provides examples on how to perform various development
                    tasks.
                    As another example, the
                    <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
                    manual contains detailed instructions on how to install an
                    SDK, which is used to develop applications for target
                    hardware.
                    </para></listitem>
                <listitem><para>
                    <emphasis>Reference Material:</emphasis>
                    This type of material resides in an appropriate reference
                    manual.
                    For example, system variables are documented in the
                    <ulink url='&YOCTO_DOCS_REF_URL;'>Yocto Project Reference Manual</ulink>.
                    As another example, the
                    <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>
                    contains reference information on BSPs.
                    </para></listitem>
                <listitem><para>
                    <emphasis>Detailed Public Information Not Specific to the
                    Yocto Project:</emphasis>
                    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.
                    </para></listitem>
            </itemizedlist>
        </para>
    </section>

    <section id='overview-manual-other-information'>
        <title>Other Information</title>

        <para>
            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 <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
            If you want to build an image with no knowledge of Yocto Project
            as a way of quickly testing it out, see the
            <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
            document.
            For a comprehensive list of links and other documentation, see the
            "<ulink url='&YOCTO_DOCS_REF_URL;#resources-links-and-related-documentation'>Links and Related Documentation</ulink>"
            section in the Yocto Project Reference Manual.
        </para>
    </section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
