@@ -59,10 +59,31 @@ over time. If circumstances change, an earlier decision to deprecate or change
5959something may need to be revisited from time to time. So do not take items on
6060this list to mean "it is settled, do not waste our time bringing it up again".
6161
62+ == Procedure
63+
64+ Discussing the desire to make breaking changes, declaring that breaking
65+ changes are made at a certain version boundary, and recording these
66+ decisions in this document, are necessary but not sufficient.
67+ Because such changes are expected to be numerous, and the design and
68+ implementation of them are expected to span over time, they have to
69+ be deployable trivially at such a version boundary.
70+
71+ The breaking changes MUST be guarded with the configuration
72+ variable, `feature.git<version>` to help this process. Each
73+ individual breaking change must be implemented in such a way that
74+ for a user who has this configuration variable set to true, it goes
75+ in effect even before Git <version>. Note that setting the
76+ configuration to `false` MUST have no effect, either before or AFTER
77+ Git <version>. In other words, this is purely an option to recruit
78+ early adopters and not a mechanism to keep the old behaviour after
79+ the announced version boundary for breaking changes.
80+
81+
6282== Git 3.0
6383
6484The following subsections document upcoming breaking changes for Git 3.0. There
65- is no planned release date for this breaking version yet.
85+ is no planned release date for this breaking version yet. The early
86+ adopter configuration used for changes for this release is `feature.git3`.
6687
6788Proposed changes and removals only include items which are "ready" to be done.
6889In other words, this is not supposed to be a wishlist of features that should
0 commit comments