Final Decision: Release channels and cadences #637
Replies: 11 comments 35 replies
-
I don't think we need the complexity of two pre-release channels. The scenarios/motivations here make sense, but I'd like to start out simpler and see what happens. (The single channel approach has been working well for WinUI2.) I know sometimes we need to make long-term advance commitments for certain features, and predict 6 months ahead of time that something is going to be release ready. But our general flow should be that we work on features and when we feel they’re ready we push them out on the next release. We can be flexible. |
Beta Was this translation helpful? Give feedback.
-
What are these priorities for? |
Beta Was this translation helpful? Give feedback.
-
Even if there are separate channels for "preview" and "experimental" features there needs to be solid definitions of what these terms mean for features/tools/controls/functionality. Putting "experimental" functionality behind a feature flag would avoid anyone accidentally using it if included in the "preview" release. From the description it sounds as though the preview channel is also being treated as a test for what will become the stable/GA release. If this is the case, how might the preview release change over a 6 month period prior to a GA release? I'm also concerned that GA will only get 2 releases a year. I thought the aim was three. I'm also unclear about your "What does this look like?" table.
|
Beta Was this translation helpful? Give feedback.
-
Sounds okay to me. I'll echo back my takeaway.
Outstanding items that are probably out of scope:
|
Beta Was this translation helpful? Give feedback.
-
A couple of comments:
|
Beta Was this translation helpful? Give feedback.
-
Terminology is really difficult here; we're in a high synonym environment. Experimental has a concrete manifestation in this ecosystem in the form of the [Experimental] attribute. That's what we put on our in-development APIs today, and we have compiler support today such that if you call one of those APIs you get a warning that you're using an "experimental" API. It's developer-facing, so we shouldn't use that word in any way that conflicts. Prerelease is the word that VS and nuget.org use for "not a release". We looked around, and despite that precedence, most packages seem to use "preview" today, so we used that for Reunion. (WinUI2 uses "prerelease".) We shouldn't think of experimental features as necessarily far-out; they're just APIs we're not confident about yet. We could get confident about them tomorrow and ship them soon. To feel confident about an API we want to do a full spec review on it for sure, but we also really want to co-develop with a partner that's going to use it. At least some real sample app code and not just unit tests. We may get comfortable with it in the next release or next next, but we want to make it available so we can have the opportunity to find out. But I don't think we should get into the business of trying to predict the timeframe of every API; it just won't be reliable enough to be a beneficial indicator. I like having what I believe is option 2:
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
These proposals that strip functionality and metadata from the shipping G/A builds will cause regressions from how WinUI and IXP work today. We are following up with @andrewleader and @BenJKuhn and @jonwis and @DrusTheAxe on requirements. |
Beta Was this translation helpful? Give feedback.
-
Please provide feedback on the updated proposal!! Here's a condensed version of where I think we're converging to... (you can see the full proposal with all options updated in the main posting). Note that we aren't discussing naming yet, so just using generic terms like "Next release" and "Long-lead". We're proposing having three channels as seen below (currently we have two channels, "Stable" and "Long-lead", the "Next release" channel is the new addition). We aren't discussing cadences at this time yet either, that can be a separate topic.
What this looks like with features ABC and XYZ from earlier...
Distribution source of long-lead: Separate Azure feedThe long-lead channel would be distributed on a separate Azure feed rather than NuGet.org, which means your experience accessing the long-lead channel would look something like the following...
Share your feedback!Please let us know what you think! Let us know what you agree with and let us know what you disagree with and why! |
Beta Was this translation helpful? Give feedback.
-
We've made a final decision on proposed changes 1 & 2! We agreed to have the three channels seen below (names are just placeholders), and that the "long-lead" channel will be versioned X.X (like 1.3 and 1.4).
What this looks like with features ABC and XYZ from earlier...
We still haven't made a final decision on the remaining topics, like where the long-lead channel should be hosted or naming, please share feedback! Proposed distribution source of long-lead: Separate Azure feedThe long-lead channel would be distributed on a separate Azure feed rather than NuGet.org, which means your experience accessing the long-lead channel would look something like the following...
Share your feedback!Please let us know what you think! Let us know what you agree with and let us know what you disagree with and why! |
Beta Was this translation helpful? Give feedback.
-
Next set of pending decisions!! Please provide feedback on these if you wish! Proposed change #3 - Should long-lead be on NuGet.org or separate feed?Should the long-lead be on NuGet, or should we have it on a separate Azure feed? What do other NuGet packages do?
If we host long-lead NuGet packages on Azure feeds (Proposed choice)
If we host long-lead NuGet packages on NuGet.org (Alternative choice)
Proposed change #4: Bars for moving across a release channelWhat will be the bar for moving a feature from long-lead to next release? Or from being added to long-lead in the first place? Bar for long-lead:
Bar for next release:
Bar for stable release:
Proposed change #5: NamesCandidates
Requirements
ProposalsWe'll consider proposals of the whole set of names, since in some cases, the names are relative to each other (and if we have the alphabetical requirement, that changes things too). Proposal 1 - Stable, Preview, and Experimental
Proposal 2 - Stable, RC, and ExperimentalWhere RC == Release candidate
Proposal 3 - Latest, Next, Experimental
Proposal 4 - Stable, Beta, Experimental
Proposal 5 - Stable, Beta, Alpha
Proposal 6 - Stable, Beta, Dev (aligns with Edge channels)
Any other options you'd like to see?If there's any other option you think is worth considering, let us know! |
Beta Was this translation helpful? Give feedback.
-
Like many other developer SDKs, we need to have multiple release "channels", where we have "stable/GA" releases, "preview/beta" releases, etc.
✅ Approved final release channels
Definitions:
[Experimental]
attribute to indicate to developers that it's experimental.(+servicing)
❇️ Preview
❇️ Preview
🔁 Experimental
Some further explanations...
main
branch, including APIs tagged[Experimental]
.The NuGet feed in NuGet Package Manager will look something like this (previews will always show up as "newer" than experimental due to reverser alphabetical sorting, which helps ensure developers have to make an explicit choice to use the experimental channel and don't accidently upgrade to experimental versions)...
1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-preview2
(ABC)1.3.0
1.4-preview1
(ABC)1.2.1
1.4-experimental3
(ABC+XYZ)1.2.0
1.4-experimental2
(ABC+XYZ)1.1.1
1.4-experimental1
(ABC+XYZ)1.1.0
1.3.1
Bars for getting a feature into each release...
Some additional notes...
ARCHIVED INFO - BELOW PRESERVED FOR HISTORICAL PURPOSES
Call to action
Please read through the below sections and then share your feedback on the proposed requirements! We're locking down these requirements and channels with the help of the community, we haven't agreed on anything yet, so now is the perfect time to make your feedback heard! We'll be sharing our opinions alongside yours 😊
Scenarios (proposed - anything missing?)
Overall release scenarios...
FYI, the above names are placeholders and not final names.
1.3 GA
1.4 GA
1.5 GA
Customer scenarios...
Reunion team scenarios...
Repository scenarios
This is TBD and will be finalized after we make a decision on channels, but probably will look something like this...
Restrictions
We ship packages through NuGet, which only allows for one "channel". They have a concept of "prerelease" (which is indicated by anything using
-
after the version), but everything is sorted by version number (and then the-beta
or-next
are sorted reverse alphabetical)We also ship tooling via VSIX extensions, and the VSIX marketplace doesn't have a concept of multiple channels either. Additionally, it doesn't have the concept of multiple versions. Only the latest version is ever available. However, scenarios where we need a VSIX change should be rare, since the VSIX only carries project and item templates.
Feedback from customers and team
0.0-xxx
feels odd, I'd have the experimental versions be one version ahead, so if1.1
is the next GA release, experimental would be1.2
.0.0
for experimental...0.0-xxx
feels odd, I'd have the experimental versions be one version ahead, so if1.1
is the next GA release, experimental would be1.2
What we're currently doing...
We currently have "previews" of releases which include long-lead features. And then for the final release, we remove those long-lead features from the release. So, when you update from 0.8-preview2 to 0.8, you lose features.
(+servicing)
❇️ Next release
🔁 Long-lead
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-preview1
1.4-preview2
ABC (1.4)
XYZ (1.5)
1.4-preview3
ABC (1.4)
XYZ (1.5)
1.5-preview1
ABC (1.4)
XYZ (1.5)
1.5-preview2
ABC (1.4)
XYZ (1.5)
1.5-preview3
ABC (1.4)
XYZ (1.5)
1.6-preview1
ABC (1.4)
XYZ (1.5)
Why this isn't ideal...
Accepted change #1 - Add a third channel that only has features that'll be in the next release (release candidates)
"Preview" temporarily renamed to "Next release" so that naming isn't discussed yet
Essentially, the "Next release" channel is our "release candidate", reflective of what will be in the next release. And then we add a third channel for our long-lead features (what we currently call "Preview")
(+servicing)
❇️ Next release
❇️ Next release
🔁 Long-lead
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
TBD-long2101
TBD-long2102
ABC (1.4)
XYZ (1.5)
TBD-long2103
ABC (1.4)
XYZ (1.5)
TBD-long2104
ABC (1.4)
XYZ (1.5)
TBD-long2105
ABC (1.4)
XYZ (1.5)
TBD-long2106
ABC (1.4)
XYZ (1.5)
TBD-long2107
ABC (1.4)
XYZ (1.5)
Concerns
Accepted change #2 - Version numbers for "Long-lead" channel - X.X
How should the long-lead channel be versioned? A single release in the long-lead channel isn't really reflective of a release number that corresponds with the Stable releases (for example, in the 1.4 timeframe, the long-lead channel might have features that will be part of the 1.6 or 1.7 release).
If we go with X.X (Accepted)
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
1.3-long3
1.4-long1
ABC (1.4)
1.4-long2
ABC (1.4)
XYZ (1.5)
1.4-long3
ABC (1.4)
XYZ (1.5)
1.5-long1
ABC (1.4)
XYZ (1.5)
1.5-long2
ABC (1.4)
XYZ (1.5)
1.5-long3
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April... (we need to make sure we never publish a higher number experimental without a preview of the same number existing, so devs don't accidently update to experimental).
1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.4-long3
(ABC+XYZ)1.2.0
1.4-long2
(ABC+XYZ)1.1.1
1.4-long1
(ABC+XYZ)1.1.0
1.3.1
(ABC+XYZ)Concerns
What others do...
0.0-longerimental48f2a80
7.0.0-build.1096+cd6d726dd9
.Proposed change #3 - Should long-lead be on NuGet.org or separate feed?
Should the long-lead be on NuGet, or should we have it on a separate Azure feed?
What do other NuGet packages do?
If we host long-lead NuGet packages on Azure feeds (Proposed choice)
-long
main version number: No restrictions ✅1.4.0
(ABC)1.4.0
(ABC)1.5-long1
(ABC+XYZ)1.3.1
1.4-next2
(ABC)1.4-long3
(ABC+XYZ)1.3.0
1.4-next1
(ABC)1.4-long2
(ABC+XYZ)1.2.1
1.3.1
1.4-long1
If we host long-lead NuGet packages on NuGet.org (Alternative choice)
-long
main version number: Limited-next
's first (otherwise-long
will be suggested first for users if we have long at 1.5 when next/GA is only at 1.4).1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.4-long3
(ABC+XYZ)1.2.0
1.4-long2
(ABC+XYZ)1.1.1
1.4-long1
(ABC+XYZ)1.1.0
1.3.1
(ABC+XYZ)Proposed change #4: Bars for moving across a release channel
What will be the bar for moving a feature from long-lead to next release? Or from being added to long-lead in the first place?
Bar for long-lead:
Bar for next release:
Bar for stable release:
Proposed change #5: Names
Candidates
Requirements
Proposals
We'll consider proposals of the whole set of names, since in some cases, the names are relative to each other (and if we have the alphabetical requirement, that changes things too).
Proposal 1 - Stable, Preview, and Experimental
Proposal 2 - Stable, RC, and Experimental
Where RC == Release candidate
Proposal 3 - Latest, Next, Experimental
Proposal 4 - Stable, Beta, Experimental
Proposal 5 - Stable, Beta, Alpha
Proposal 6 - Stable, Beta, Dev (aligns with Edge channels)
Any other options you'd like to see?
If there's any other option you think is worth considering, let us know!
OLD OPTIONS (No need to continue reading further, preserved for historical purposes)...
If we go with 0.0 (Rejected choice)
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
0.0-long2101
0.0-long2102
ABC (1.4)
0.0-long2103
ABC (1.4)
XYZ (1.5)
0.0-long2104
ABC (1.4)
XYZ (1.5)
0.0-long2105
ABC (1.4)
XYZ (1.5)
0.0-long2106
ABC (1.4)
XYZ (1.5)
0.0-long2107
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.3.1
1.2.0
1.3-next2
0.0-long2104
(ABC+XYZ)0.0-long2013
(ABC+XYZ)If it's on NuGet and we use 0.0 (Alternative choice)
Developers would have to scroll down a ways to get to the 0's (slightly tough to find 😒 and even tougher since we had 0.1, 0.5, and 0.8 releases 😒) and then install the latest 0.0. Can be tough to update, since it's never clear if there's an update to only the long-lead, and they have to scroll all the way through 😒 But they don't have to set up a separate feed 👍.
-long
main version number: No restrictions (it's never incremented) ✅1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.3.1
1.2.0
1.3-next2
0.0-long2104
(ABC+XYZ)0.0-long2013
(ABC+XYZ)If it's on Azure feeds and we use 0.0 (Alternative choice)
Developers would have to set up a separate Azure feed (slightly annoying 😒) and then select the latest from that feed (selecting latest is easy 👍). Updating is mostly easy, if they have that feed selected, the update will only suggest updates within the long-lead channel, but if they select all feeds or NuGet, it'll still suggest the GAs or previews.
-long
main version number: No restrictions (it's never incremented) ✅1.4.0
(ABC)1.4.0
(ABC)0.0-long2104
(ABC+XYZ)1.3.1
1.4-next2
(ABC)0.0-long2103
(ABC+XYZ)1.2.1
1.4-next1
(ABC)0.0-long2102
(ABC+XYZ)1.2.0
1.3.1
0.0-long2101
Concerns
0.0-xxx
feels odd, I'd have the experimental versions be one version ahead, so if1.1
is the next GA release, experimental would be1.2
Option 1 - Stable, Preview, and Canary channels
What we're doing today (aside from we don't have a Canary channel yet).
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3 GA
1.4 GA
ABC (1.4)
1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
XYZ (1.5)
1.4-next3
ABC (1.4)
XYZ (1.5)
1.5-next1
ABC (1.4)
XYZ (1.5)
1.5-next2
ABC (1.4)
XYZ (1.5)
1.5-next3
ABC (1.4)
XYZ (1.5)
1.6-next1
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4
(ABC)1.5-next1
(ABC+XYZ)1.3
1.4
(ABC)1.2
1.4-next3
(ABC+XYZ)What this looks like for each scenario...
1.4-next3
to1.4 GA
, we simultaneously release1.5-next1
so that "update to latest" always keeps them on the preview channel1.4-next3
, to help validate the1.4 GA
, however,1.4-next3
includes experimental features that won't be in the GA, so they can't really validate what the GA release itself will be like...Option 2 - Stable (with RCs), Preview, and Canary channels
Same as Option 1 but just adding a Release Candidate
RC: ~1 month before GA
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3 GA
1.4-rc1
ABC (1.4)
1.4 GA
ABC (1.4)
1.5-rc1
ABC (1.4)
XYZ (1.5)
1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next2
1.4-next3
ABC (1.4)
XYZ (1.5)
1.5-next1
ABC
XYZ (1.5)
1.5-next2
ABC (1.4)
XYZ (1.5)
1.5-next3
ABC (1.4)
XYZ (1.5)
1.6-next1
ABC (1.4)
XYZ (1.5)
1.6-next2
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4
(ABC)1.5-next2
(ABC+XYZ)1.3
1.5-next1
(ABC+XYZ)1.2
1.4
(ABC)1.1
1.4-rc1
(ABC)1.0
1.4-next3
(ABC+XYZ)What this looks like for each scenario...
1.4-next4
to1.4-rc1
or1.4 GA
, we simultaneously release1.5-next1
with1.4-rc1
so that "update to latest" always keeps them on the preview channel1.4-rc1
, to help validate the1.4 GA
.1.5-next1
, so developers have to explicitly select an "older" oneOption 3.1.1 - Stable, Preview, Experimental (0.0), and Canary channels
Basically the same as Option 2... "Stable RCs" become "Stable previews" (it's a preview of the upcoming release), "Previews" become "Experimental", and we ship the "RCs" monthly. In this case, the
1.4-nextX
is always more representative of what is planned to be in 1.4, no features planned to be in 1.5 will be part of the 1.4 preview.Additionally, we number the experimental versions as 0.0, since they contain features that might be part of 1.5 or 1.7... they're not specific to a specific version, they're reflective of "what we currently have".
(+servicing)
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
0.0-long2101
0.0-long2102
ABC (1.4)
XYZ (1.5)
0.0-long2103
ABC (1.4)
XYZ (1.5)
0.0-long2104
ABC (1.4)
XYZ (1.5)
0.0-long2105
ABC (1.4)
XYZ (1.5)
0.0-long2106
ABC (1.4)
XYZ (1.5)
0.0-long2107
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.3.1
1.2.0
1.3-next2
0.0-long2104
(ABC+XYZ)0.0-long2013
(ABC+XYZ)What this looks like for each scenario...
preview
release0.0-long2103
to1.4-next1
or1.4 GA
.1.4-next3
, to help validate the1.4 GA
.Option 3.1.2 - Stable, Preview, Experimental (X.X), and Canary channels
Same as 3.1.2, but we version the Experimental packages too
(+servicing)
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
1.3-long3
1.4-long1
ABC (1.4)
XYZ (1.5)
1.4-long2
ABC (1.4)
XYZ (1.5)
1.4-long3
ABC (1.4)
XYZ (1.5)
1.5-long1
ABC (1.4)
XYZ (1.5)
1.5-long2
ABC (1.4)
XYZ (1.5)
1.5-long3
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April... (we need to make sure we never publish a higher number experimental without a preview of the same number existing, so devs don't accidently update to experimental).
1.4.0
(ABC)1.4.0
(ABC)1.3.1
1.4-next2
(ABC)1.3.0
1.4-next1
(ABC)1.2.1
1.4-long3
(ABC+XYZ)1.2.0
1.4-long2
(ABC+XYZ)1.1.1
1.4-long1
(ABC+XYZ)1.1.0
1.3.1
(ABC+XYZ)What this looks like for each scenario...
preview
release1.4-long1
to1.4-next1
or1.4 GA
.1.4-next3
, to help validate the1.4 GA
.Option 3.2.1 - Stable, Preview, Experimental 0.0 (on Azure feeds), and Canary channels
Same as Option 3.1 except we distribute the Experimentals on Azure feeds, so public NuGet remains only GA releases and previews of the GA releases. See what this would look like on our roadmap.
(+servicing)
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
0.0-long2101
0.0-long2102
ABC (1.4)
XYZ (1.5)
0.0-long2103
ABC (1.4)
XYZ (1.5)
0.0-long2104
ABC (1.4)
XYZ (1.5)
0.0-long2105
ABC (1.4)
XYZ (1.5)
0.0-long2106
ABC (1.4)
XYZ (1.5)
0.0-long2107
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4.0
(ABC)1.4.0
(ABC)0.0-long2104
(ABC+XYZ)1.3.1
1.4-next2
(ABC)0.0-long2103
(ABC+XYZ)1.2.1
1.4-next1
(ABC)0.0-long2102
(ABC+XYZ)1.2.0
1.3.1
0.0-long2101
What this looks like for each scenario...
1.4-next3
, to help validate the1.4 GA
.Option 3.2.2 - Stable, Preview, Experimental X.X (on Azure feeds), and Canary channels
Same as Option 3.2.1 except we version experimental rather than using
0.0
...(+servicing)
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier...
1.3.0 GA
1.3.1
1.4 GA
ABC (1.4)
1.4.1
ABC (1.4)1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
1.4-next2
ABC (1.4)
1.5-next1
ABC (1.4)
1.5-next2
ABC (1.4)
XYZ (1.5)
1.4-long1
1.4-long2
ABC (1.4)
XYZ (1.5)
1.4-long3
ABC (1.4)
XYZ (1.5)
1.5-long1
ABC (1.4)
XYZ (1.5)
1.5-long2
ABC (1.4)
XYZ (1.5)
1.5-long3
ABC (1.4)
XYZ (1.5)
1.6-long1
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4.0
(ABC)1.4.0
(ABC)1.5-long1
(ABC+XYZ)1.3.1
1.4-next2
(ABC)1.4-long3
(ABC+XYZ)1.3.0
1.4-next1
(ABC)1.4-long2
(ABC+XYZ)1.2.1
1.3.1
1.4-long1
What this looks like for each scenario...
1.4-next3
, to help validate the1.4 GA
.What do other products have for release channels?
Microsoft Edge
Chromium
React
17.0.3
, etc0.0.0-b48b38af6
0.0.0-longerimental-b48b38af6
Xamarin Forms
Flutter
Visual Studio
Discarded options
Option 4 - Experimental flags with Stable, Preview, and Canary channels
Moved to discarded since interest in shipping experimental features (under flags) in GA is not appealing to most
We use experimental flags so that experimental features can still be shipped in a stable release.
🔁 Experimental
🔁 Experimental
🔁 Experimental
What this looks like with features ABC and XYZ from earlier (* indicates must call experimental unlock API first before using)...
1.3 GA
1.4 GA
ABC (1.4)
XYZ* (1.5)
1.5 GA
ABC (1.4)
XYZ (1.5)
1.4-next1
ABC* (1.4)
XYZ* (1.5)
1.4-next2
ABC (1.4)
XYZ* (1.5)
1.5-next1
ABC (1.4)
XYZ* (1.5)
1.5-next2
ABC (1.4)
XYZ (1.5)
What you'd see in NuGet Package Manager in April...
1.4
(ABC+XYZ*)1.5-next1
(ABC+XYZ*)1.3
1.4
(ABC+XYZ*)1.2
1.4-next2
(ABC+XYZ*)1.1
1.4-next1
(ABC*+XYZ*)1.0
1.3
What this looks like for each scenario...
1.4-next3
, and ensures they aren't calling any experimental APIs, to help validate the1.4 GA
.Beta Was this translation helpful? Give feedback.
All reactions