: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.

= October 2013 Board report

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

== Releases

* Apache Aries Blueprint Parser 1.1.0

Reusable component for parsing Blueprint xmls.

* Apache Aries Blueprint Core 1.2.0  Core of the implementation of the OSGi Blueprint Container Specification

Currently being voted on:

* Apache Aries Blueprint CM 1.0.2

Integration of OSGi Blueprint with the OSGi Configuration Admin Service.

##Project update

There has been a variety of discussion traffic on the dev and user lists primarily across blueprint, trasnaction, esa-maven-plugin, jpa, subsystem.

There are no board level issues.
