<!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; ] >

<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>
            The following list describes what you can get from this manual:
            <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 will not give you 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
-->
