I don't know how much you want to write about this issue, but there's actually quite a bit more that could be said.
First, note that adding a method to an interface breaks compilation of an implementing class, but not binary compatibility. If class A implements I, then it will still work against a later version of I.class that adds new methods. Only when you try to recompile will there be a problem -- or if somebody tries to call the missing methods, of course. This is subtle, but sometimes important, as it helps ensure the binary forward compatibility that lets old
Java programs continue to work on new JVMs.
Second, there is a widely used (if ugly) hack-around for the issue you describe, which is to use a subinterface; i.e.,
The Eclipse APIs use this extensively; instead of adding to "I", they'll create an "I2" and tell people to switch to using it; but code that just implements "I" will still compile, and still work.