On Thu, Apr 12, 2012 at 09:57, Vincent Massol
<vincent(a)massol.net> wrote:
Hi devs,
In preparation of our Deprecation Day and continuing our vote on the
Deprecation strategy I'd like to propose several rules we need to clarify
since we need them and I'd like to finish documenting our full deprecation
strategy.
Rule 1: Where are Legacy modules located?
===================================
* Proposal:
- Each Git repository needing legacy modules provides a *-legacy module
for holding legacy modules. For example:
-- For Commons, xwiki-commons-core/xwiki-commons-legacy/
-- For Platform, xwiki-platform-core/xwiki-platform-legacy/
-- For Rendering, xwiki-rendering-legacy/
+1
* Explanation:
- It's better to locate them in a specific module (*-legacy) than inside
their own module (for ex in
xwiki-commons-core/xwiki-commons-component/xwiki-commons-component-legacy/)
because legacy modules are something we don't want to see as much as
possible since we're must not use them in our code, thus it's logical to
park them all together somewhere.
* Notes:
- This is our current rule but it's never been explicitly defined
Rule 2: What do Legacy modules contain?
=================================
* Proposal:
- Each Legacy module should replace the non-legacy module it corresponds
to. This means that the user must have only 1 JAR for a given module:
either its legacy version or it's non-legacy version but should never have
both.
This make me think that this could cause some difficulties for the EM to
install legacy modules, since it would require the non-legacy one to be
unloaded, or used an override mechanism by ClassLoader, which could lead to
other issues like memory consumption, singleton classloader issue…
Thomas has introduced a notion of 'alias' in the EM but not sure if it solves
this. I'll let him answer when he's back.
FYI we're already using it in our pom.xml. For ex for oldcore we have (don't ask
me what the comment means because I don't really understand it ;)):
<!-- The features provided by this module so that it's found when resolving
extension that pretty much never depend on this one -->
<xwiki.extension.features>org.xwiki.platform:xwiki-platform-oldcore,com.xpn.xwiki.platform:xwiki-core</xwiki.extension.features>
I think this means that org.xwiki.platform:xwiki-platform-oldcore and
com.xpn.xwiki.platform:xwiki-core are aliases of xwiki-platform-legacy-oldcore. But
I'm not sure how this is used by the EM.