<!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='resources'>
<title>Contributions and Additional Information</title>

<section id='resources-intro'>
    <title>Introduction</title>
    <para>
        The Yocto Project team is happy for people to experiment with the
        Yocto Project.
        A number of places exist to find help if you run into difficulties
        or find bugs.
        This presents information about contributing and participating in
        the Yocto Project.
    </para>
</section>

<section id='resources-contributions'>
    <title>Contributions</title>

    <para>
        The Yocto Project gladly accepts contributions.
        You can submit changes to the project either by creating and sending
        pull requests,
        or by submitting patches through email.
        For information on how to do both as well as information on how
        to identify the maintainer for each area of code, see the
        "<ulink url='&YOCTO_DOCS_DEV_URL;#how-to-submit-a-change'>Submitting a Change to the Yocto Project</ulink>"
        section in the Yocto Project Development Tasks Manual.
    </para>
</section>

<section id='resources-bugtracker'>
    <title>Yocto Project Bugzilla</title>

    <para>
        The Yocto Project uses its own implementation of
        <ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink> to
        track defects (bugs).
        Implementations of Bugzilla work well for group development because
        they track bugs and code changes, can be used to communicate changes
        and problems with developers, can be used to submit and review patches,
        and can be used to manage quality assurance.
    </para>

    <para>
        Sometimes it is helpful to submit, investigate, or track a bug against
        the Yocto Project itself (e.g. when discovering an issue with some
        component of the build system that acts contrary to the documentation
        or your expectations).
    </para>

    <para>
        A general procedure and guidelines exist for when you use Bugzilla to
        submit a bug.
        For information on how to use Bugzilla to submit a bug against the
        Yocto Project, see the following:
        <itemizedlist>
            <listitem><para>
                The
                "<ulink url='&YOCTO_DOCS_DEV_URL;#submitting-a-defect-against-the-yocto-project'>Submitting a Defect Against the Yocto Project</ulink>"
                section in the Yocto Project Development Tasks Manual.
                </para></listitem>
            <listitem><para>
                The Yocto Project
                <ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>
                </para></listitem>
        </itemizedlist>
        For information on Bugzilla in general, see
        <ulink url='http://www.bugzilla.org/about/'></ulink>.
    </para>
</section>

<section id='resources-mailinglist'>
    <title>Mailing lists</title>

    <para>
        A number of mailing lists maintained by the Yocto Project exist
        as well as related OpenEmbedded mailing lists for discussion,
        patch submission and announcements.
        To subscribe to one of the following mailing lists, click on the
        appropriate URL in the following list and follow the instructions:
        <itemizedlist>
            <listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/yocto'></ulink> -
                General Yocto Project discussion mailing list. </para></listitem>
            <listitem><para><ulink url='&OE_LISTS_URL;/listinfo/openembedded-core'></ulink> -
                Discussion mailing list about OpenEmbedded-Core (the core metadata).</para></listitem>
            <listitem><para><ulink url='&OE_LISTS_URL;/listinfo/openembedded-devel'></ulink> -
                Discussion mailing list about OpenEmbedded.</para></listitem>
            <listitem><para><ulink url='&OE_LISTS_URL;/listinfo/bitbake-devel'></ulink> -
                Discussion mailing list about the
                <link linkend='bitbake-term'>BitBake</link>
                build tool.</para></listitem>
            <listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/poky'></ulink> -
                Discussion mailing list about
                <link linkend='poky'>Poky</link>.
                </para></listitem>
            <listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/yocto-announce'></ulink> -
                Mailing list to receive official Yocto Project release and milestone
                announcements.</para></listitem>
        </itemizedlist>
    </para>
    For more Yocto Project-related mailing lists, see the
    <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
</section>

<section id='resources-irc'>
    <title>Internet Relay Chat (IRC)</title>

    <para>
        Two IRC channels on freenode are available for the Yocto Project and Poky discussions:
        <itemizedlist>
            <listitem><para><filename>#yocto</filename></para></listitem>
            <listitem><para><filename>#poky</filename></para></listitem>
        </itemizedlist>
    </para>
</section>

