While working on the codebase of Pax Exam the last month an idea cam into my mind I'd like to discuss.

Over the years Pax Exam evolved from an "OSGi-Container-Starter" to a general-purpose container-testing-framework with lots of features and container-types (J2EE, CDi, OSGi, ...) but also has grown more and more but became harder and harder to keep track of all possible side-effects and keep track dependencies when doing changes.

So I would suggest to restructure the whole "thing" into a core project and a number of extension projects that can be managed, released and evolved independently:

- having one org.ops4j.exam project, dropping the pax part (since in fact its not only about OSGi anymore) maybe even start with a fresh 1.0.0 Version, that includes the core API (Container-API, Basic Options, Drivers) - having one org.ops4j.exam.extension.osgi project, that is all about OSGi containers and related options
- having one org.ops4j.exam.extension.cdi for cdi related stuff
- having one org.ops4j.exam.extension.j2ee and so on...
- maybe havining more e.g. for Tony's acceptance testing that is a seperate topic as well, maybe the same will apply to Karaf+EclipseContainer

That would have several advantages over the current model:
- separation of concerns, resulting in a cleaner view what belongs together
- easier refactoring/evolving/release since the must be no "big-bang" change but e.g. the core can add new features/releases and the extensions can then adopt now or later - easier handling of dependencies because each extension can have its own dependency chain without hte need to include all in one
- easier testing, since it is now clear what is tested where
- faster buildtimes because each project can be build and tested on its own no need to download the whole CDI/J2EE stuff when working on the OSGi part - easier integration of new features and handling of merges because now a new feature of an extension won't hold back e.g. the release of the core

The (minor) drawback would be that for new core features there must be first a release of the core before extensions can adopt, but the advantages outweigh this IMO.


Any thoughts? I know this would be a great change and lots of work but I'm convinced that this will rewarded soon by a faster, cleaner and even more powerful framework than ever before :-)

--
--
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- You received this message because you are subscribed to the Google Groups "OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to