You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-dev@incubator.apache.org by Steve Loughran <st...@apache.org> on 2007/06/04 12:24:00 UTC

Re: Published API (was Extending IvyBuildList)

Gilles Scokart wrote:
> My preference is also to have the published API as small as possible.  
> 
> So, I would prefer to say, everything is subject to change except .... for
> which we maintain backward compatibility [as much as possible]?
> 
> Gilles


+1: right now, say 'everything is unstable, get under gump to track 
changes'.

At the same time, your entire class hierarchy becomes an API unless you 
do something about it, and it is very hard to stop people getting at 
your internals if they want.


If you want to stop people extending your code you have to be like Xom 
and lock down the app: mark stuff as final, package scoped, etc. Even 
then, in OSS, people can defeat you by forking (which is what has 
effectively happened for Xom).


The JIRA we run for SmartFrog has a compatiblity field for every entry, 
compatiblity can be:
  none
  unknown
  backwards compatible
  may break existing deployment descriptors
  may be incompatible at the java source level

With this list you can separate changes that should break nothing from 
those that change the API/source and those that are  visible at the 
deployment descriptor level. As with ant, the Java source level is much 
more brittle.