Hello guys,
One of the things I'd like to discuss is our approach to modularise the
additional capabilities that SMX5 provides on top of "the core" (Karaf +
Camel + CXF + AMQ), e.g. Activiti integration, Akka integration, JMS
logging appender, etc.
I would like to shift these elements to a separate "modules" repository, in
a manner analogous to the "bundles" repository of SMX [1]. In my opinion,
they should not be part of the default SMX5 assembly, and they should have
a separate lifecycle.
SMX has 4 big direct dependencies: Karaf, Camel, CXF and AMQ. In the
future, I would expect a new SMX release whenever one of these 4 projects
release upstream (ideally!). This is definitely something we can control,
especially because many members of the SMX community also belong to those
upstream communities.
Any other projects, e.g. Akka, Activiti, perhaps ElasticSearch / Kibana,
DropWizard, vert.x, etc. anything we may want to add as a "capability" to
SMX in the future, should have independent release cycles.
Then I would provide a Karaf shell so that users can "pull" these
capabilities straight from Maven Central:
karaf@root()> servicemix:module-list
(finds all the available modules and versions by querying Maven repos)
karaf@root()> servicemix:module-add akka 1.0.0
(adds version 1.0.0 of the Akka module)
In reality, these commands would mainly call a bunch of commands from the
"feature" shell behind the curtains. For example, the 2nd command would do
the following:
* Add a feature repo
mvn:org.apache.servicemix.modules/akka/1.0.0/xml/features
* Install a feature also called "akka" from this feature repo.
Basically, modules would have a "contract" such that they'd need to provide
a features repo each + a feature with the same name.
In a nutshell:
* Let's make SMX leaner by focusing on "the big 4" components.
* Independent lifecycles for additional modules or capabilities.
* Upstream dependency upgrades can be controlled and updated locally in a
more granular manner.
* Set of "servicemix" shell commands to add capabilities which are hosted
and versioned separately from the core.
What do you think?
Regards,
[1] https://github.com/apache/servicemix4-bundles
*Raúl Kripalani*
Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
Integration specialist
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk