Apache Aries
Abstract
The Aries project will deliver a set of pluggable Java components enabling an enterprise OSGi application programming model. This includes implementations and extensions of application-focused specifications defined by the OSGi Alliance Enterprise Expert Group (EEG) and an assembly format for multi-bundle applications, for deployment to a variety of OSGi based runtimes.
Proposal
It is a goal of the Aries project to provide a natural home for open source implementations of current and future OSGi EEG specifications, including the opportunity for the collaborative development of compliance tests, and an environment to demonstrate the composition of these technologies and to explore areas where EEG specifications lack coverage. A further goal of this project is to leverage experience gained from it to inform contributions to OSGi EEG requirements and specification documents.
Aries will offer an enterprise OSGi application programming model that enables applications to leverage Java EE and other enterprise technologies and to benefit from the modularity, dynamism and versioning capabilities of OSGi. A significant feature of Aries will be a container for OSGi Blueprint components - an implementation of the new OSGi v4.2 Blueprint component model that defines a standard dependency injection mechanism for Java components, which is derived from the Spring framework and extended for OSGi to declaratively register component interfaces as services in the OSGi service registry.
In addition, the Aries project will develop a model for assembling an application/subsystem into a deployable unit, consisting of multiple bundles, as an archive which may include metadata that describes the version and external location of the application's constituent bundles or which may contain the bundles directly.
The Aries project will deliver run-time componentry that supports applications, running in an OSGi framework, exploiting enterprise Java technologies common in web applications and integration scenarios including web application bundles, remote services integration and JPA. The project is not expected to deliver a complete application or integration server runtime but will instead deliver enterprise application componentry that can be integrated into such runtimes. The project will develop extensions that go beyond the OSGi EEG specifications to provide a more complete integration of OSGi modularity with Java enterprise technologies, in particular delivering support that includes but is not restricted to:
- isolated enterprise applications composed of multiple, versioned bundles with dynamic lifecycle.
- declarative transactions and security for Blueprint components
- Container-managed JPA for Blueprint components
- Message-driven Blueprint components
- Configuration of resource references in module blueprints.
- Annotation-based Blueprint configuration
- Federation of lookup mechanisms between local JNDI and the OSGi service registry.
- Fully declarative application metadata to enable reflection of an SCA component type definition.
In order to maximise the potential scope of Aries adoption it is anticipated the project will remain agnostic of a number of complementary technologies and projects. It is the expectation that Aries will therefore not be delivering components such as: an application or integration server runtime kernel; a persistence provider; distribution provider; a deployment provider or a Web container. Aries will instead seek to enable the use of such components from other projects.
Background
OSGi is a mature and Java modularity technology that is well-used in many environments but, in the enterprise space, has more typically been exploited by the internals of the runtime infrastructure than the applications that run on it. This is primarily because of a lack of a clear enterprise OSGi application programming model and implementation of OSGi-enabled Java technology to support enterprise applications. OSGi specifications are specified and maintained by the OSGi Alliance which recognized this state of affairs several years ago and established the Enterprise Expert Group within the Alliance to focus specifically on the needs of enterprise applications. The objective of this project is to deliver open source implementations of these application-centric technologies to enable the development of application components, benefiting from the modularity of OSGi combined with standards-based programming models, which can be deployed to a variety of target runtimes.
Rationale
Aries aims to build a community of developers interested in the delivery of software components that support an enterprise OSGi programming model and which can be integrated into a number of different runtime environments. Apache hosts the Felix project which provides an OSGi framework implementation and a variety of projects which provide technologies exploited by enterprise application components as well as projects which provide runtimes to host application components. There is currently no Apache project focussed on OSGi enterprise applications that is independent from both the OSGi framework and the enterprise runtime environment in which application components are hosted. By maintaining independence of both the target runtime and underlying OSGi framework it is our intention to build the broadest possible community of developers for Aries, and to maximize the potential environments where Aries componentry can be used.
Initial Goals
We will initially focus on the Blueprint container and extend this with enterprise features such as support for container managed JPA and container managed transactions. Another initial focus area will be the contribution of code to support the assembly of isolated, multi-bundle applications that can be deployed as a unit.
Current Status
Meritocracy
The Aries contributors recognize the desirability of running the project as a meritocracy. We are eager to engage other members of the community and operate to the standard of meritocracy that Apache emphasizes; we believe this is the most effective method of growing our community and enabling widespread adoption.
Community
OSGi is a mature Java modularity technology that is well-used in many environments but, in the enterprise space, has more typically been exploited by the internals of the runtime infrastructure than the applications that run on it. This is primarily because of a lack of a clear enterprise OSGi application programming model and implementation of OSGi-enabled Java technology to support enterprise applications. There is a need for open source implementations of these technologies and there is currently no Apache project focused on the wider goal of delivering components for an enterprise OSGi application programming model. We recognise that projects comprising multiple components face challenges maintaining cohesion as a community but believe the common focus on the enterprise OSGi programming model is a strong theme that will guide the activities of the community as a whole. Aries aims to build a community of developers interested in the definition and delivery of software components that support an enterprise OSGi programming model and which can be integrated into a number of different runtime environments. By maintaining independence of both the target runtime and underlying OSGi framework it is our intention to build the broadest possible community of developers.
Alignment
The purpose of Aries is to develop implementations of application-centric enterprise OSGi technologies that run on an OSGi framework, but not a specific one, and are used by application components deployed into a variety of runtime environments without being tied to any specific environment. For this reason we believe Aries is a project whose community would be best served if it could leverage but be independent from the communities that provide underlying OSGi framework technology and enterprise application server and integration bus technologies, all of which exist as open source efforts within Apache and elsewhere. We expect, for example, that some code developed in Aries will run directly on top of an OSGi framework such as Felix and that applications exploiting Aries technologies could be deployed to runtimes such as ServiceMix and Geronimo.
Avoiding the Warning Signs
Orphaned products
The contributors are leading vendors of OSGi-based technologies and have a long standing in the OSGi Alliance whose application-centric specifications this project will implement. There is minimal risk of this work becoming non-strategic and the contributors are confident that a larger community will form within the project in a relatively short space of time.
Inexperience with Open Source
Many of the committers have experience working in one or more open source projects including Apache Geronimo, Felix, ServiceMix, OpenEJB, and CXF.
Homogeneous Developers
The list of initial committers, geographically distributed across the U.S. and Europe, consists of developers from two companies - IBM and Progress software - with similar goals but for different scenarios. Many of these developers are experienced Apache committers already and all are experienced with working in distributed development communities. It is our hope that, through the incubator, further contributors with a broad background of experience but common interest in enterprise OSGi technologies will become involved with this project.
Relationships with Other Apache Projects
Aries will have a potential relationship with the Apache projects listed in this section. These projects all serve different purposes from Aries and have their own communities. It is hoped that each of these communities will become involved with Aries and help to build a diverse but independent Aries community.
Apache Felix Karaf - http://felix.apache.org/site/apache-felix-karaf.html Apache Felix Karaf is an OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed. It is related to Aries:
- as a target OSGi based runtime to which Aries applications can be deployed. In this role, Karaf is a consumer of Aries technology.
Apache Felix - http://felix.apache.org/site/index.html Apache Felix is primarily a core OSGi framework implementation. It is related to Aries:
- as an underlying OSGi framework implementation and potentially other extensions that can be used both by Aries run-time components and the applications which use them.
Apache Geronimo - http://geronimo.apache.org/
Apache Geronimo is a server runtime framework and fully certified Java EE 5 application server runtime. It is related to Aries in two ways:
- as a target runtime to which Aries applications can be deployed. In this role, Geronimo is a consumer of Aries technology.
- the Geronimo blueprint sandbox - http://svn.apache.org/repos/asf/geronimo/sandbox/blueprint/ - contains an implementation of the OSGi Blueprint container which will be moved to Aries.
Apache Tuscany - http://tuscany.apache.org/
Apache Tuscany provides a comprehensive infrastructure for SOA development and management that is based on Service Component Architecture (SCA) standard. It can be a consumer of Aries technology to provide an Aries SCA implementation type for composing Aries applications in coarse grained and potentially heterogeneous service assemblies.
Apache CXF - http://cxf.apache.org/
Apache CXF provides a Java Web Services framework for distributed computing and remote service realization and invocation using API's such as JAX-WS and JAX-RS. It also provides the OSGi Remote Services (OSGi RFC 119) reference implementation in a subproject: http://cxf.apache.org/distributed-osgi.html. It is related to Aries in the following way:
- As Remote Services is a significant Enterprise specification being produced by the EEG, it is expected that consumers of Aries will be looking for an implementation of this specification. CXF provides an implementation of this specification which already has a significant active community. The Aries project will make it easy for Aries consumers to consume the CXF Remote Services implementation, possibly by providing an instance of the application model that references the CXF Remote Services implementation. This would mean that end users will seamlessly pull in the required components from CXF by using the Aries-provided definition.
Apache ServiceMix - http://servicemix.apache.org/
Apache ServiceMix provides an ESB that combines the functionality of a Service Oriented Architecture (SOA) and Event Driven Architecture (EDA) to create an agile ESB. ServiceMix runs on OSGi and was the source of the Apache Felix Karaf runtime. It can be a consumer of Aries applications and associated componentry as a natural evolution of its existing Karaf "feature" usage.
Apache OpenJPA - http://openjpa.apache.org/
Apache OpenJPA is a Java persistence project. It is related to Aries as a JPA persistence provider, including entity scanning and enhancement. The Aries project will make it easy for JPA persistence providers such as OpenJPA to be used in an OSGi environment and will provide container managed persistence for the Blueprint container.
Apache Ace - http://incubator.apache.org/ace Apache ACE is a software distribution framework that allows you to centrally manage and distribute software components, configuration data and other artifacts to target systems. It is built using OSGi and can be deployed in different topologies. The target systems are usually also OSGi based, but don't have to be.
- As a mechanism to distribute and configure the runtime components (those implementing the enterprise OSGi application programming model).
- To distribute and configure enterprise OSGi application components implemented to the enterprise OSGi application programming model.
Documentation
An early draft of OSGi v4.2 core and compendium specifications - which includes the Blueprint container specification - is available at: http://www.osgi.org/download/osgi-4.2-early-draft3.pdf
Initial Source
- The Blueprint container impl from the Geronimo sandbox will be moved to the Aries project for further development: http://svn.apache.org/repos/asf/geronimo/sandbox/blueprint
- IBM will also contribute code for:
- container-managed JPA support in an OSGi environment.
- making OSGi services visible to Java EE components through JNDI.
- packaging web components as bundles and a URL handler for recognizing and converting non-bundled Web components
- We will also be soliciting implementations of other OSGi enterprise application-centric specifications.
External Dependencies
- Apache Ant http://ant.apache.org Apache License
- Apache Commons http://commons.apache.org Apache License
- Junit (Java unit test framework) http://junit.sourceforge.net CPL v1.0 license: http://junit.sourceforge.net/cpl-v10.html
- Apache Felix (implementation of the OSGi Core and Compendium specifications - compliance level unknown) http://felix.apache.org Apache License (hosted by ASF).
- Eclipse Equinox (compliant implementation of the OSGi Core Specification and Compendium specifications) http://eclipse.org/equinox/ Eclipse Public License
- OpenJPA http://openjpa.apache.org Apache License
- Serp http://serp.sourceforge.net/ BSD
- Apache Geronimo http://geronimo.apache.org Apache License
Required Resources
Mailing lists
aries-private
(with moderated subscriptions)
aries-dev
aries-commits
aries-user
Subversion Directory
http://svn.apache.org/repos/asf/incubator/aries
Issue Tracking
JIRA (ARIES)
Web Site
Confluence (Aries)
Initial Committers
Names of initial committers with affiliation and current ASF status:
- Alan Cabrera (LinkedIn, ASF Member)
- Alasdair Nottingham (IBM)
- Andrew Osborne (IBM)
- Bernd Kolb (SAP)
- Carsten Ziegeler (Individual, ASF member)
- Dan Kulp (Progress, ASF member)
- David Bosschaert (Progress, ASF committer)
- David Jencks (IBM, ASF member)
- Dimo Stoilov (SAP)
- Eoghan Glynn (Progress, ASF committer)
- Graham Charters (IBM)
- Guillaume Nodet (Progress, ASF member)
- Hiram Chirino (Progress, ASF member)
- Ian Robinson (IBM)
- James Strachan (Progress, ASF member)
- Jarek Gawor (IBM, ASF member)
- Jean-Sebastien Delfino (IBM, ASF committer)
- Jeremy Hughes (IBM, ASF committer)
- Joe Bohn (IBM, ASF committer)
- Lin Sun (IBM, ASF committer)
- Kiril Mitov (SAP)
- Mark Nuttall (IBM)
- Niclas Hedhman (individual, ASF member)
- Niklas Gustavsson (individual, ASF committer)
- Nikolai Tankov (SAP)
- Oisin Hurley (Progress)
- Peter Peshev (SAP)
- Raymond Feng (IBM, ASF committer)
- Rick McGuire (IBM, ASF committer)
- Roman Roelofsen (ProSyst)
- Sabine Heider (SAP)
- Sergey Beryozkin (Progress, ASF committer)
- Stuart McCulloch (individual, ASF committer)
- Timothy Ward (IBM)
- Todor Boev (ProSyst)
- Valentin Mahrwald (IBM)
- Violeta Georgieva (SAP)
- Zoe Slattery (IBM)
Affiliations
The majority of the initial committers listed on the proposal initially are employed by IBM corp or Progress Software. One objective of the incubator is to attract a diverse community of contributors and we anticipate future contributors to have other affiliations. Indeed, since the proposal was initially posted, further initial committers have volunteered from SAP, ProSyst, LinkedIn and some individuals.
Sponsors
Champions
Kevan Miller, Guillaume Nodet
Nominated Mentors
Guillaume Nodet, Davanum Srinivas (Dims), Kevan Miller, Bertrand Delacretaz
Sponsoring Entity
The incubator. Successful graduation from Incubator should result in Aries becoming a new TLP.