...
For example, suppose that the application Foo depends (only) upon features of the juneau-core component that are part of the external interface in release 2.3.0. Then the maintainers of Foo can state with a high degree of certainty that Foo will work with any 2.x release of superwidget (x >= 3).
Similarly, suppose the application Bar depends upon features of juneau-core that were part of the internal interface of release 2.3.0. Then the maintainers of Bar can state with a high degree of certainty that Bar will work with any 2.3.x release of superwidget. Only once 2.4 (or 3.0) is released will Bar's developers have to re-evaluate.
7 - End Notes
- We say "nearly" here since there are rare or unusual circumstances in which changes that are usually "safe" may cause problems for a small number of users. For example, adding a new method to a component class shouldn't in general cause problems for any clients. But it may cause problems for some clients who've extended that class and already added a method with the same signature in their subclass.
...