I've been working on a PoC called Eccentric Modularity (EM) which is available here https://github.com/azzazzel/EM The basic idea is to provide a jump start into modularity (particularly in the scope of resolving dependencies and assembling applications from modules) for people not familiar with OSGi. In fact it tries to hide OSGi from the developer as much as possible.
I know we have enRoute which is great but
- still requires you to learn a fair bit of OSGi to use it.
- escaped multiline properties files full of semicolons an commas are hard for developers to understand
- the related OSGi maven plugins need somewhat complex (for average Java developer) configuration even for the simplest cases (I know it's Maven model to be blamed here) + the above mentioned properties files.
So EM tries to work around those adoption roadblocks and provide a clean and simple (kind of JPMS type of simple) approach for the most common usecases. The idea is to bring some of the cool OSGi things (particularly Requirements and Capabilities + Resolver) to the outside world without even mentioning OSGi. In fact the first example uses Java's SPI Service Loader rather than OSGi services at runtime, just to demonstrate those tools are useful even if one don't want to go down the OSGi road.
From code perspective it's just a (somewhat ugly) hack dynamically adding and configuring bnd maven plugins to a Maven project based on some properties. If the concept is of any interest to anyone I'd probably invest more time to learn the bnd/resolver internals and make it better. As most of you here are by far more familiar with bnd than I am, you certainly can suggest a better ways to implement it.
So would anyone be willing to have a look, play with it and send some feedback (even if it is just "this is plain stupid idea").
Best,
Milen
--