<?xml version="1.0"?>
<!DOCTYPE chapter PUBLIC  "-//OASIS//DTD DocBook XML V4.5//EN"  
    "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

<!--========================================================================-->
<chapter id="concepts">

<title>Concepts</title>

<para>This chapter introduces some basic concepts that will help you to use @project.name@.</para>

<!--========================================================================-->	
<section id="concepts.modular">
	
<title>Modular Runtimes and Applications</title>
	
<para>
	@tomcat.product.name@, @jetty.product.name@, @kernel.product.name@ and @nano.product.name@ are Java runtimes each composed of
	a collection of modules and supporting applications which are also composed of a
	collection of modules.
	Modules can be shared between applications and multiple versions of modules
	can co-exist.
</para>

</section>

<!--========================================================================-->	
<section id="concepts.osgi">
	
<title>OSGi Concepts</title>

<para>Modules in @project.name@ are represented using a standard Java
module system known as <emphasis>OSGi</emphasis>.
Modules in OSGi are known as <emphasis>bundles</emphasis>.
Bundles consist of programs and resources organised by Java package together
with metadata which declares imported and exported packages.
A bundle <emphasis>exports</emphasis> a package to make the corresponding programs and resources
available for use by other bundles.
A bundle <emphasis>imports</emphasis> a package to use the corresponding programs and resources of
another bundle.</para>

<para>
	Representing a program as a collection of bundles makes it easier for the
	programmer to manage it and modify it and for teams of programmers to divide
	responsibilities between themselves.
	A bundle is similar to a Java class in this respect. Design principles similar to those for
	organising data and programs into classes can be applied
	to organising applications into bundles.
</para>

<para>
	An industry consortium known as the
	<emphasis>OSGi Alliance</emphasis> develops OSGi
	specifications, reference implementations, and compliance tests.
	@project.name@ is built on the Equinox OSGi framework which is also
	the reference implementation for the OSGi framework specification.
</para>

<!--========================================================================-->
<section>
	
<title>Bundles</title>

<para>
Each bundle is stored in a file which conforms to the JAR file format and
can contain Java classes, a manifest (in <literal>META-INF/MANIFEST.MF</literal>),
and further resource files.</para>

<para>The OSGi framework enables bundles to be installed and run.</para>

<para>OSGi identifies bundles <quote>by name</quote> and <quote>by identifier</quote> (id).</para>

<para>The <emphasis>symbolic name</emphasis> and 
<emphasis>version</emphasis> of a bundle are attributes of the bundle which identify the bundle.
A bundle declares its <emphasis>symbolic name</emphasis> and <emphasis>version</emphasis>
in its manifest (a file called <literal>MANIFEST.MF</literal>) like this:
<programlisting>Bundle-SymbolicName: org.foo.bundle
Bundle-Version: 1.2.3.BUILD-2009-06-04
</programlisting>
</para>

<para>Additionally, the OSGi framework
assigns a distinct number, known as a <emphasis>bundle id</emphasis>, to each bundle
as it is installed. Bundles may be referred to <quote>by identifier</quote> using this number.
The OSGi framework itself resides in a
bundle with bundle id <literal>0</literal>.</para>

<para>The
dependencies between bundles are expressed statically in terms of packages and
dynamically in terms of services. A package is familiar to Java programmers.
For example, a Java program may depend on a class <literal>org.foo.X</literal>, 
from package <literal>org.foo</literal>, and a bundle
containing that program
would either need to contain <literal>org.foo.X</literal> or depend on the
package <literal>org.foo</literal>.
Package dependencies are specified in the bundle manifest, for example:
<programlisting>Import-Package: org.foo
</programlisting>
</para>

<para>A bundle which provides a package for use by other bundles <emphasis>must</emphasis>
export the package in its manifest. For example:
<programlisting>Export-Package: org.foo
</programlisting>
</para>

<para>The OSGi framework ensures that a given bundle&rsquo;s package dependencies
can be <emphasis>satisfied</emphasis> before the bundle runs. This process is known as
<emphasis>resolution</emphasis>.</para>

<para>After a bundle is resolved, its classes and resources are available for
loading.
In OSGi, bundles and their packages do not appear on the application classpath.
Instead, each bundle has a class loader which loads its own classes and loads classes belonging to each of its
imported packages by deferring to the bundle class loader that exports the package.</para>

</section>

<!--========================================================================-->
<section>
	
<title>Life Cycle</title>

