= October 2011 Board report

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

A new module called versionsing has been created for a utility to byte code analyse latest binaries with the last release of those binaries to find changes that should cause an OSGi Export-Package version attribute change, according to the OSGi Semantic Versioning whitepaper.

It looks as though Apache Aries JMX will become the reference implementation of the update to the OSGi JMX spec for which an early draft was released by the OSGi Alliance in September.

== Releases

Bug fix releases:

* Apache Aries Application 0.2.2
* Apache Aries Util 0.2.1

We have been putting together a functional release from trunk but it's taking longer than we'd hoped.
Due to our objective of getting the OSGi versioning correct, we're having to release more modules and correct more OSGi version ranges than we had hoped.
A fully staged release of Apache Aries Blueprint and its dependencies is imminent.

== Project Branding Board Report Checklist

A little progress here.
Unfortunately there's been little progress here.

* 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 (done)

== Community update

No new committers since the last report.

There are no board level issues.
