On Apr 12, 2012, at 9:57 AM, Vincent Massol 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/
> 
> * 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.
> 
> * Explanation:
> - We need consistency. Right now we have oldcore which acts like this but 
> others don't and it's complex to explain to users that for some they have to 
> swap them and for others they have to keep both side by side
> - In the very close future, we'll use a lot of Aspects in modules others than 
> legacy-oldcore, and thus we'll need to apply this strategy anyway.
> 
> * Notes: 
> - Currently, only oldcore acts like this.
> - The consequence is that we'll have one legacy module per non legacy 
> modules. Right now we sometimes have one legacy module for several non legacy 
> modules which we'll need to fix
> 
> Here's my +1 to both.

We also need some way to know that the move of some deprecated API to legacy 
works. So I think we need Rule 3.

Rule 3: Ensure that the moved out code works
====================================

* Proposal:
- Add a unit test in the legacy module to prove that the moved code still works

* Notes:
- Usually this simply means moving the existing unit tests to the legacy module 
too or duplicating it and use the deprecated classes in the legacy version

Here's my +1

Thanks
-Vincent

> Thanks
> -Vincent
> 

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

Reply via email to