<title>Introduction</title>
<para>
- BitBake is a tool for executing tasks commonly performed by software
- developers when building systems on a daily basis.
- BitBake can build Systems consisting of numerous individual pieces
- of software, or can be used to build a single application.
- Example tasks that BitBake can execute are fetching source code,
- applying patches to source code, configuring, compiling, and
- packaging applications into a complete system, and managing metadata.
- BitBake abstracts the information for completing individual tasks
- into files known as recipes.
- Recipes contain all of the relevant information required by BitBake
- to complete a given task including dependencies, source file
- locations, etc.
- BitBake is similar to
- <ulink url='http://www.gnu.org/software/make/'>GNU Make</ulink>
- and other build tools.
+ fundamentally, BitBake is a generic task execution
+ engine that allows shell and Python tasks to be run
+ efficiently and in parallel while working within
+ complex inter-task dependency constraints.
+ One of BitBake's main users, OpenEmbedded, takes this core
+ and builds embedded Linux software stacks using
+ a task-oriented approach.
+ </para>
+
+ <para>
+ Conceptually, BitBake is similar to GNU Make in
+ some regards but has significant differences:
+ <itemizedlist>
+ <listitem><para>
+ BitBake executes tasks according to provided
+ metadata that builds up the tasks.
+ Metadata is stored in recipe (<filename>.bb</filename>),
+ configuration (<filename>.conf</filename>), and class
+ (<filename>.bbclass</filename>) files and provides
+ BitBake with instructions on what tasks to run and
+ the dependencies between those tasks.
+ </para></listitem>
+ <listitem><para>
+ BitBake includes a fetcher library for obtaining source
+ code from various places such as source control
+ systems or websites.
+ </para></listitem>
+ <listitem><para>
+ The instructions for each unit to be built (e.g. a piece
+ of software) are known as recipe files and
+ contain all the information about the unit
+ (dependencies, source file locations, checksums, description
+ and so on).
+ </para></listitem>
+ <listitem><para>
+ BitBake includes a client/server abstraction and can
+ be used from a command line or used as a service over XMLRPC and
+ has several different user interfaces.
+ </para></listitem>
+ </itemizedlist>
</para>
</section>