From d2ea4d5168da51cdb4e2f19cfddb4c9e5a009ac0 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Mon, 24 Oct 2016 12:04:10 -0400 Subject: [PATCH] Clarify backwards and forwards compatibility in docs We weren't necessarily clear that we consider both required. --- docs/devel/api_changes.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/devel/api_changes.md b/docs/devel/api_changes.md index 6488d231d58..2331601630c 100755 --- a/docs/devel/api_changes.md +++ b/docs/devel/api_changes.md @@ -129,8 +129,11 @@ backward-compatibly. ## On compatibility Before talking about how to make API changes, it is worthwhile to clarify what -we mean by API compatibility. An API change is considered backward-compatible -if it: +we mean by API compatibility. Kubernetes considers forwards and backwards +compatibility of its APIs a top priority. + +An API change is considered forward and backward-compatible if it: + * adds new functionality that is not required for correct behavior (e.g., does not add a new required field) * does not change existing semantics, including: @@ -150,7 +153,8 @@ versions and back) with no loss of information. continue to function as they did previously, even when your change is utilized. If your change does not meet these criteria, it is not considered strictly -compatible. +compatible, and may break older clients, or result in newer clients causing +undefined behavior. Let's consider some examples. In a hypothetical API (assume we're at version v6), the `Frobber` struct looks something like this: