Bjorn Freeman-Benson take a look back at his JavaOne talk on Callisto with Mike Milinkovich and brings to notice one of the six lessons he learnt from working on the Callisto project. The problem of unintended effects, Bjorn says, arises due to using undocumented features in dependent projects. The problem is not unique to Callisto. It is seen in each Eclipse project, especially its APIs, he adds.
“One difficulty with APIs is that API providers rarely know who the API consumers are and how they are using the APIs. If the upstream consumers are using undocumented features of the API, even just by fixing a bug in the API may break those consumers,” he says.
Bjorn notes two important points to be kept in mind here:
Good, solid APIs are hard to design, harder to document, and very difficult to code defensively.
In any large coordinated release, enough testing time to catch unintended effects must be included.
He concludes, saying that the platform runtime team at the Callisto project did everything possible not to ‘break consumers’ and all’s well that ends well.