Git development
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: My summary of the Git Contributors' Summit 2026, was Re: Git v3.0 timeline, was Re: What's cooking in git.git (Sep 2026, #08)
Date: Tue, 22 Sep 2026 20:44:41 +0200 (CEST)	[thread overview]
Message-ID: <5cc325c6-579e-4fed-7071-a3ff98d51ccb@gmx.de> (raw)
In-Reply-To: <xmqq4ifhgzvx.fsf@gitster.g>

Hi Junio,

On Tue, 22 Sep 2026, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > On Mon, 21 Sep 2026, Junio C Hamano wrote:
> >
> >> Git 2.56-rc1 has been tagged.  We may merge last-minute fixes before
> >> the final Git 2.56 release, but otherwise I do not expect any new
> >> feature topics to be ready before the final, so most of the
> >> in-flight topics will stay cooking in 'next' until then.  As
> >> discussed at the Git Contributors' Summit, the version after the
> >> upcoming Git 2.56 will be Git 2.98, scheduled near the end of this
> >> year.
> >
> > Would you say that the following is an accurate characterization of the
> > timeline, so that people who need to plan dependent projects can rely on
> > it?
> 
> My outline was deliberately limited up to end of this year as I am
> hesitant to say beyond that point before the meeting notes are made
> public.

I originally wrote this summary of the Git Contributor Summit only for my
own records, but since you hinted at wanting some meeting notes, figured
it might be interesting to other people, too. So here goes my distillation
of the breakout-sessions from this year's Contributors' Summit. Many of
these ideas still need discussion on the list; proposals below are not
project-wide decisions.

Security mailing list and process

The security list is seeing a large influx of outside reports, apparently
often AI-assisted or generated. Duplicates and reports outside Git's
security model consume triage time, while some patches have waited for
months. Waiting for an empty queue is not a workable release criterion: we
need to release the fixes we have, rather than hold them indefinitely
while more reports arrive. No fixed release cadence or guaranteed response
time was settled.

Documenting Git's security model would save repeated explanations of what
does and does not constitute a vulnerability. (Personal note, not
discussed at the Summit: Stolee had tried to start a conversation about
Git's security boundary a long time ago, but nobody replied. Maybe the AI
onslaught will provide enough motivation to get that discussion going.)
Moving non-security bugs to the public list more readily was also
encouraged. A timeout after which public discussion would be presumed OK
was proposed, but not agreed.

More company staffing would help, without turning this into an obligation
for volunteers. Paying for dedicated help was discussed, with onboarding
costs a concern. Using AI for triage or fixes raises confidentiality and
DCO questions of its own. (Personal note: There seemed to be some
sentiment in the room that contradicted the earlier agreed-on finding on
the mailing list that using AI for triaging and for investigating wasn't a
copyright concern and should therefore be considered permissible.)

The release bottleneck is not really tag automation. Merging and
backporting fixes, preparing advisories, and handling CVEs take work, and
too much of that knowledge lives in people's heads. Peff volunteered to
start a public discussion of the process and dig up existing resources.
(Personal note: I have done that merging, backporting, etc plenty of
times, and I don't think that it is the bottleneck, and I was rather
surprised to hear that it is complicated. Sure, there are the expected
merge conflicts when merging `maint-*` branches, and running -- and
fixing! -- CI on all of the tags in a private repository should go without
saying, but that's all craft of the trade. Rather, the indecision and lack
of engagement on the git-security mailing list is what I see as the
blocker. I'd happily volunteer to juggle those branch thickets if that was
truly the make-or-break issue here.)

Microsoft's release process reportedly needs about seven weeks. There were
no objections in the room to proceeding without waiting for that schedule.
(Personal note: That release process was misrepresented, which is
surprising, as I coordinated two or three Git for Windows security bugfix
releases _on the git-security list_ since the most recent Git security
bugfix release, it's always the same thing: release on a second Tuesday of
the month, three weeks before that the patches need to have settled,
everybody goes home with a dependable timeline. It's not really that big
of a deal. Testing patches, constructive feedback, these are the things
that are missing and therefore blocking the process. I sensed a lot of
finger-pointing in this discussion. I mean, I don't blame anybody for
avoiding security work: it is stressful and intense. The responsibility
for getting things wrong is enormous. I know that because I've done my
share of that, probably more than most in the Git project, and I will do
even more in the future. But when I don't have the time, or the energy, I
am aware that I, myself, am the bottleneck; I don't need to blame others.)

Git v3.0

The proposed target is spring 2027: v2.56 in September 2026, v2.98 in
December, then v2.99 and v3.0 next spring. The jump in version numbers is
intended to signal the approaching breaking changes. March and April were
both mentioned; the precise timing is not settled.

There was agreement on releasing v2.99.1 and v3.0 together, differing only
in the BREAKING_CHANGES (v3.0 switches them on). That keeps the transition
separate from another round of feature development. Nobody in the room
objected to Rust becoming mandatory in v3.0. (Personal note: probably
because Randall wasn't there, to say that NonStop support would be a
blocker and that Git please wait.) A v2.x LTS remains an open question,
with Gentoo mentioned as an interested party. (Personal note: I am still
advocating for an in-tree Long Term Support branch, and since Junio
indicated that he's less than eager to take care of that, I would love for
Patrick Steinhardt to be the "LTS lieutenant", I vaguely remember that he
said he'd do it if asked, and I trust his judgement, so I'd ask.)

SHA-256 support across the ecosystem had been a blocker. GitHub reported
experimental support, with general availability expected around November.
GitLab already had public, non-experimental support, and libgit2 supports
it, too. JGit remains a gap; Google was not planning to fund that work.

The SHA-1/SHA-256 interoperability work, including historical tags, was
reported to be implemented but not yet sent to the list. (Personal note: I
think that the room seriously "mis-underestimated" the real-world impact
of this. The code is not even on the Git mailing list, and the
ramifications of not having a robust plan how to deal with partial clones
or submodules or even signed tags strikes me as a dealbreaker. I would not
be surprised if the decision to enforce SHA-256 as default would have to
be revisited before v3.0, and possibly overturned.)

Documentation

Julia's work highlights the gap between documentation written by people
who know Git inside out and users who do not yet know what objects, the
index, or upstream mean. We need approachable learning material as well as
reference documentation. Both need work; keeping manpages concise does not
mean they cannot have better explanations and examples. (Personal note: I
am beyond excited that Julia, whose work I have always admired, got
interested in improving Git's documentation, which is in dear need of
being improved, mainly because it does not cater to the majority of Git
users out there who are unlikely to wander onto the Git mailing list,
ever. I just hope that old-timers who really do not need the documentation
nor understand the need of those who do need it show enough appreciation
for the fresh views and for Julia's understanding of the target audience.)

Discoverability matters, too. The website (https://git-scm.com/) needs
clearer entry points for learning Git, and existing guides are harder to
find than manpages. Missing subsection links are another improvement we
could make incrementally. (Personal note: Judging by the history of that
site, I do wonder whether the core Git contributors are interested in
helping this effort at all. For example, there are a growing number of PRs
suggesting to add new UIs to the growing list, but I gave up reviewing
them because I was the only one doing so.)

There was support for replacing outdated material and for merging useful
improvements, then iterating, rather than trying to perfect everything
before it lands. Bringing user feedback to the list without flooding it
remains a challenge.

The current funding covers only 100 hours split between two people.
Additional project and company funding was encouraged; brian, Emily, and
Mark offered to explore company support. (Personal note: I had tried, back
when GitHub still funded my team, to start something like that, without
any success. To the contrary, even Git for Windows and Git Credential
Manager got defunded.)

On the tooling side, using only Asciidoctor instead of maintaining both
AsciiDoc and Asciidoctor support was proposed as a possible Git v3.0
change. Distribution support and rendering differences need checking, with
doc-diff suggested for comparing the outputs. Patrick filed an issue
during the discussion. (Personal note: AFAIU the AsciiDoc spec is now
maintained by Asciidoctor, and I am aware already of one change that was
made to the spec without adapting AsciiDoc accordingly. So the entire
discussion might be quite moot already.)

Other ideas included richer diagrams for HTML while retaining text
versions for manpages, and privacy-respecting traffic measurements to help
prioritize documentation work. No diagram format was chosen, and caching
and AI scraping complicate getting useful traffic data. Mermaid was
proposed, and even GraphViz. (Personal note: I added support for Mermaid
diagrams to https://git-scm.com/, but it turned out to be too limited, so
I added GraphViz support. The support code for this is a bit of a beast,
having a wasm version of GraphViz for development, pre-rendering the
diagrams as SVG and as PDF during deployment of the site; it was quite a
bit of fun to implement all that.)

Outreachy sponsoring

The goal is to support three interns in the round starting in early
December, at $10,000 each. The corporate sponsorship previously provided
by GitLab and GitHub has dried up, leaving Git itself to pay. There are
company contacts to follow up with; Emily offered to ask Google's OSPO,
without high expectations. No new sponsorship commitments were made.
(Personal note: I don't think that these internships provide enough
publicity to give companies much of an incentive to fund this. Which I
find a bit of a shame, Outreachy in particular does a lot of important,
good work, and if I wasn't so constantly overworked, I would want to
mentor again; I always found it rewarding, even if I hold myself to a
quite high bar which is quite draining.)

A related point for Git Merge 2027: announcing the location early would
help Outreachy and GSoC interns plan attendance. No location was selected.

Pluggable object database

Patrick's pluggable object database is working, but it is not complete:
commit-graph and multi-pack-index integration are still outstanding, and a
repository extension is planned. (Personal note: It might be interesting
to see whether implementing a storage backend is easier in core Git or in
another Git-compatible implementation. JGit should be a natural target,
having originated within BigTable-sized constraints, i.e. a different
storage system, but funding seems to have dried up, there's not even
SHA-256 support, so JGit might not be as hackable as it once was.)

Content-defined chunking prompted an important distinction between
changing how objects are stored and changing the logical object model.
Starting at the storage layer would let us preserve existing blob OIDs
rather than require ecosystem-wide changes. A new pack/index format could
provide another representation of the same object, much as deltas do
today. No particular representation was agreed. (Personal note: It is
curious to me why nobody tought about inventing a "meta blob", i.e. an
object much like a tree object, except that it stitches together a larger
blob. This would allow for the content-defined chunking that `rsync`
already championed, way before Git was born! It would have allowed a Git
native large file support worth writing home about, and could have
replaced Git LFS. Xet (https://huggingface.co/docs/hub/xet/index) would
not have had to be invented, and it would have allowed game development to
move to Git. I can only imagine that the time it would cost to get even
the first patches of this into core Git would be seen as prohibitive by
any company who may have considered the effort.)

There is also an API question: does a backend seeing only object content
have enough context to make good storage and delta choices, or should it
receive richer information? More searchable tree storage and a Git "commit
cloud" were other possibilities raised, not committed plans. (Personal
note: At a previous GitMerge, Facebook presented their work, see e.g.
https://github.com/facebook/sapling/blob/main/eden/mononoke/blobstore/packblob/README.md,
which includes separating actual storage from transport. That is, already
at push time, derived metadata is computed in async jobs which provide
several potential deltas ready-to-go when a client clones or fetches. They
reported clones with regular Git clients that are twice as fast, just
because the server doesn't need to spend much compute on the data it
sends. So there is a lot to be learned out there already.)

AI

The current SubmittingPatches policy is rooted in DCO certification and
advice from SFC lawyers. The unresolved question is whether, and to what
extent, contributors can certify AI-generated code. There was substantial
disagreement about acceptable use, provenance and legal risks, community
trust, review burden, and whether the current caution excludes useful
tools. No policy change was agreed. (Personal note: You'd think that the
opinion of lawyers is taken at face value, but no, it seems that some core
Git contributors seem to disagree with the lawyers in favor of their own
opinion...)

Several participants found language and proofreading assistance useful. A
particular concern was submissions where the human does little more than
relay agent output, leaving reviewers to deal with the consequences. The
influx of poor GSoC contributions was one example. Attribution such as
Assisted-by was suggested to make tool use clearer, but attribution alone
does not answer the quality or DCO questions. (Personal note: my precedent
of "Assisted-by" was called out as helpful, and I do think it is. I make a
difference between AI-generated and AI-assisted. I'm not a fast typer, so
I benefit a lot from being able to tell an LLM to please refactor out
these four lines with the appropriate signature. There's not much
creativity in there. I also like to let AI present me the call graphs for
certain code locations, because due to the choice of C, which thanks to
the C preprocessor is not easy to analyze statically, there are no
competent tools other than LLMs that I can use for the task. I was highly
surprised, though, to see how much enmity against AI in general was
voiced, not by many, but many, many times, and how that contrasts with the
Linux project which I hitherto had not considered to be as particularly
open to modern practices.)

brian and Taylor agreed to put differing policy proposals on the list. The
suggested process is to have alternatives examined by SFC counsel, make
the risks clear, and then consider a vote. Emily volunteered to organize
the voting procedure. Eligibility and the details remain open; Junio's
authority as maintainer remains central. (Personal note: Since Taylor
works for OpenAI now, I was not surprised by his stance, but brian works
at GitHub, home of GitHub Copilot, and I am not sure how favorable their
employer would look at their semi-public utterings about AI...)

Protocol v2 for pushes

There are concrete use cases now: repositories with millions of refs,
including a reported 896 MB ref advertisement. Reftable improves ref
update throughput, but does not by itself solve the advertisement problem.
Nobody objected to push protocol v2, and the fetch-v2 infrastructure
already provides much of the foundation.

The discussion covered advertising fewer refs, letting clients identify
useful branches, and replacing large advertisements with a few rounds of
push negotiation. Negotiation results could also help optimize the
server's connectivity checks. Some improvements might be possible in the
existing protocol before introducing v2.

We need to measure the tradeoffs rather than assume fewer bytes means
faster pushes. One example involved a shallow push taking 35 seconds
instead of two because of work to minimize the transfer. Shallow
boundaries and unrelated histories complicate the proposed heuristics.

SHA-256 interoperability is another reason to want push v2: the current
push protocol requires using the server's primary hash algorithm.
Negotiation could make that more flexible.

Forge replication to thousands of mirrors would benefit from finding out
cheaply whether refs have changed, rather than downloading full
advertisements from every target. Checksums, ETag-like values, and
reftable generation numbers were discussed, with concurrent updates
complicating the picture.

Compact or compressed advertisements are also worth exploring and
benchmarking, possibly reusing reftable's format. That does not mean
sending the server's actual reftable, including hidden refs. There are
several promising directions here, but no final design yet.

Some breakout sessions were planned, but apparently had to be cut.

Personal notes: I wasn't present for all of the sessions, in the afternoon
I had other commitments; Therefore these notes (which AI assisted me in
distilling) came partially from what I dictated and partially from the
shared Google Document in which a few volunteers gracefully wrote notes. I
found it challenging to connect as a remote participant. The link to the
Google Meet, as well as control over the lobby thereof, seems to have been
restricted to at most a few people, which might have contributed to the
long waiting time before I was allowed in, and it definitely contributed
to my comments not reaching the discussion in time to have an impact. I
would have loved for Junio or the other two brave souls who also
participated remotedly to have had more "air time". I am still a fan of
the idea to have more frequent, smaller, virtual Contributor Summits,
organized by a rotating cast. (Maybe I can get Emily to host the next
one.) I was very happy that Junio was participating, as he _is_ the
project lead, and in past Contributor Summits decisions were taken without
him, which I found odd. Timing was really challenging for him, though, it
was way past midnight for him. I'm all the more grateful that he
did participate.

Final remark: This summary is obviously biased. I lightly edited it to
separate better between my personal views and a hopefully unbiased account
of what was discussed, and how, and by who. Nevertheless, I am but human.
As a consequence, I would be delighted if other participants would share
their summaries, so that my bias can be balanced out.

Ciao,
Johannes

  parent reply	other threads:[~2026-09-22 18:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22  0:11 What's cooking in git.git (Sep 2026, #08) Junio C Hamano
2026-09-22  8:11 ` kh/format-patch-range-diff-notes Kristoffer Haugsbakk
2026-09-22 13:25 ` Git v3.0 timeline, was Re: What's cooking in git.git (Sep 2026, #08) Johannes Schindelin
2026-09-22 13:49   ` Junio C Hamano
2026-09-22 17:06     ` Johannes Schindelin
2026-09-24  3:56       ` Junio C Hamano
2026-09-24  4:30         ` Junio C Hamano
2026-09-24 12:29           ` Johannes Schindelin
2026-09-24 17:00             ` Junio C Hamano
2026-09-24 18:08           ` Ramsay Jones
2026-09-22 18:44     ` Johannes Schindelin [this message]
2026-09-23 11:55       ` My summary of the Git Contributors' Summit 2026, was " Daniele Sassoli
2026-09-24 12:31         ` Johannes Schindelin
2026-09-25  9:53         ` Luca Milanesio
2026-09-23 12:52       ` D. Ben Knoble
2026-09-23 14:22       ` Security mailing list & process, was Re: My summary of the Git Contributors' Summit 2026 Toon Claes
2026-09-24 12:38         ` Johannes Schindelin
2026-09-23 14:40       ` Git Contributor' summit: Documentation, was: Re: My summary of the Git Contributors' Summit 2026, was Re: Git v3.0 timeline, was Re: What's cooking in git.git (Sep 2026, #08) Toon Claes
2026-09-23 15:15         ` Git Contributor' summit: Documentation, 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=5cc325c6-579e-4fed-7071-a3ff98d51ccb@gmx.de \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /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