I am using semantic versioning 2.0.0. In my situation I have a concrete implementation of some interface A in one library. And I have the interface that's being implemented (call it B) in another library.
I understand that if I were to add new methods to the interface B then that would be considered a major change for B because any library that implements the interface (such as A) would not compile until implementing whatever methods were added. My reasoning for this being considered a major change is because you've now made an incompatible API change to B (according to semantic versioning). I think that I understand this concept clearly but correct me if I'm wrong.
Here is my question, and the part that I don't understand... What happens to A, the concrete that's actually implementing the interface? Does he get a major or minor revision number change? I guess that from one stand point you could say he gets a minor revision change because adding a public method doesn't make him incompatible like for instance... if you were to change the name of a method... I guess you could also argue that he would get a major change because he needs to implement the interface in order to work. Is either one of these reasonings correct, or neither?