<section id='resources-links-and-related-documentation'>
    <title>Links and Related Documentation</title>

    <para>
        Here is a list of resources you might find helpful:
        <itemizedlist>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_HOME_URL;'>The Yocto Project website</ulink>:
                </emphasis> The home site for the Yocto Project.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_WIKI_URL;/wiki/Main_Page'>The Yocto Project Main Wiki Page</ulink>:
                </emphasis>
                The main wiki page for the Yocto Project.
                This page contains information about project planning,
                release engineering, QA &amp; automation, a reference
                site map, and other resources related to the Yocto Project.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&OE_HOME_URL;'>OpenEmbedded</ulink>:
                </emphasis>
                The build system used by the Yocto Project.
                This project is the upstream, generic, embedded distribution
                from which the Yocto Project derives its build system (Poky)
                and to which it contributes.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='http://www.openembedded.org/wiki/BitBake'>
                BitBake</ulink>:
                </emphasis> The tool used to process metadata.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>:
                </emphasis>
                A comprehensive guide to the BitBake tool.
                If you want information on BitBake, see this manual.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>:
                </emphasis>
                This short document lets you experience building an image using
                the Yocto Project without having to understand any concepts or
                details.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>:
                </emphasis>
                This manual provides overview and conceptual information
                about the Yocto Project.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>:
                </emphasis>
                This manual is a "how-to" guide that presents procedures
                useful to both application and system developers who use the
                Yocto Project.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
                manual:</emphasis>
                This guide provides information that lets you get going
                with the standard or extensible SDK.
                An SDK, with its cross-development toolchains, allows you
                to develop projects inside or outside of the Yocto Project
                environment.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>:
                </emphasis>
                This guide defines the structure for BSP components.
                Having a commonly understood structure encourages
                standardization.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>:
                </emphasis>
                This manual describes how to work with Linux Yocto kernels as
                well as provides a bit of conceptual information on the
                construction of the Yocto Linux kernel tree.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_REF_URL;'>Yocto Project Reference Manual</ulink>:
                </emphasis>
                This manual provides reference material such as variable,
                task, and class descriptions.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_MM_URL;'>Yocto Project Mega-Manual</ulink>:
                </emphasis>
                This manual is simply a single HTML file comprised of the
                bulk of the Yocto Project manuals.
                The Mega-Manual primarily exists as a vehicle by which you can
                easily search for phrases and terms used in the Yocto Project
                documentation set.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_PROF_URL;'>Yocto Project Profiling and Tracing Manual</ulink>:
                </emphasis>
                This manual presents a set of common and generally useful
                tracing and profiling schemes along with their applications
                (as appropriate) to each tool.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>:
                </emphasis>
                This manual introduces and describes how to set up and use
                Toaster.
                Toaster is an Application Programming Interface (API) and
                web-based interface to the
                <link linkend='build-system-term'>OpenEmbedded Build System</link>,
                which uses BitBake, that reports build information.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_DOCS_SDK_URL;#adt-eclipse'>Eclipse IDE Yocto Plug-in</ulink>:
                </emphasis>
                Instructions that demonstrate how an application developer
                uses the Eclipse Yocto Project Plug-in feature within
                the Eclipse IDE.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_WIKI_URL;/wiki/FAQ'>FAQ</ulink>:
                </emphasis>
                A list of commonly asked questions and their answers.
                </para></listitem>
            <listitem><para>
                <emphasis>Release Notes:</emphasis>
                Features, updates and known issues for the current
                release of the Yocto Project.
                To access the Release Notes, go to the
                <ulink url='&YOCTO_HOME_URL;/software-overview/downloads/'>Downloads</ulink>
                page on the Yocto Project website and click on the
                "RELEASE INFORMATION" link for the appropriate release.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink>:
                </emphasis>
                The bug tracking application the Yocto Project uses.
                If you find problems with the Yocto Project, you should report
                them using this application.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla Configuration and Bug Tracking Wiki Page</ulink>:
                </emphasis>
                Information on how to get set up and use the Yocto Project
                implementation of Bugzilla for logging and tracking Yocto
                Project defects.
                </para></listitem>
            <listitem><para>
                <emphasis>Internet Relay Chat (IRC):</emphasis>
                Two IRC channels on freenode are available
                for Yocto Project and Poky discussions: <filename>#yocto</filename> and
                <filename>#poky</filename>, respectively.
                </para></listitem>
            <listitem><para>
                <emphasis>
                <ulink url='http://wiki.qemu.org/Index.html'>Quick EMUlator (QEMU)</ulink>:
                </emphasis>
                An open-source machine emulator and virtualizer.
                </para></listitem>
        </itemizedlist>
    </para>
</section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