<para>The OSGi framework manages the <emphasis>life cycle</emphasis> of each bundle. A bundle is
first of all <emphasis>install</emphasis>ed and will be in the INSTALLED state.
If a request is made to <emphasis>start</emphasis> the bundle, the OSGi framework <emphasis>resolve</emphasis>s the bundle
and, if resolution was successful, will subsequently move the bundle to the ACTIVE state.
If a request is made to <emphasis>stop</emphasis> the bundle, the OSGi framework will move the
bundle back to the RESOLVED state. A request may then be made to <emphasis>uninstall</emphasis>
the bundle.</para>

<para>While the bundle is INSTALLED, ACTIVE or RESOLVED, it may be <emphasis>updated</emphasis> to pick up
some changes. These changes are not detected by bundles which were depending
on the bundle before it was updated.
A <quote>refresh packages</quote> operation may be performed to ripple the
changes out to those bundles. (See <xref linkend="concepts.services"/>.)</para>
<para>The life cycle of a bundle can be summarised by a state transition diagram.
This diagram shows some more of the intermediate states of a bundle not described in the overview above:
<figure>
<title>Bundle life cycle</title>
	<mediaobject>
		<imageobject role="fo">
    		<imagedata fileref="images/concepts/bundle-lifecycle.png" format="PNG" align="center" width="120mm"/>
    	</imageobject>
		<imageobject role="html">
			<imagedata fileref="images/concepts/bundle-lifecycle.png" format="PNG" align="center"/>
		</imageobject>
	</mediaobject>
</figure></para>

</section>

<!--========================================================================-->
<section id="concepts.services" xreflabel="Services concepts">
	
<title>Services</title>

<para>Bundles may publish Java objects, known as <emphasis>services</emphasis>, 
to a registry managed by the OSGi framework. Other bundles running in
the same OSGi framework can then find and use those services. Services
are typically instances of some shared Java interface. A bundle which
provides a service need not then export the package containing the
<emphasis>implementation</emphasis>
class of the service.
</para>

<para>For example, a bundle could export a package containing the interface
<literal>org.bar.SomeInterface</literal>, thus:

<programlisting>Export-Package: org.bar
</programlisting>
</para>

<para>…implement the interface with a class <literal>SomeImpl</literal>:

<programlisting>package org.bar.impl;

class SomeImpl implements SomeInterface {
	…
}
</programlisting>
</para>

<para>…create an instance of <literal>SomeImpl</literal> and 
then publish this instance (as an instance of the interface <literal>SomeInterface</literal>).
</para>

<para>An OSGi framework publishes a number of standard services. For example, the 
<emphasis>Package Admin</emphasis> service provides the <quote>refresh packages</quote> life cycle operation
mentioned above.</para>

<para>OSGi provides an <glossterm>API</glossterm> which can be used to publish and find services,
but it is much simpler to use Spring DM or Blueprint to accomplish this. (See <xref linkend="concepts.springdm"/>.)</para>

</section>

<!--========================================================================-->
<section>
	
<title>Versioning</title>

<para>
	OSGi allows different versions of bundles, packages, and several
	other entities, to co-exist in the same framework
	and provides some mechanisms for managing these versions.
</para>

<section>

<title>Version Numbers</title>

<para>An OSGi <emphasis>version number</emphasis> consists of up to three numeric components, 
or exactly three
numeric components followed by a string component. These components are
separated by a period (<quote><literal>.</literal></quote>) and
are called the <emphasis>major</emphasis>, <emphasis>minor</emphasis>, <emphasis>micro</emphasis>,
and <emphasis>qualifier</emphasis> components, respectively.
</para>
<para>For example, the version <literal>2.4.1.ga</literal> has major component <literal>2</literal>, minor component
<literal>4</literal>, micro component <literal>1</literal>,
and a qualifier component <literal>ga</literal>. (There are restrictions on the characters that can appear in
a qualifier. For example: letters, digits, underscores and hyphens are allowed; periods and commas are not.)</para>

<para>Trailing components may be omitted along with their period (<literal>.</literal>). So, for example, the version
numbers <literal>2</literal>, <literal>2.0</literal>, and <literal>2.0.0</literal>
all denote the same version. This example demonstrates that <literal>0</literal> is assumed if a numeric component is omitted, 
and the empty string is assumed for an omitted qualifier.</para>

</section>

<section>

<title>Version Ranges</title>

