Shouldn't major releases be incompatible with their predecessors, according to semantic versioning?
Why is Angular version 4 compatible with version 2 if they use semantic versioning?
128 Views Asked by Sebastian Jimenez AtThere are 2 best solutions below

Shouldn't major releases be incompatible with their predecessors, according to semantic versioning?
The specification doesn't say that at all. What it does say is that you MUST bump the major version number if you do introduce a breaking change. The wording does not prevent you from bumping the major version number if you think there is a slight chance of breakage. In fact, it is common to bump the major version if there has been considerable code churn relative to previous minor and patch level releases; in order to allow for the slower adoption rate that typically occurs, when risk averse customers, put off accepting major version releases until they have the resources available to test it.
Even a patch release could break somebody. Software history is littered with bugs that somebody thought was a feature at some point in time. Developers use their best judgment in accordance with their own and customer's tolerances for errors. Mission-critical code that takes a one line patch somewhere that is thoroughly documented, vetted by reviewers and testers, can probably release a patch, but a complete refactoring of a major component in the same product, even with high development standards, probably warrants a major bump, despite the goal that no breaking changes would not be introduced. Non-mission-critical code would just get a patch bump, even for a complete over-haul of the implementation.
The answer in in the comments given by @JBNizet: