From: Junio C Hamano <gitster@pobox.com>
To: Taylor Blau <me@ttaylorr.com>
Cc: Patrick Steinhardt <ps@pks.im>, git@vger.kernel.org
Subject: Re* [PATCH v2] BreakingChanges: early adopter option
Date: Fri, 28 Feb 2025 09:28:21 -0800 [thread overview]
Message-ID: <xmqqv7su2d3e.fsf_-_@gitster.g> (raw)
In-Reply-To: <ZxA5OWL1AuQxA/NC@nand.local> (Taylor Blau's message of "Wed, 16 Oct 2024 18:07:53 -0400")
Junio C Hamano <gitster@pobox.com> writes:
> +== Procedure
> +
> +Discussing the desire to make breaking changes, declaring that breaking
> +changes are made at a certain version boundary, and recording these
> +decisions in this document, are necessary but not sufficient.
> +Because such changes are expected to be numerous, and the design and
> +implementation of them are expected to span over time, they have to
> +be deployable trivially at such a version boundary.
> +
> +The breaking changes MUST be guarded with the a compile-time switch,
> +WITH_BREAKING_CHANGES, to help this process. When built with it,
> +the resulting Git binary together with its documentation would
> +behave as if these breaking changes slated for the next big version
> +boundary are already in effect. We may also want to have a CI job
> +or two to exercise the work-in-progress version of Git with these
> +breaking changes.
So we decided to give up the runtime switching idea (which was what
the v1 iteration of this patch proposed), and instead to change the
behaviour at compile-time. One major part of this decision was to
deal with documentation and other things that cannot be changed at
the runtime with a feature.* configuration.
> == Git 3.0
>
> The following subsections document upcoming breaking changes for Git 3.0. There
> -is no planned release date for this breaking version yet.
> +is no planned release date for this breaking version yet. The early
> +adopter configuration used for changes for this release is `feature.git3`.
Hence, we should strike the added sentence out of this hunk. But I
forgot to do so when I prepared this v2.
We also discussed how to deal with irreversible changes to a
repository that renders it unusable by the current crop of Git, once
a such version of Git from the future touches it. Floated was an
idea to put extensions.* mechanism to work for that purpose, but the
resulting document does not have anything to say about it.
Which I think is perfectly fine, because such a "repository
incompatibility change" should come with its own extensions.*
mechanism to protect the resulting repository, whether such a change
is part of the WITH_BREAKING_CHANGES feature set or not. It is not
something the BreakingChanges document need to discuss.
So here is a small update to the text.
--- >8 ---
Subject: BreakingChanges: clarify the procedure
The point behind a compile-time switch is to ensure that we have a
mechanism to hide myriad of backward incompatible changes that may
be prepared and accumulated over time, yet make them available for
testing any time during the development toward the big version
boundary. Add a few words to stress that point.
Since the document was first written, we have added the CI job that
the document anticipated us to have. Rephrase to state the current
status.
The discussion in [*1*] made us abandon the "feature.git3" based
runtime switching of behaviour and instead adopt the compile-time
switching mechanism, but a stray sentence about runtime switching
still remained in the final text by mistake. Remove it.
[Reference]
*1* https://lore.kernel.org/git/xmqqldzel6ug.fsf@gitster.g/
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
Documentation/BreakingChanges.adoc | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git c/Documentation/BreakingChanges.adoc w/Documentation/BreakingChanges.adoc
index 042709a461..bdfad29d8a 100644
--- c/Documentation/BreakingChanges.adoc
+++ w/Documentation/BreakingChanges.adoc
@@ -66,22 +66,21 @@ changes are made at a certain version boundary, and recording these
decisions in this document, are necessary but not sufficient.
Because such changes are expected to be numerous, and the design and
implementation of them are expected to span over time, they have to
-be deployable trivially at such a version boundary.
+be deployable trivially at such a version boundary, prepared over long
+time.
The breaking changes MUST be guarded with the a compile-time switch,
WITH_BREAKING_CHANGES, to help this process. When built with it,
the resulting Git binary together with its documentation would
behave as if these breaking changes slated for the next big version
-boundary are already in effect. We may also want to have a CI job
-or two to exercise the work-in-progress version of Git with these
-breaking changes.
+boundary are already in effect. We also have a CI job to exercise
+the work-in-progress version of Git with these breaking changes.
== Git 3.0
The following subsections document upcoming breaking changes for Git 3.0. There
-is no planned release date for this breaking version yet. The early
-adopter configuration used for changes for this release is `feature.git3`.
+is no planned release date for this breaking version yet.
Proposed changes and removals only include items which are "ready" to be done.
In other words, this is not supposed to be a wishlist of features that should
next prev parent reply other threads:[~2025-02-28 17:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-19 19:33 [PATCH] BreakingChanges: early adopter option Junio C Hamano
2024-09-20 21:33 ` Junio C Hamano
2024-09-22 17:51 ` Junio C Hamano
2024-09-26 11:57 ` Patrick Steinhardt
2024-09-26 14:16 ` Phillip Wood
2024-09-26 16:25 ` Junio C Hamano
2024-09-26 16:26 ` Junio C Hamano
2024-09-26 15:57 ` Junio C Hamano
2024-10-11 21:49 ` [PATCH v2] " Junio C Hamano
2024-10-16 7:22 ` Patrick Steinhardt
2024-10-16 22:07 ` Taylor Blau
2025-02-28 17:28 ` Junio C Hamano [this message]
2025-03-03 10:30 ` Re* " Patrick Steinhardt
2025-03-03 16:32 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqv7su2d3e.fsf_-_@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=me@ttaylorr.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).