<div class="wiki-content maincontent"><h1>Status report for the Apache ActiveMQ Project</h1><structured-macro ac:macro-id="9beca253-915a-448a-8eba-49ce980c70d0" ac:name="code" ac:schema-version="1"><parameter ac:name="">none</parameter><plain-text-body>Community:
 * The ActiveMQ project has had another very busy quarter.  William Tam has been added as an ActiveMQ committer.
 * The development and user lists continue to stay vibrant.
 * The Camel sub project has been approved to become a TLP and is currently setting it's infrastructure to do so.
 * A privacy policy page has been added to all the ActiveMQ wikis and websites.

Development:
 * ActiveMQ 5.3.x development is underway.  Several new ideas are being researched like a new storage implementation 
   and a protocol buffer based wire encoding.  If accepted into the main line this may bump up the major version to
   6.0.
 * ActiveMQ-CPP 3.0 development is underway.  The current architecture is being refactored to improve performance and
   to allow for new features to be added more easily such as a Failover Transport.

Releases:
 * ActiveMQ 5.2.0
 * ActiveMQ-CPP 2.2.2
 * ActiveMQ-CPP 2.2.3
 * Camel 1.5.0
</plain-text-body></structured-macro></div>

