From 32dfdf5ad85f77793717b6c0e008b0c5afdb6157 Mon Sep 17 00:00:00 2001 From: Bucky Kittinger Date: Mon, 27 Feb 2023 11:44:28 -0500 Subject: [PATCH 1/2] added support schedule strawman --- process/discussion/support_schedule.md | 74 ++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 process/discussion/support_schedule.md diff --git a/process/discussion/support_schedule.md b/process/discussion/support_schedule.md new file mode 100644 index 0000000..aaf41e5 --- /dev/null +++ b/process/discussion/support_schedule.md @@ -0,0 +1,74 @@ +# Strawman for ENF Release Support Schedule + +**ENF_Soft** : ENF produced products leap/cdt/etc. + +**Cardinal release** : A release that impacts interfaces, APIs or consensus (host function additions, new account system, etc). + +**Marginal release** : A release that adds new functionality in an additive manner that does not break any pre-existing interfaces, APIs or impact consensus. + +--- + +## Support window: + + +Assuming that: + +> *ENF_Soft vW.0.0* is a **cardinal release**
+> *ENF_Soft vX.0.0* is a **marginal release**
+> *ENF_Soft vY.0.0* is a **cardinal release**
+> *ENF_Soft vZ.0.0* is a **marginal release**
+ +Then, + +> We will support *ENF_Soft vW.0.0* and *ENF_Soft vX.0.0* if we are releasing vX.0.0.
+> We will support *ENF_Soft vY.0.0* if we are releasing vY.0.0.
+> We will support *ENF_Soft vY.0.0* and *ENF_Soft vZ.0.0* if we are releasing vZ.0.0.
+ +Or more succinctly, + +$$ DoesSupport(v) = \left\{\begin{array}{ c l }\{v-1, v\} & \quad \textrm{if } v \in \textrm{MarginalReleases} \\ + \{v\} & \quad \textrm{otherwise} \end{array} \right. $$ + + +So, + +Let’s say: + +v1.0.0 is a *cardinal release* + +v2.0.0 is a *marginal release* + +v3.0.0 is a *cardinal release* + +v4.0.0 is a *marginal release* + +Then, + +> DoesSupport(1) -> {1} , we should support v1.0.0
+> DoesSupport(2) -> {1, 2}, we should support v1.0.0 and v2.0.0
+> DoesSupport(3) -> {3}, we should support v3.0.0
+> DoesSupport(4) -> {3, 4}, we should support v3.0.0 and v4.0.0
+ +--- + +## What about Release Candidates? + +The proposed solution would be to augment the above to subsume release candidates until they are final. The above defines the end support after releases have gone final. There are questions around do we want to gate that until consensus upgrade for cardinal releases? I propose that we do. +
+ +So, + +*DoesSupport(v)* would become the following: + + $$ DoesSupport(v) = \left\{\begin{array}{ c l }\{v-1, v\} & \quad \textrm{if } v \in \textrm{MarginalReleases} \\ + DoesSupport(v-1) \cup {v} & \quad \textrm{if } v \in \textrm{CardinalReleases} \land v \in \textrm{ReleaseCandidates} \\ + \{v\} & \quad \textrm{otherwise} \end{array} \right. $$ + +So, + +DoesSupport(1) -> {1} the same no matter what +DoesSupport(2) -> {1, 2} same as before + +DoesSupport(3) -> {3} When v3.0.0 is out of RC or {1, 2, 3} When v3.0.0 is still in RC + +DoesSupport(4) -> {3, 4} same as before \ No newline at end of file From df991b418e1b0161eca8f54f3df366ce7009e081 Mon Sep 17 00:00:00 2001 From: Bucky Kittinger Date: Tue, 7 Mar 2023 14:35:19 -0500 Subject: [PATCH 2/2] Update support_schedule.md --- process/discussion/support_schedule.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/process/discussion/support_schedule.md b/process/discussion/support_schedule.md index aaf41e5..6d505d8 100644 --- a/process/discussion/support_schedule.md +++ b/process/discussion/support_schedule.md @@ -4,7 +4,7 @@ **Cardinal release** : A release that impacts interfaces, APIs or consensus (host function additions, new account system, etc). -**Marginal release** : A release that adds new functionality in an additive manner that does not break any pre-existing interfaces, APIs or impact consensus. +**Marginal release** : A release that adds new functionality in an additive manner that impact consensus or have major impacts to downstream users (i.e. ship protocol changes, etc.). --- @@ -71,4 +71,4 @@ DoesSupport(2) -> {1, 2} same as before DoesSupport(3) -> {3} When v3.0.0 is out of RC or {1, 2, 3} When v3.0.0 is still in RC -DoesSupport(4) -> {3, 4} same as before \ No newline at end of file +DoesSupport(4) -> {3, 4} same as before