---
title: Board Report 2018-03-21
--- pipeline:conf

{warning}
This is a work-in-progress - the board report has not yet been submitted.
{warning}

h2. March 21th, 2018

{code}
Description
===========

Apache ServiceMix is a flexible, open-source integration container that
unifies the features and functionality of Apache ActiveMQ, Camel, CXF and
Karaf to provide a complete, enterprise-ready ESB powered by OSGi.

Issues
======

There are no outstanding issues requiring board attention.

Activity
========

The project focus of Apache ServiceMix is the assembly of the integration
container, the actual functionality is being maintained in related projects
like Apache Karaf, Apache CXF, Apache Camel and Apache ActiveMQ.

- We have released 3 sets of OSGi bundles
- We have refactored the Specs repository to ba able to release each spec
separately
- In the next period we are going to focus on documentation and examples
improvement as it's still outstanding theme. We are also going to focus
on releasing of e new ServiceMix version based on the newest releases of
Apache Karaf and Apache Camel. We should also focus on preparing ServiceMix
for Java 9.


Health report
=============

Due to winter vacation and over the year change the activity of the community
(mailing lists, JIRA, releases) has been a bit slower than during the last period.

PMC changes
===========

 - Currently 23 PMC members.
 - Andrea Cosentino was added to the PMC on Wed Mar 15 2017

Committer base changes
======================

 - Currently 50 committers.
 - No new committers added in the last 3 months
 - Last committer addition was Andrea Cosentino at Sun Mar 13 2016

Releases
========

 - Apache ServiceMix Bundles 2017.12 on January 01 2018
 - Apache ServiceMix Bundles 2018.01 on February 08 2018
 - Apache ServiceMix Bundles 2018.02 on March 07 2018


JIRA activity
============= 
   
 - 75 JIRA tickets created in the last 3 months
 - 73 JIRA tickets closed/resolved in the last 3 months
 {code}
