Maintaining Exported API's
The next version of our product is going to be exposing a number of API's. This will meet the #1 request of our existing customers (ability to roll their own custom solutions using our product as the platform). What has me concerned is ongoing support of those API's. We understand the need to keep them stable at almost any cost (that is until we release the next major version), but I'd like to have more than our self-restraint and paranoid caution in place to prevent accidental modification of the API's.
For verifying Java APIs, you can't be Artima SuiteRunner. http://www.artima.com/suiterunner/index.html
Expose your API's through interfaces only - don't expose classes directly. Lock down the files that contain these interfaces so that you can't change them accidentally.
And by all means... design them right the first time. Otherwise you'll have to live with your mistakes and your customers' confusion for years to come.
Fog Creek Home