it will manage and the actual repository itself.
2.2 Software Repository Standards
At this moment there are several repository
technologies that are popular in open source
communities. Every one of them has its own
component model and capabilities. We detail each in
this section, with a special focus in their support of
OSGi bundles and federation capabilities.
Maven (Massol et al., 2004) is one of these
solutions, a software project management and
comprehension tool. Maven has become the de facto
standard for managing Java projects, thanks mainly
to the support and its extended use inside the Apache
community. Maven uses a generic project
description model for describing software projects
named Project Object Model (POM). The POM file
of a project defines the project’s lifecycle as well as
its dependencies and configuration parameters.
However, this model has been defined as generic as
possible, in order to cover a wide range of software
projects. Hence, it does not accurately reflect the
special relationships of specific types of software
components, such as OSGi bundles. For example,
dependencies onto a particular software package can
be defined, but not onto a complete bundle. POM
cannot describe these kinds of dependencies, losing
information in going from manifest to POM. Despite
this disadvantage, Maven repositories provide other
interesting capabilities, such as being able to store
all the information concerning a project (source
code, documentation, etc) or the hierarchical
federation with other Maven repositories,
augmenting the Maven basic dependency resolution
mechanism. However, this mechanism does not
work with repositories implemented using other
technologies.
Another model used to describe bundles is the
OBR (OSGi Bundle Repository) project. This model
was presented as the draft OSGi RFC 112 (Hall,
2006). The RFC defines both an XML schema for
bundle description and the Java API for browsing
OBR repositories. An OBR repository is very simple
in its structure, providing just an XML file
describing the server contents. This eases the
creation of OBR repositories as only the bundles and
how to download them need to be described, leaving
plenty of freedom to design the architecture
supporting those operations. This simplicity has the
drawback that the clients are forced to carry out
most of the operations, a problem aggravated by the
fact that there is no standard definition of an OBR
client. The draft status of the OBR presents
additional disadvantages, such as the lack of
mechanisms for managing repository contents (e.g.
upload new bundle, update, or delete). and that the
federation mechanism between OBR repositories is
not well-defined.
In the 3.0 version of Eclipse, the Eclipse
architecture was changed to use OSGi as the project
core. This change pushed the Eclipse community to
develop their own bundle repository, named P2 (Le
Berre and Rapicault, 2009). The P2 repository is
widely used, since version 3.4 of the Eclipse
Platform uses it as the management mechanism for
its components (OSGi bundles). The P2
specification defines two repository types: metadata
and artifact. The metadata repository stores
Installable Units, which are the P2 representation of
an artifact. This means that almost anything can be
described as an Installable Unit (configuration files,
bundles, executables, etc). The metadata repository
also provides the P2 federation mechanism.
Complementing it is the artifact repository, which
stores the binary and description files associated to
the Installable Units. There is also a third
component, the Director, which is part of the
repository client. The Director is in charge of
resolving dependencies and installing and
uninstalling the artifacts. However, this solution has
an important drawback: Its component model is
concerned only with software direct dependencies,
being oblivious to other constraints that could affect
artifacts.
Also, the increasing success of the OSGi
platform has stimulated the creation of proprietary
bundle repositories especially dedicated to store this
type of software components. The Spring Bundle
Repository (Rubio, 2009) is the most notorious
example of this trend. This repository stores a
collection of bundles and library description files
ready for production use. A library description file is
a document describing a set of bundles that are
frequently used together. The access to the
repository is made through Maven, Ivy or a web
interface. The web interface shows information
related to the dependencies and exported resources
of a bundle, offering links to download them.
However, the proprietary nature of this solution
greatly limits its applicability and usefulness.
It can be seen that there are a lot of existing
solutions for a bundle repository. But with the
exception of the Spring repository (which supports
Maven), there are no federation mechanisms
between repositories of different types. On top of
that, different development communities have
chosen different repository solutions. This fact
ICSOFT 2011 - 6th International Conference on Software and Data Technologies
78