<para>Dependencies on bundles and packages have an associated <emphasis>version range</emphasis>
which is specified using an interval notation: a square bracket
<quote><literal>[</literal></quote> or <quote><literal>]</literal></quote> denotes
an <emphasis>inclusive</emphasis> end of the range and a round bracket
<quote><literal>(</literal></quote> or <quote><literal>)</literal></quote> denotes
an <emphasis>exclusive</emphasis> end of the range. Where one end of the range is to be included and the other excluded, it is permitted to
pair a round bracket with a square bracket.
The examples below make this clear.</para>

<para>If a single version number is used where a version <emphasis>range</emphasis> is
required this does <emphasis>not</emphasis> indicate a single version, but the range <emphasis>starting</emphasis> from that version and 
including all higher versions.</para>

<para>There are three common cases:

<itemizedlist>
<listitem><para>A <quote>strict</quote> version range, such as <literal>[1.2,1.2]</literal>, which
denotes that version and only that version.</para></listitem>
<listitem><para>A <quote>half-open</quote> range, such as
<literal>[1.2,2)</literal>, which has an inclusive lower limit
and an exclusive upper limit, denoting version <literal>1.2.0</literal> and any version after this, up 
to, <emphasis>but not including</emphasis>, version <literal>2.0.0</literal>.
</para></listitem>
<listitem><para>An <quote>unbounded</quote> version range, such as <literal>1.2</literal>, which
denotes version <literal>1.2</literal> and <emphasis>all</emphasis> later versions.</para></listitem>
</itemizedlist>

</para>

</section>

<section>
<title>Versioning Policies</title>
<para>A <emphasis>versioning policy</emphasis> is a way of using version numbers to indicate compatible
and incompatible changes.
OSGi does not mandate a particular versioning policy.
Instead, a specific versioning policy may be implemented using version ranges.</para>
<para>Strict and half-open version ranges are most useful in representing versioning
policies.
Unbounded version ranges can lead to problems as they (unrealistically) assume that
compatibility will be preserved indefinitely.</para>

<para>For example, a conservative versioning policy might assume that any change, other than
in the qualifier component of a version, implies an incompatible
change to the object.
Such a policy would employ version ranges such as <literal>[1.2.1.beta,1.2.2)</literal>
which accept any version from <literal>1.2.1.beta</literal> (inclusive) up to but not including
<literal>1.2.2</literal> (exclusive).
</para>
<para>Alternatively, a relaxed versioning policy might assume that only changes in the major component of
a version denote an incompatible change.
Such a policy would employ version ranges such as <literal>[1.2,2)</literal> to capture this.</para>

<para>
	The OSGi Alliance has published a <ulink url="http://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf">Semantic
	Versioning white paper</ulink> which provides some recommendations and guidance on versioning policies.
</para>

</section>

<!--========================================================================-->
<section>

<title>Bundle Version</title>

<para>Each bundle has a version.
The bundle&rsquo;s version may be specified in the manifest using a
<literal>Bundle-Version</literal> header:

<informalexample>
<programlisting>Bundle-Version: 1.4.3.BUILD-20090302
</programlisting>
</informalexample>
If not specified the bundle version is assumed to be <literal>0</literal>.
</para>

</section>

<!--========================================================================-->
<section>

<title>Package Version</title>

<para>Each exported package has a version.
The exported package&rsquo;s version may be specified on the Export-Package manifest header. For example

<informalexample>
<programlisting>Export-Package: org.foo;version="2.9",org.bar;version="1"
</programlisting>
</informalexample>

exports two packages: <literal>org.foo</literal>, at version <literal>2.9.0</literal> and 
<literal>org.bar</literal>, at version <literal>1.0.0</literal>.
</para>

<para>If the version attribute is omitted, the version is assumed to be <literal>0</literal>.</para>

<para>Each package <emphasis>import</emphasis> has a version <emphasis>range</emphasis>.
The package import version range may be specified on the <literal>Import-Package</literal> manifest header.
If interval notation is used, the version range must be enclosed in double quotes, for example:
<informalexample>
<programlisting>Import-Package: org.foo;version="[2,3)",org.bar;version="[1,1]"</programlisting>
</informalexample>
seeks to import a package <literal>org.foo</literal> in the range <literal>[2.0.0,3.0.0)</literal> and a package
<literal>org.bar</literal> with the (exact) version <literal>1.0.0</literal>.
</para>

