:doctype: book

Title: Notice:    Licensed to the Apache Software Foundation (ASF) under one            or more contributor license agreements.
See the NOTICE file            distributed with this work for additional information            regarding copyright ownership.
The ASF licenses this file            to you under the Apache License, Version 2.0 (the            "License");
you may not use this file except in compliance            with the License.
You may obtain a copy of the License at            .              http://www.apache.org/licenses/LICENSE-2.0            .            Unless required by applicable law or agreed to in writing,            software distributed under the License is distributed on an            "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY            KIND, either express or implied.
See the License for the            specific language governing permissions and limitations            under the License.

= July 2013 Board report

Apache Aries delivers a set of pluggable Java components enabling an enterprise OSGi application programming model.

== Releases

* Apache Aries Subsystems Bundle 1.0.0

____
This is an 'uber' bundle form of the API and implementation (core) bundles of Aries Subsystems.
Together these are the reference implementation of the OSGi Subsystem Service Specification which "provides a declarative model for defining resource collections, including bundles, and an API for installing and managing those collections of resources." See OSGi Enterprise Release 5 specification chapter 134.
The 'uber' bundle is released for a convenience for people starting out with Subsystems.
____

##Project update

We have voted in John Ross as a member of the PMC.
No new committers since the last report.
Usage questions and interactions with other non-ASF projects continue to be asked on the user list, showing users are putting Aries to use in real world scenarios.

There are no board level issues.
