I'd suggest taking a look at guidelines that other Java projects have
established to get an idea of consequences.

Here is the one for Eclipse:

http://wiki.eclipse.org/Evolving_Java-based_APIs

There are probably some Apache projects that publish something similar.

Mark



On Fri, Mar 26, 2010 at 7:27 PM, Hyrum K. Wright
<hyrum_wri...@mail.utexas.edu> wrote:
> Mark,
> A couple of months ago, you mentioned the avenue of interface-izing the 
> various objects that are part of the public API, such as the callbacks and 
> the client interface.  In thinking a bit more about this, and given my 
> general lack of Java background (in spite of the recent commits to the 
> contrary) I've got a question about backward compat in this scenario.
>
> In creating an interface (which we have) for our client API, we could also 
> create interfaces for the objects that interface references.  The primary 
> reason for doing so is enabling third-party implentors to do so without 
> having to actually use any of our objects, giving them (and us, ultimately) 
> more flexibility for compatibility.
>
> This does add an additional question: if third-parties are implementing these 
> interfaces, and we chose to add more functionality them (and hence more APIs) 
> to the interfaces, does this break backward compat?  Code that formerly 
> compiled against an interface which now includes another function definition 
> would no longer compile, yes?  If so, does that consistute a broken backward 
> compat?  What if somebody just dropped in the new jar, and didn't recompile?
>
> If adding interfaces to the JavaHL API means that we'll need to rev them (not 
> just extend them) in the event we add more data to those interfaces/objects, 
> I don't know that it's worth the work.
>
> Thoughts?
>
> -Hyrum



-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

Reply via email to