<para>If a version range is not specified on an import, the range <literal>0</literal> is assumed, meaning that 
any version of this package would satisfy the import.</para>

</section>

<!--========================================================================-->
<section>

<title>Bundle Manifest Version</title>

<para>Bundle manifests have a version which is <literal>1</literal> by default,
indicating OSGi Release 3 semantics.
@project.name@ is based on OSGi Release 4 and therefore expects bundle manifests to be
at version <literal>2</literal>, indicating OSGi Release 4 semantics.
The bundle manifest&rsquo;s version should be specified on the Bundle-ManifestVersion manifest header, exactly as follows:
<informalexample>
<programlisting>Bundle-ManifestVersion: 2
</programlisting>
</informalexample>
</para>

</section>

<!--========================================================================-->
<section>

<title>Manifest Version</title>

<para>Manifests themselves also have a version which <emphasis>must</emphasis> be specified as <literal>1.0</literal>.
This is not an OSGi definition but part of the 
(<ulink url="http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html">JAR file specification</ulink>).

<informalexample>
<programlisting>Manifest-Version: 1.0
</programlisting>
</informalexample>

</para>

</section>

</section>

</section>

<!--========================================================================-->
<section id="concepts.springdm" xreflabel="Spring DM concepts">
	
<title>Spring DM and Blueprint Concepts</title>

<para>Spring DM is a project which enables <emphasis>services</emphasis> to be published and consumed
using descriptions written in XML.</para>

<para>The XML descriptions reside in files with extension <literal>.xml</literal> in the
bundle&rsquo;s <literal>META-INF/spring</literal> sub-directory.</para>

<para>
	To publish a service, an <literal>&lt;osgi:service&gt;</literal> tag is used, specifying the
	implementation class of the service and the interface class to be used.
	Spring DM constructs an instance of the implementation class and 
	publishes that instance in the OSGi service registry under the interface when the bundle is started.
</para>

<para>To consume a service, an <literal>&lt;osgi:reference&gt;</literal> tag is used and the
service may be passed into other Spring beans using Spring&rsquo;s dependency
injection facilities.</para>

<para>Spring DM automatically creates proxies for OSGi services so that the actual service
object may come and go at runtime.
If a service disappears, any proxies to the service will wait for the service to re-appear.
This effect is known as <emphasis>damping</emphasis>.</para>

<para>When a bundle is started, Spring DM builds the application contexts
specified by the XML descriptions, creates proxies for the specified services, and publishes
the specified services to the OSGi service registry.</para>

<para>When a bundle is stopped, Spring DM retracts any services it published on behalf of the bundle
and closes the bundle&rsquo;s application contexts.
@project.name@ turns off damping of a service proxy while the proxy&rsquo;s application context
is being closed.</para>

<para>Spring DM was contributed to Eclipse as the <emphasis>Gemini Blueprint</emphasis> project.
@project.name@ has Gemini Blueprint built-in.</para>

<para>Gemini Blueprint supports both Spring DM and Blueprint programming models.
Blueprint, known formally as the "OSGi Blueprint Container", provides some of the basic facilities of Spring DM,
including all those just mentioned, but in an OSGi standard form.
See <xref linkend="furtherreading"/> for the Blueprint specification.
</para>

</section>

<!--========================================================================-->
<section id="concepts.virgo">
	
<title>@project.name@ Concepts</title>
<note>
This section is not relevant for @nano.product.name@.
</note>

<!--========================================================================-->
<section id="concepts.repositories">
	
<title>The Provisioning Repository</title>

The @project.name@ provisioning repository contains artifacts and metadata indexed by the artifact type, name, and version. There are three kinds of repository: <emphasis>external</emphasis>, <emphasis>watched</emphasis>, and <emphasis>remote</emphasis>. Repositories are passive in the sense that changes to repository content do not cause artifacts to be deployed into @project.name@, refreshed, or undeployed.

<section>

<title>Artifact Types</title>

In addition to the standard OSGi bundle, artifact types in @project.name@ include configuration (properties file), PAR, plan, and library.
PARs, plans, and libraries are discussed in <xref linkend="concepts.grouping"/>. 

</section>

<section>

<title>External Repositories</title>

<para>
	External repositories are created by scanning a directory which contains artifacts, possibly in nested directories. The repository configuration specifies a pattern which 
	says which files should be treated as artifacts. After the repository is created, changes to the directory do not affect the repository content. 
