On Thu, May 3, 2012 at 9:55 AM, Vincent Massol <[email protected]> wrote: > > On May 3, 2012, at 9:35 AM, Thomas Mortagne wrote: > >> On Thu, May 3, 2012 at 9:23 AM, Vincent Massol <[email protected]> wrote: >>> Hi Thomas, >>> >>> On May 2, 2012, at 6:48 PM, GitHub wrote: >>> >>>> Branch: refs/heads/master >>>> Home: https://github.com/xwiki/xwiki-commons >>>> Commit: 6ecb131081233764ed773eb84f9be34e23edb888 >>>> >>>> https://github.com/xwiki/xwiki-commons/commit/6ecb131081233764ed773eb84f9be34e23edb888 >>>> Author: tmortagne <[email protected]> >>>> Date: 2012-05-02 (Wed, 02 May 2012) >>>> >>>> Changed paths: >>>> M xwiki-commons-core/pom.xml >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/AbstractJob.java >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/Job.java >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/JobManager.java >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/event/status/JobStatus.java >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/internal/DefaultJobManager.java >>>> M >>>> xwiki-commons-core/xwiki-commons-job/src/main/java/org/xwiki/job/internal/DefaultJobStatus.java >>>> >>>> Log Message: >>>> ----------- >>>> XCOMMONS-162: Add start and end data to job status >>>> XCOMMONS-163: Add join method to Job >>>> >>>> >>>> diff --git a/xwiki-commons-core/pom.xml b/xwiki-commons-core/pom.xml >>>> index 799f042..2251f94 100644 >>>> --- a/xwiki-commons-core/pom.xml >>>> +++ b/xwiki-commons-core/pom.xml >>>> @@ -115,6 +115,8 @@ >>>> <exclude>**/internal/**</exclude> >>>> <exclude>**/test/**</exclude> >>>> <!-- Remove the following excludes after we release the >>>> current version as final --> >>>> + <exclude>org/xwiki/job/Job</exclude> <!-- New methods --> >>>> + <exclude>org/xwiki/job/event/status/JobStatus</exclude> <!-- >>>> New methods --> >>> >>> This goes against the deprecation/legacy strategy we have voted since we >>> said we will not add *any* breakage. It's not allowed anymore to have any >>> exceptions in CLIRR. >>> (See http://markmail.org/message/tino4ngttflc5i3s). >>> >>> So you need to go through a deprecation strategy and move this to legacy. >> >> Did you really looked at what is the breakage ? I made sure it was >> clear but putting a <!-- New methods --> comment. If you have a >> solution to add new method to an interface without having to add a >> CLIRR exclusion please share. > > No I didn't really looked hard. I just took this opportunity to start the > thread about "Young" APIs (see my other email). > > Note that the change is breaking because you've added a new method to an API > that users can implement., See example4 in > http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs#Example_4_-_Adding_an_API_method > > I'm pasting the reason here: > > " > Can adding an API method to a class or interface break compatibility with > existing Clients? > > If the method is added to an interface which Clients may implement, then it > is definitely a breaking change. > > If the method is added to a class (interface) which Clients are not allowed > to subclass (to implement), then it is not a breaking change. > > However, if the method is added to a class which Clients may subclass, then > the change should ordinarily be viewed as a breaking change. The reason for > this harsh conclusion is because of the possibility that a Client's subclass > already has its own implementation of a method by that name. Adding the API > method to the superclass undercuts the Client's code since it would be sheer > coincidence if the Client's existing method met the API contract of the newly > added method. In practice, if the likelihood of this kind of name coincidence > is sufficiently low, this kind of change is often treated as if it were > non-breaking. > " > > In other words if someone has already created code implementing the Job > interface for example and has published his work on extensions.xwiki.org (for > example) then when the new XE is released (with the new interface method) > this extension will not work anymore and the new change will this have broken > backward compatibility.
I know why it's breaking... > > Thanks > -Vincent > >>> Alternatively you should make a new proposal to amend our >>> backward-compatibility strategy for "young" apis. I'll start the thread for >>> you but in the meantime all Release Manager need to be very careful to not >>> perform new releases when there are CLIRR excludes since it means we have >>> broken backward compatibility. >>> >>> Thanks >>> -Vincent > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

