Vincent Massol wrote:
> Hi devs,
> 
> I've been researching what it would take to be able to support the Extension 
> Manager use case regarding components isolation and dependency versioning.  I 
> won't go over the details of all I've researched (you can ask questions for 
> that). I'm just proposing a series of steps and a vision of the future for 
> our component model.
> 
> If you're interested in the topic I would recommend that you read the Weld 
> tutorial on CDI:
> docs.jboss.org/weld/reference/1.0.0/en-US/html_single/
> 
> Here are the steps I'm willing to work on and implement.
> 
> Step 1: timeframe from now: 1 month
> * Use JSR330 annotations
+1 this looks like it is necessary since these annotations are apparently used 
by JSR299 and JSR330 and
are almost exactly the same as Guice's API.

> 
> Step 2: timeframe from now: 1 month
> * Do a POC of integrating xwiki-component with OSGi (as a 
> xwiki-component-osgi module).
> - No versioning management yet.
> - Need to use a maven osgi plugin to generate Manifest files from the POMs
> * Revise further steps based on result from Step 2.
> 
> Step 3: timeframe from now: 2 months
> * If step 2 is successful add what's needed to the XWiki Component API to 
> perform generic lookup: CM.lookup(Class, Properties) where Properties is a 
> set of properties registered with the component. It would contain the role 
> hint and the version for example. Also add annotations for specifying 
> dependency version ranges.
> 
> Note: After step 3 we have the prereqs for the Extension Manager done. The 
> other steps below are improvements and steps to put us in the standards 
> direction.
> 
> Step 4: timeframe from now: 6 months-2 years 
> * When CDI (JSR299) has taken over the world (ie several DI frameworks 
> migrate to it, it becomes a JavaSE de facto standard at least), migrate to 
> it. We need 2 features not in the spec right now:
Why JSR299 over Guice API?

> - support for dynamic bean registration
> - ability to implement CDI over OSGi
Why CDI over OSGi? One package can't do all that is needed?

> * Work with the Weld dev team to add support for those 2 items above. They're 
> interested to implement it if we help them and if these 2 items get done 
> relatively quickly we could migrate to CDI earlier than the timeframe above
> * In the meantime we can monitor it carefully to see its progress and we 
> could start migrating to it slowly. Some ideas:
> - use the CDI annotations instead of the xwiki-specific ones for the binding 
> part
> - introduce new concepts that comes from CDI: decorators, interceptors, 
> producers
> - refactor our observation module to use the CDI event model
> 
> Step 5: timeframe for now: 2-4 years
> * When JSR294 is approved and final (will require at least JDK 7, so XWiki 
> needs to be on JDK7 at least for this, so that's a few years in the 
> future...) migrate to CDI over JSR294 over (Jigsaw, OSGi). The good part is 
> that since we would be using CDI we won't need to change much in our code to 
> do that.
> 
> WDYT?
> 
> Thanks
> -Vincent
> 
> Links:
> - Weld/JSR299: docs.jboss.org/weld/reference/1.0.0/en-US/html_single/
> - Jigsaw: openjdk.java.net/projects/jigsaw/
> - JSR330: 
> atinject.googlecode.com/svn/trunk/javadoc/javax/inject/package-summary.html
> - JSR294: See description on openjdk.java.net/projects/jigsaw/
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
> 

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to