= July 2015 Board report

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

== Releases

After some discussion at the end of May, we resolved to alter our release process.
The new process means we'll be compromising slightly on OSGi semantic versioning at the bundle level in favour of making the release process simpler and easier to do often.

The following releases have been created with dates they were promoted to maven central:

* Apache Aries Transaction Manager (transaction-manager) 1.2.0 2015/05/09
* Apache Aries Parent POM (parent) 2.0.1 2015/06/08
* Apache Aries JPA 2.0.0 (jpa) 2015/06/19
* Apache Aries Subsystems API 2.0.1 (subsystem-api) 2015/06/29
* Apache Aries Subsystems Core 2.0.1 (subsystem-core) 2015/06/29
* Apache Aries Subsystems Bundle 2.0.1 (subsystem-bundle) 2015/06/29
* Apache Aries Blueprint Parser (blueprint-parser) 1.3.1 2015/06/02
* Apache Aries Blueprint Web (blueprint-web) 1.1.1 2015/06/02
* Apache Aries Blueprint no-OSGI (blueprint-noosgi) 1.1.1 2015/06/02
* Apache Aries Subsystems API 2.0.2 (subsystem-api) 2015/07/03
* Apache Aries Subsystems Core 2.0.2 (subsystem-core) 2015/07/03
* Apache Aries Subsystems Bundle 2.0.2 (subsystem-bundle) 2015/07/03
* Apache Aries Transaction Manager (transaction-manager) 1.2.1 2015/07/10

== Project update

A new module containing an implementation of the OSGi Async service has been contributed.

Jean-Baptiste Onofre & Christian Schneider added to the PMC on 2015/04/10

New committers: Giuseppe Gerla 2015/05/26

User list activity has decreased over the past few months, whereas the dev@ traffic remains fairly consistent.
This may be due to Aries 'library' nature.

There are no issues requiring board attention at this time.
