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:

https://git.apache.org/karaf-boot.git/

with the github mirror:

https://github.com/apache/karaf-boot

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 
release:

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 
distribution

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.

WDYT ?

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 ?

Regards
JB
-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Mime
View raw message