From 80835acc75914eb1c60ad8a9a1d6b4fe25d03415 Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Thu, 12 Feb 2026 13:54:27 -0500 Subject: [PATCH 1/2] Create a branch roadmap This should show the general layout of how we're using branches to produce prospective text for upcoming versions. --- admin/branch-diagram.md | 97 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 admin/branch-diagram.md diff --git a/admin/branch-diagram.md b/admin/branch-diagram.md new file mode 100644 index 000000000..9b89c4e60 --- /dev/null +++ b/admin/branch-diagram.md @@ -0,0 +1,97 @@ +# Version and Feature branch diagram + +We've started building branches that have preliminary text for the C# language features in versions greater than the current standard. This gives the committee a look forward to how other features could be integrated into the standard. We also hope it enables us to move more quickly by having drafts ready for all future versions. + +A downside is that we have more complicated branch management to ensure changes we make in the standard at version 8 are propagated forward through all the branches for each upcoming version. + +The following diagram shows the primary branches we're using in this process. Our naming conventions are as follows: + +- Branches that have the prefix *standard* represent the approved ECMA standard for the stated version. +- Branches that have the *draft* represent the current working draft for the stated version. Updates in the *draft* branches have been approved by the committee. However, feature language may be incomplete. Issues for the draft are generally tracked with issues. +- Branches that have the *alpha* suffix represent a "feature complete" version of the standard. However, the language for any features not incorporated in the standard hasn't been discussed by the committee. + +Note that all alpha versions beyond the next version (version 9) are built on the previous version's alpha branch. Therefore the unreviewed language in the *alpha* branches accumulates with each version ahead of the committee. + +```mermaid +--- +title: C# Standard - Version and Feature Branches +--- +gitGraph + commit id: "standard-v5" + commit id: "standard-v6" + branch standard-v7 + checkout standard-v7 + commit id: "v7 features" + branch draft-v8 + checkout draft-v8 + commit id: "v8 features" + branch draft-v9 + checkout draft-v9 + commit id: "v9 base" + commit id: "v9 reviewed features" + branch v9-alpha + commit id: "v9 alpha feature PRs" + branch draft-v10 + checkout draft-v10 + commit id: "v10 base" + commit id: "v10 reviewed features" + branch v10-alpha + commit id: "v10 alpha feature PRs" + branch draft-v11 + checkout draft-v11 + commit id: "v11 base" + commit id: "v11 reviewed features" + branch v11-alpha + commit id: "v11 alpha feature PRs" +``` + +After each meeting, all changes merged since the previous meeting are propagated through each of the version specific branches. The following diagram shows the workflow: + +```mermaid +--- +title: C# Standard - Version and Feature Branches +--- +gitGraph + commit id: "standard-v5" + commit id: "standard-v6" + branch standard-v7 + checkout standard-v7 + commit id: "v7 features" + branch draft-v8 + checkout draft-v8 + commit id: "v8 features" + branch draft-v9 + checkout draft-v9 + commit id: "v9 base" + commit id: "v9 reviewed features" + branch v9-alpha + commit id: "v9 alpha feature PRs" + branch draft-v10 + checkout draft-v10 + commit id: "v10 base" + commit id: "v10 reviewed features" + branch v10-alpha + commit id: "v10 alpha feature PRs" + branch draft-v11 + checkout draft-v11 + commit id: "v11 base" + commit id: "v11 reviewed features" + branch v11-alpha + commit id: "v11 alpha feature PRs" + checkout draft-v8 + commit id: "PRs merged at meeting" + checkout draft-v9 + merge draft-v8 + checkout v9-alpha + merge draft-v9 + checkout draft-v10 + merge v9-alpha + checkout v10-alpha + merge draft-v10 + checkout draft-v11 + merge v10-alpha + checkout v11-alpha + merge draft-v11 +``` + +The changes approved by the committee are propagated in turn through all *draft* and *alpha* branches for upcoming versions. This process will introduce conflicts in feature specific PRs that will be resolved after the above workflow is completed. From 26849e5682d4a0060ff94f7b80886db502f26777 Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Thu, 12 Feb 2026 15:44:47 -0500 Subject: [PATCH 2/2] fix branch name I mistyped the branch name when creating it, but there it is. --- admin/branch-diagram.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/branch-diagram.md b/admin/branch-diagram.md index 9b89c4e60..04bce00b8 100644 --- a/admin/branch-diagram.md +++ b/admin/branch-diagram.md @@ -31,8 +31,8 @@ gitGraph commit id: "v9 reviewed features" branch v9-alpha commit id: "v9 alpha feature PRs" - branch draft-v10 - checkout draft-v10 + branch draft-10 + checkout draft-10 commit id: "v10 base" commit id: "v10 reviewed features" branch v10-alpha @@ -66,8 +66,8 @@ gitGraph commit id: "v9 reviewed features" branch v9-alpha commit id: "v9 alpha feature PRs" - branch draft-v10 - checkout draft-v10 + branch draft-10 + checkout draft-10 commit id: "v10 base" commit id: "v10 reviewed features" branch v10-alpha @@ -84,10 +84,10 @@ gitGraph merge draft-v8 checkout v9-alpha merge draft-v9 - checkout draft-v10 + checkout draft-10 merge v9-alpha checkout v10-alpha - merge draft-v10 + merge draft-10 checkout draft-v11 merge v10-alpha checkout v11-alpha