<!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='dev-manual-intro'>

<title>The Yocto Project Development Tasks Manual</title>
    <section id='dev-welcome'>
        <title>Welcome</title>

        <para>
            Welcome to the Yocto Project Development Tasks Manual!
            This manual provides relevant procedures necessary for developing
            in the Yocto Project environment (i.e. developing embedded Linux
            images and user-space applications that run on targeted devices).
            The manual groups related procedures into higher-level sections.
            Procedures can consist of high-level steps or low-level steps
            depending on the topic.
        </para>

        <para>
            This manual provides the following:
            <itemizedlist>
                <listitem><para>
                    Procedures that help you get going with the Yocto Project.
                    For example, procedures that show you how to set up
                    a build host and work with the Yocto Project
                    source repositories.
                    </para></listitem>
                <listitem><para>
                    Procedures that show you how to submit changes to the
                    Yocto Project.
                    Changes can be improvements, new features, or bug
                    fixes.
                    </para></listitem>
                <listitem><para>
                    Procedures related to "everyday" tasks you perform while
                    developing images and applications using the Yocto
                    Project.
                    For example, procedures to create a layer, customize an
                    image, write a new recipe, and so forth.
                    </para></listitem>
            </itemizedlist>
        </para>

        <para>
            This manual does not provide the following:
            <itemizedlist>
                <listitem><para>
                    Redundant Step-by-step Instructions:
                    For 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>
                    Reference or Conceptual Material:
                    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>.
                    </para></listitem>
                <listitem><para>
                    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.
                    </para></listitem>
            </itemizedlist>
        </para>
    </section>

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

        <para>
            Because this manual presents information for many different
            topics, supplemental information is recommended for full
            comprehension.
            For 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.
        </para>

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

        <para>
        </para>
    </section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
