On 6 May 2016 at 22:40, Gary Gregory <garydgreg...@gmail.com> wrote:
> I'm creating a new thread here instead of hijacking the VOTE thread.
>
> First, let me express my gratitude to Stian Soiland-Reyes for RM'ing a
> release, I'm sure he did not know what he was getting himself into! ;-)

Huh? ... that was/is Josh Elser.
Who does (also) deserve many thanks.

> Part of me writing this here is flushing out for myself, voters, and casual
> observers what it is we are doing ;-)
>
> We have BC breakage in VFS 2.1 RC1 in two areas:
>
> - Adding methods to public interfaces

AFAIK that is only a SOURCE breakage.

> - Other stuff like removing fields, changing fields from protected to
> private, changing method arg types.

That does break BC if the objects are part of the public API.

> Details:
> https://home.apache.org/~elserj/commons/commons-vfs-2.1/commons-vfs2/clirr-report.html
>
> I see three areas that need consideration:
>
> (0) For simple clients that only use the higher-level interfaces and
> methods, there are no problems. So this is a non-issue marker I suppose.

Whether or not that affects simple clients depends on exactly which
fields and method args have changed. Are they part of the public API?
And if so, will simple clients use that part of the API?

> (1) For advanced clients that get their fingers in deep into VFS, they
> break. Example:
>
> - org.apache.commons.vfs2.provider.tar.TarFileObject: Accessibility of
> field entry has been weakened from protected to private.
> - org.apache.commons.vfs2.provider.webdav.WebdavFileProvider: Removed field
> AUTHENTICATOR_TYPES
> - and so on.
>
> Remedies for these kinds of breaks are simple and easy: Just change stuff
> back and mark @deprecated in Javadoc and @Deprecated.
>
> (2) For providers, they break unless they extend our root classes like
> AbstractFileObject and DefaultFileSystemManager, and use our default
> classes like DefaultFileContent.
> For "simple" providers, there probably won't be any issue, but who knows?
> Does anyone have a 2.0 provider?
> For advanced providers that do more of their own thing instead of reusing
> our base classes, then breakage.
>
> It seems to me that we should pick the low-hanging fruits and fix the
> simple stuff.
>
> All of this is moot if we were to go to 3.0 now.

Which would not be source or binary compatible by design.

> Thoughts?

The easiest for Commons would obviously be to abandon 2.x and release 3.0.
That would be a chance to fix APIs properly.

However, given the work that Josh has already put into 2.1 that seems
a waste of effort if we can either:
- eliminate the BC breaks, OR
- satisfy ourselves that the breaks will not affect (m)any users.

> Gary
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to