Difference between revisions of "Backward Compatibility"

From Delft Solutions
Jump to navigation Jump to search
(Created page with "Backwards Compatibility is the practice of allowing older versions of software to keep working with newer versions of server software. == Strategies == Enabling backwards co...")
 
 
Line 12: Line 12:
 
=== Web Fallback ===
 
=== Web Fallback ===
 
If you are making client software that is meant to be used by interactive users you can redirect them to a web version of your app. For example by building the ability to show a webpage into the client if the server detects the client is too old. If you are using [[Content Negotiation]] you can implement this by [[Accept Header | accepting]] the `text/html` [[Media Types | Media Type]] and opening a browser window in response.
 
If you are making client software that is meant to be used by interactive users you can redirect them to a web version of your app. For example by building the ability to show a webpage into the client if the server detects the client is too old. If you are using [[Content Negotiation]] you can implement this by [[Accept Header | accepting]] the `text/html` [[Media Types | Media Type]] and opening a browser window in response.
 +
 +
[[Category: Terminology]]

Latest revision as of 18:13, 18 January 2021

Backwards Compatibility is the practice of allowing older versions of software to keep working with newer versions of server software.

Strategies

Enabling backwards compatibility usually comes with a tradeoff in other areas. Luckily there are multiple approaches to backwards compatibility that can be used.

Never Introducing a Breaking Change

The simplest way to achieve backwards compatibility is by keeping the protocol exactly the same in newer versions. Unfortunately this also means you cannot easily add new features.

Versioning

Another way is to version the API and introducing a new version whenever you introduce a breaking change. There are multiple ways to implement versioning that have different tradeoffs.

Web Fallback

If you are making client software that is meant to be used by interactive users you can redirect them to a web version of your app. For example by building the ability to show a webpage into the client if the server detects the client is too old. If you are using Content Negotiation you can implement this by accepting the `text/html` Media Type and opening a browser window in response.