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.





Reply via email to