On Mar 28, 2012, at 8:06 PM, Thomas Mortagne wrote:

> On Wed, Mar 28, 2012 at 12:27 PM, Vincent Massol <[email protected]> wrote:
>> Hi devs,
>> 
>> I'd like to change our deprecation strategy. Here's what we are currently 
>> supposed to use (we voted it a long time ago):
>> http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HDeprecation26LegacyStrategy
>> 
>> "
>> In addition our rule is to keep @deprecated methods/classes for 2 final 
>> releases after the version where they were first added has been released as 
>> final.
>> For example if a method is deprecated in, say XE 1.3M2 then the method will 
>> be removed in 1.6M1 or after. Of course any major new release can deprecate 
>> anything. For example a XWiki 2.0 release is allowed to break backward 
>> compatibility (obviously we need to be careful to offer a migration path for 
>> users of previous major versions).
>> "
>> 
>> Issues:
>> * This seems a bit harsh to me for some of our users/devs in the community.
>> * We're not following which proves to me it's not a good rule
>> * It doesn't say anything about Scripting APIs which require a greater 
>> stability in order not to break all wiki pages
>> 
>> Definition of a Scripting API:
>> * a Script Service (that's the new way of providing script apis)
>> * a class in the "api" package in xwiki-platform-oldcore (this is the old 
>> way of providing script apis)
>> 
>> Thus I'd like to propose this new rule:
>> 
>> * Deprecated methods can only be removed in the next Release Cycle. For 
>> example something deprecated in version N.x can be removed in version N+1.y 
>> where x and y can be anything. This is logical since N+1 means a new major 
>> release and it's common to understand that major releases have no guarantee 
>> of API compatibility (See http://en.wikipedia.org/wiki/Software_versioning 
>> for example).
> 
> I don't like it too much, that mean you can deprecated something in
> 3.5 and remove it in 4.0.

I had thought about this of course. But my rationale was that 4.x is a major 
release compared to 3.x and thus we are "allowed" to break backward 
compatibility.

> I think I would prefer to have a rule saying
> that a full cycle must be pasted before you remove something and that
> you remove things in N+2.0.

I hope you're not suggesting that we can only remove in X.0 releases (4.0, 5.0, 
etc).

I would be fine with waiting a full cycle. This would mean that stuff 
deprecated in N.x can be removed in N+2.y where x and y are any value. This 
means that deprecations added in 2.0 for example can only be removed in 4.0 
(i.e. 2.5 years after since a cycle is about 1.2-1.3 years).

I find this a bit long for the java non scripting apis.

We could also say 6 minor releases (since a cycle is exactly 6 minor releases) 
but I thought it would be nicer to align on cycles since they correspond to 
major versions and I wanted to not have to change the rule if we decide to 
change the cycle duration...

What do others think?

Thanks
-Vincent

PS: I stupidly though it was going to be an easy vote ;)

>> * For scripting APIs we can remove deprecated API only after 4 Release 
>> Cycles. For example since we're in 4.x this means we can remove deprecated 
>> APIs from 0.x releases. And when we start 5.x we will be able to remove 
>> deprecated scripting apis deprecated in 1.x.
>> 
>> Here's my +1
>> 
>> Thanks
>> -Vincent

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

Reply via email to