:doctype: book

Title:     Board Report 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.

= April 2011 Board report

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

Since the last board report, there have been enhancements to the 'proxy' module to which has improved its performance by making use of the new 'Weaving Hook Service' OSGi specification (in 4.3) as an alternative to ASM.
This also removes some restrictions on final classes/methods imposed by use the use of ASM.
The 'spi-fly' module's OSGi service approach to META-INF/services has also been updated to make use of the Weavking Hook Service gaining similar benefits.

Some more documentation on the new release-by-bundle release process has been written.
This positions us nicely to demonstrate and make use of the OSGi Semantic Versioning scheme.
Now that the parent-0.4 module has been released, we are in a position to use it for the next release.

== Community update

Small increase in since last month dev@ 118 subscribers, user@ 134 subscribers.
There has been a slight increase in user list traffic.
The dev@ list continues to be active with less traffic on the user@ list.
No new committers or PMC members.

There are no board level issues.
