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

= February 2015 Board report

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

== Releases

The votes for these releases closed on 2014/10/21

* Apache Aries Maven ESA Plugin (esa-maven-plugin) 1.0.0
* Apache Aries JNDI Core (jndi-core) 1.0.2
* Apache Aries JNDI URL Handler (jndi-url) 1.1.0
* Apache Aries Transaction Manager (transaction-manager) 1.0.2
* Apache Aries Transaction Blueprint (transaction-blueprint) 1.0.2
* Apache Aries Transaction Enlisting JDBC Datasource (transaction-jdbc) 2.1.0
* Apache Aries JMS Pool (transaction-jms) 2.0.0

The votes for these releases closed on 2014/11/04

* Apache Aries JPA Container (jpa-container) 1.0.2
* Apache Aries JPA Container Managed Contexts (jpa-container-context) 1.0.4

The votes for these releases closed on 2014/12/05

* *New* Apache Aries Blueprint Maven Plugin (blueprint-maven-plugin) 1.0.0 (2014/12/05)
* Apache Aries Blueprint Annotation based authorization (blueprint-authz) 1.0.0 (2014/12/05)

== Project update

Creation of a new project: blueprint-maven-plugin: for generating OSGi an blueprint.xml from CDI, JEE and Spring annotations.

Contributions continue to come in from non-committers via GitHub.

Newest PMC member voted in on 28th July 2013.

There are no issues requiring board attention at this time.
