On forward and backward compatibility
Suppose A depends on B to function, i.e., A -> B
- Forward compatibility means that if a new version of B is deployed, current A should still be able to handle it
- This means we can upgrade B without breaking A
- If not, then we have to upgrade A so that it can process both current B and next version of A first
- Note this is what people normally mean when they talk about backward compatibility, which is not exactly same as the definition. The real definition is that a newer version of A still accepts B