FWIW, these discussions are not new.  You might enjoy reading these threads - 
http://www.mail-archive.com/user@commons.apache.org/msg03711.html. But maybe 
not! ;-)

Ralph


> On Apr 29, 2016, at 12:43 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
>> 
>> On Apr 29, 2016, at 10:57 AM, Josh Elser <els...@apache.org> wrote:
>> 
>> 
>> 
>> Ralph Goers wrote:
>>>> On Apr 29, 2016, at 9:27 AM, Josh Elser<els...@apache.org>  wrote:
>>>> 
>>>> sebb wrote:
>>>>> On 29 April 2016 at 16:19, Josh Elser<els...@apache.org>   wrote:
>>>>>> sebb wrote:
>>>>>>> On 29 April 2016 at 15:59, Josh Elser<els...@apache.org>    wrote:
>>>>>>>>> How does changing the package name help? Doesn't that just push a
>>>>>>>>> NoClassDefFound error instead of some missing implementation for a new
>>>>>>>>> method?
>>>>>>> That means we change ALL the package names and the Maven coords.
>>>>>>> Effectively it's a different component, and users have to change the
>>>>>>> import package names.
>>>>>> How is that at all improving *any* level of compatibility? I really don't
>>>>>> see how that is providing any service to your users. Now, instead of just
>>>>>> updating the version for the artifact and adding the new methods, they
>>>>>> *also* have to change the package...
>>>>> It's not about compatibility, it's about avoiding jar hell.
>>>> Hold up now. We were talking about compatibility. I also don't know 
>>>> specifically what you mean by "jar hell", but it sounds like this is not 
>>>> relevant to the source/binary compatibility discussion (and thus not 
>>>> relevant to this thread). Please correct me if I'm wrong.
>>> 
>>> If a user of VFS drops in the new jar in place of the old one and their 
>>> application gets runtime errors then, by definition, binary compatibility 
>>> is broken.  This can happen if the user implemented their own FileSystem 
>>> and are using interfaces that have had new methods added. It can happen if 
>>> public methods have had signatures change.  If any of these happen then 
>>> Commons policy is that the package names must change and the artifact id 
>>> must change, as the jar is no longer compatible with the old one.  This 
>>> allows the old jar and the new jar to be used side-by-side.
>> 
>> Ok. Can you point me at this documentation? Apparently the issues I take 
>> with this are more engrained into all of Commons :)
> 
> I would have to search the dev mailing list but this has been discussed in 
> the past.  The first link below discusses the versioning policy but does not 
> explicitly call out changing the package name and artifactid. The second two 
> links are example of release announcements for incompatible releases.
> 
> https://commons.apache.org/releases/versioning.html 
> <https://commons.apache.org/releases/versioning.html> 
> <https://commons.apache.org/releases/versioning.html 
> <https://commons.apache.org/releases/versioning.html>>
> http://www.h-online.com/open/news/item/Apache-Commons-Lang-3-0-makes-a-break-with-the-past-1283761.html
>  
> <http://www.h-online.com/open/news/item/Apache-Commons-Lang-3-0-makes-a-break-with-the-past-1283761.html>
>  
> <http://www.h-online.com/open/news/item/Apache-Commons-Lang-3-0-makes-a-break-with-the-past-1283761.html
>  
> <http://www.h-online.com/open/news/item/Apache-Commons-Lang-3-0-makes-a-break-with-the-past-1283761.html>>
> https://commons.apache.org/proper/commons-collections/release_4_0.html 
> <https://commons.apache.org/proper/commons-collections/release_4_0.html> 
> <https://commons.apache.org/proper/commons-collections/release_4_0.html 
> <https://commons.apache.org/proper/commons-collections/release_4_0.html>>
> 
> Ralph

Reply via email to