karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré ...@nanthrax.net>
Subject [PROPOSAL] Karaf Boot roadmap
Date Wed, 11 May 2016 15:04:19 GMT
Hi all,

Karaf Boot code is now on the Apache Git:


with the github mirror:


I created the component in Jira.

I will update the website with karaf-boot description.

I propose the following roadmap for karaf-boot, heading to the first 1.0 

1. Bootstrapping
As a reminder, karaf-boot has two goals:
- simplify the way to create module and application for developers
- simplify the bootstrapping as a "standalone" application (leveraging 
the container feature)

Currently, we mostly address the first point. Our starters provide 
annotations allowing to easily create application. The 
karaf-boot-maven-plugin "calls" the annotation processor in the 
starters, and other plugins behind the hood to easily generate artifacts.

Now, we have to address the second point: bootstrapping. I started a PoC 
on that.
I created new starters for bootstrapping:
- karaf-boot-starter-feature creates a feature using the dependencies 
and project artifact
- karaf-boot-starter-distribution creates both zip and tar.gz Karaf 
custom distribution embedding the current project artifact and dependencies
- karaf-boot-starter-distribution-rjar is similar to distribution, but 
it's a runnable jar (using a custom Main)
- karaf-boot-starter-docker creates a docker image embedding the custom 

Now, the karaf-boot-maven-plugin is checking the dependencies to find 
one of these bootstrap starter, and react accordingly.
However, most of the logic is in the plugin, leveraging 
karaf-maven-plugin (assembly and archive goals for instance).
If this approach works (and is easy), I don't think it's the most 
elegant way.
I think we should create a @bootstrap annotation on a Runnable class in 
the bootstrap starters. The annotated class is responsible of the 
bootstrap artifact creation. An abstract bootstrap starter provide an 
annotation processor that look for @bootstrap annotation and run the 
class in a thread. The karaf-boot-maven-plugin just delegates the 
bootstrapping to the starter.


2. New starters
We have to extend the coverage of the starter to address more use cases. 
I'm thinking about starters for test (both utest and itest leveraging 
pax-exam), for jaas, for management/MBean, for eventadmin, for decanter, 
for camel, etc.

3. New samples
Related to 2, each new starter should have a corresponding sample. The 
samples are really important as it's where the users start.

We should also provide kind of full application use case, multi-module. 
I started this showing how to use different starters in different 
modules (like a Logo construction set).

4. Documentation and Karaf Dev Guide
The "new" Karaf Dev guide will be based mostly on karaf-boot. A second 
section ("advanced") can still address non karaf-boot cases.

Thoughts ?

Jean-Baptiste Onofré
Talend - http://www.talend.com

View raw message