</para>
<para>
	@project.name@'s default repository configuration, in <literal>configuration/org.eclipse.virgo.repository.properties</literal>, specifies an external repository created from the 
	<literal>repository/ext</literal> directory.
</para>

</section>

<section>

<title>Watched Repositories</title>

<para>
	Watched repositories are created by scanning a directory which contains artifacts but no nested directories. All files in the directory are treated as artifacts.
	The directory is re-scanned periodically and the interval between re-scans is specified in the repository configuration.
	The directory is also re-scanned when an artifact is deployed into @project.name@.
	Changes detected by re-scanning are reflected in the repository content. Note that changing the content of a watched repository does not cause artifacts to be deployed 	
	into @project.name@, refreshed, or undeployed. 
</para>
<para>
	@project.name@'s default repository configuration specifies a watched repository based on the contents of the <literal>repository/usr</literal> directory. 
</para>

</section>

<section>

<title>Remote Repositories</title>

<para>
	A remote repository refers to a repository hosted by a @project.name@ instance sometimes known as a <emphasis>repository server</emphasis>.
	The hosted repository is configured using the file <literal>configuration/org.eclipse.virgo.apps.repository.properties</literal> and may be either an external or a watched 	
	repository.
</para>
<para>
	The remote repository is accessed by a @project.name@ instance sometimes known as a <emphasis>repository client</emphasis>.
	The repository client is normally a different instance of @project.name@ to the instance hosting the repository, but it can be the same instance (which is handy for 	
	testing). The remote repository periodically downloads its index from the hosted repository. The period between downloads may be configured in the repository 	
	configuration. The remote repository also caches artifacts which have secure hashes associated with them in the hosted repository. Only bundles currently have secure 	
	hashes associated with them. The secure hash is used to determine when a cached artifact is stale and needs to be freshly downloaded.
</para>

</section>

<section>

<title>Repository Chains</title>

<para>
	The @project.name@ repository is configured as a <emphasis>chain</emphasis> of external, watched, and remote repositories.
	The chain is a list which is searched in the configured order.
	The effect of this search order is that an artifact with a given type, name, and version which appears in more than one repository in the chain is only accessed from the 	
	first repository in the chain in which it appears. Abstractly, the repository chain behaves as a single repository, but its content may mutate in quite a different way to 
	the content of an individual external, watched, or remote repository.
</para>

</section>

<!--========================================================================-->
<section id="concepts.grouping" xreflabel="Grouping Bundles">
	
<title>Grouping Bundles</title>

<para>@project.name@ provides a way of grouping together a collection
of OSGi bundles and other artifacts which comprise a single application.
These artifacts are placed in a JAR file with extension <quote><literal>.par</literal></quote>. This is called a PAR file.</para>

<para>All the bundles in a PAR file are resolved together and so mutual dependencies are permitted.</para>

<para>At runtime a PAR file provides a <emphasis>scope</emphasis> in the sense that bundles
inside the PAR file may depend on packages and services outside the PAR file,
but bundles outside the PAR file may not depend on packages and services
provided by the PAR file.</para>

<para>@project.name@ also provides the plan artifact as another way of grouping bundles and other artifacts into an application.
A <emphasis>plan</emphasis> is a file (in XML format) listing a collection of artifacts.
The artifacts referred to by a plan reside in the @project.name@ provisioning repository.
</para>

<para>
	In addition to PARs and plans, which are used for deploying groups of artifacts, @project.name@ provides libraries as a way of grouping together a collection
	of bundles that	can then be imported into an application using the @project.name@-specific <literal>Import-Library</literal> manifes header.
</para>

</section>

<!--========================================================================-->
<section id="kernel.user.region">

<title>Kernel and User Region</title>

	<para>Conceptually, @tomcat.product.name.short@ can be divided into two separate subsystems, one of which actually encompases the other:</para>
		<itemizedlist>
		  <listitem>The <emphasis>kernel</emphasis>, which is the heart of @tomcat.product.name.short@.  It makes up most of @tomcat.product.name.short@, except for the part that supports Web applications.  In other words, the kernel provides full OSGi modular support for your applications, as long as they are not Web-based. 
			<para>See <link linkend="kernel-overview">The @kernel.product.name@</link> for additional information.</para>
		</listitem>
		  <listitem>The <emphasis>user region</emphasis> is the subsystem that manages user applications. It deliberately isolates the kernel from both your applications and those of the @tomcat.product.name.short@ itself, such as the Admin Console, which protects the kernel from interference by applications. 
			<para>See <link linkend="user-region-overview">The User Region</link> for additional information.</para>
		  </listitem>
		</itemizedlist>

		<para>When you download and install @tomcat.product.name@ you get both the kernel and web server support (configured in the user region).  You can also <ulink url="http://www.eclipse.org/virgo/download/">download and use the kernel</ulink> on its own if you do not plan on deploying Web applications or using the
		web-based Admin Console and you'll get the kernel and a minimal user region (with no web support).</para>
		
		<para>The following graphic shows how the kernel and user region make up @tomcat.product.name.short@:</para>
		<imagedata fileref="images/kernel-user-region.png" width="885px" depth="805px" />

	<section id="kernel-overview">
		<title>The @kernel.product.name@</title>
		<para>
		The @kernel.product.name@ encapsulates almost all of @tomcat.product.name.short@ except for the deployment of Web applications.  In sum, the kernel provides the following @tomcat.product.name.short@ features:
		</para>
	<itemizedlist>
		<listitem>
			<para>
			Deployment of non-Web artifacts, such as OSGi bundles, PARs, plans,
			and configuration artifacts.
			</para>
		</listitem>
		<listitem>
			<para>
			Local and hosted repositories
			</para>
		</listitem>
		<listitem>
			<para>
			Scoping
			</para>
		</listitem>
		<listitem>
			<para>
			Hot deployment
			</para>
		</listitem>
		<listitem>
			<para>
			User region
			</para>
		</listitem>
		<listitem>
			<para>
			Auto-provisioning
			</para>
		</listitem>
		<listitem>
			<para>
			System and application tracing and dump support
			</para>
		</listitem>
		<listitem>
			<para>
			Spring beans and Spring DM support
			</para>
		</listitem>
	</itemizedlist>

		<para>See <link linkend="configuring">Configuring @tomcat.product.name.short@</link> for details about configuring the kernel to better suit your environment. </para>
	</section>

	<section id="user-region-overview">
		<title>The User Region</title>
		<para>
			The user region isolates the kernel from deployed applications,
			including both your own user applications and the user-oriented
			@tomcat.product.name.short@ applications such as the Admin Console. This means
			that the kernel is mostly invisible to applications and to application
			management. This is because most of the kernel bundles are not
			installed in the user region (apart from a few needed for region
			management). The necessary function to support the kernel runs in the
			OSGi framework, but the user region applications cannot see it, except
			for the services that are normally offered.
		</para>
	
		<para>This isolation has many benefits. For example, it is not necessary for the kernel and user applications to use the same version of the Spring Framework. In fact the kernel installs only those parts of the Spring Framework that it needs.  If you update the kernel, it is far less likely that you will also need to upgrade or adjust the applications to accomodate a new version of the kernel. The kernel implementation is therefore much more stable and resilient and applications are much more likely to survive kernel upgrades between releases.  </para>
		<para>When you install @tomcat.product.name.short@, the kernel creates a single user region.
			The kernel and the user region are configured independently of each other; see <link linkend="configuring">Configuring @tomcat.product.name.short@</link> for details. 		
		</para>

		<para>Finally, the isolation provided by the user region together with scoped applications and plans solve common dependency problems that occur when using OSGi. </para>
	</section>

</section>

</section>

</section>

<!--========================================================================-->
<section id="concepts.p2">
<title>p2 Concepts</title>
<para>
	At EclipseCon 2011 there was a great introductory presentation on p2. It gives a nice overview of the whole provisioning system.
	You can find it recorded <ulink url="http://fosslc.org/drupal/content/gentle-introduction-p2">here(video).</ulink> 
</para>
<para>
	<ulink url="http://bkapukaranov.wordpress.com/2011/07/12/rt-meets-p2/">This blog post</ulink> 
	provides some background on why p2 was created as well as a brief overview of what p2 repositories 
	are and how this relates to a runtime.
</para>
<para>
	This <ulink url="http://www.slideshare.net/PascalRapicault/understanding-and-extending-p2-for-fun-and-profit">presentation(slides only)</ulink> 
	sheds light on more advanced p2 features and turns our attention to its extension points. 
</para>
<para>
	Finally, the <ulink url="http://wiki.eclipse.org/Equinox/p2">p2 wiki</ulink> 
	also provides both getting started guides as well as information on more advanced features. 
</para>
</section>

</chapter>
