= July 2011 Board report

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

Users have asked for a release of the Aries JPA bundles and hence the snapshot bundles it depends on (Aries Util) - in particular due to:

* the new 'runtime enhancer' that will mean entities can be enhanced as they are used in the runtime, rather than at development time.
* the support for EclipseLink (in addition to Apache OpenJPA) as a JPA provider

The release process has just started.
This will exercise our per bundle release process adhering to the OSGi Alliance Semantic Versioning recommendations.

There have also been enhancements to the Aries JMX (whiteboard pattern) and Aries Subsystem (to use OSGi Core 4.3).

Apache Geronimo, which consumes Apache Aries to implement its enterprise OSGi application programming model, has been readying a release.
The performance enhancements in the Aries Proxy module which now makes use of the new Weaving Hooks OSGi specification, has had a few teething problems for Geronimo.
All known problems are now resolved.

== Project Branding Board Report Checklist

We've been reminded of this work and are reporting this checklist for the first time.
We appreciate we're a bit behind the curve here, and are doing our best to catch up.

* Project Website Basics : homepage is aries.apache.org (done)
* Project Naming And Descriptions : use proper Apache forms, describe product, etc.
(pending)
* Website Navigation Links : navbar links included, link to www.apache.org included (pending - feather link done)
* Trademark Attributions : attribution for all ASF marks included in footers, etc.
(pending)
* Logos and Graphics : include TM, use consistent product logo on your site (pending)
* Project Metadata : DOAP file checkedin and up to date (pending - some minor updates needed)

== Community update

Roughly same number of dev@ subscribers at 119, user@ 148 subscribers up 14 since last report.
John Ross was voted in as a committer after his significant work to the 'subsystem' module.

There are no board level issues.
