Re: [PATCH v2 00/18] Introduce rust: In xdiff
- From
Elijah Newren <newren@gmail.com>
- Date
- Sep 17, 2025, 21:34 UTC
- Message-ID
- <CABPp-BHJUkSERQon6xx=sHrhN7i=6ekv+Hz1+P+2mh0=Xw15Mg@mail.gmail.com>
- In-Reply-To
- <xmqqcy7pc8ix.fsf@gitster.g>
On Wed, Sep 17, 2025 at 10:07 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> > "Ezekiel Newren via GitGitGadget" <gitgitgadget@gmail.com> writes: > > > This is a continuation of > > https://lore.kernel.org/git/pull.1980.v3.git.git.1755921356.gitgitgadget@gmail.com/, > > but I am removing the RFC label. > > Continuation meaning that these patches build on top of that earlier > 15-patch series?
No, continuation just meaning "this is v4, even if not labelled as such by gitgitgadget". "Replacement for" would have been clearer.
Show 22 quoted lines
> > Suggestions on changes that I could make to this series is appreciated. > > > > Changes in v2: High level overview: > > > > * patch 1: cleanup: rename variables that collide with Rust primitive type > > names > > * patches 2-4: Makefile now produces libgit.a correctly > > * patches 5,6: Documentation from Brian and Patrick > > * patches 7,8: Introduce Rust > > * patches 9-11: github workflows > > * patches 12-14: introduce crates build-helper, and cbindgen > > * patches 15-18: varint test balloon > > > > I would like feed back in two categories: big changes, and little changes. > > This seems to also mix in some patches from Patrick's series that > are already in flight. What's the intention of the inclusion? Do > you expect us to discard Patrick's series and replace with this, > which would lose some from them and then add more from here? Your > "pull request" may target my "master/main" branch, but it needs to > play well together with other topics in flight that are cooking in > 'next' and also with other topics that are aspiring to be in 'next'.
The lack of context in the cover letter is a good point; I apologize for not having been available to advise and avoid that problem; Ezekiel's been doing the best he can on his own for a while now with only very sporadic comments from me, due to my daughter's recent medical emergency (and then me being multiple weeks behind on everything else because of that).
Show 10 quoted lines
> So I can figure out that these patches are designed to apply cleanly > on top of Git v2.51.0, I am somewhat lost what you want to do with > the resulting branch. Having duplicate commits that happen to do > the same thing in multiple branches "git" the tool can handle just > fine, but that certainly is a bad communication among developers > that we do not want to particularly encourage. > > Before talking about "big" and "little" changes, do we need to talk > about the series organization and working well among multiple > developers?
I think that would be helpful, including some guidance on next steps because even I don't know what to advise at this point. The background so far:
* Ezekiel contributed a series to introduce Rust[1]. Someone contributed a competing series and Ezekiel was asked to target somewhere else[2]. * I made a suggestion for that somewhere else, you agreed that it sounded reasonable[3], and Ezekiel complied and redid the series accordingly. * Patrick wanted the introduction to be different, which is fair. However, instead of providing feedback or suggesting doing things an alternative way, Patrick submitted a competing series that redid the Rust introduction without incorporating any of Ezekiel's work[3], that was far less complete (e.g. no Makefile support, not running on all CI platforms) and saying he'd personally add that stuff later[5], and the series had a few things that both brian and Ezekiel objected to (e.g. cargo delegation, ambiguous types, minimum version which Ezekiel already demonstrated was insufficient). I think the thought here on Patrick's side may have been that Ezekiel's focus was solely on xdiff, rather than having a dual focus on xdiff and Rust, but Patrick left no guidance for Ezekiel on how he could move forward with the other Rust parts Ezekiel did or even whether he was welcome to make contributions in the area. * With no feedback on how to move forward, Ezekiel wanted to try to merge the relevant parts of the two series, including playing nice by incorporating some of Patrick's changes -- and commented on Patrick's series to that effect[6]. Linking that email (or even incorporating it) into the cover letter would have been helpful, but he's new and missed that.
(Personally, I think it would have been much better for Patrick to send in a series with _just_ the BreakingChanges stuff, and then send patches to Ezekiel with the help & varint stuff, similar to what Dscho did with git-for-windows & Rust[7], and ask Ezekiel to make a test balloon for introducing Rust. Allowing new contributors to get some credit for their work instead of replacing/discarding it tends to go over better. And, to be fully blunt, I think introducing a competing or replacement series to something actively being worked ought to be more of a last resort whether or not the other contributor is new; but I'll stop there since otherwise folks might dig up my blow up -- that I'm not too proud of -- from some years ago when someone did this to me.)
[1] https://lore.kernel.org/git/pull.1980.git.git.1752784344.gitgitgadget@gmail.com/ [2] https://lore.kernel.org/git/xmqqldnggt2v.fsf@gitster.g/ [3] https://lore.kernel.org/git/xmqqzfbvfxs6.fsf@gitster.g/ [4] https://lore.kernel.org/git/20250910-b4-pks-rust-breaking-change-v4-0-4a63fc69278d@pks.im/ [5] https://lore.kernel.org/git/aME1ETcGAbhoO49n@pks.im/ [6] https://lore.kernel.org/git/CAH=ZcbB0Qv=b-hdB2EVW-D-dob4NnzyWDYGEThYZm94S0V7OGg@mail.gmail.com/ [7] https://lore.kernel.org/git/ac871bc4-df93-31f4-55f2-d6fc538a422d@gmx.de/
So, how to move forward?
A) Modify Patrick's series to just take patch 7 of his v5. Patrick did say that the roadmap was "the more important discussion compared to the technical discussion", and merging that patch would achieve his goal of getting an initial roadmap. Then Ezekiel could grab other pieces from Patrick's series (e.g. the help and varint stuff) and incorporate it into an "introduce rust" series.[*]
B) Merge Patrick's series and tell Ezekiel to rebase, while noting to Ezekiel that the roadmap is the important bit from Patrick's series[*] and he can suggest changes to any of the other bits.
C) Create a consolidated "introduce Rust" series with bits of both -- what I think Ezekiel was trying to do with this series.
D) Something else?
I think Ezekiel's willing to be flexible here, but was doing the best he could as a new contributor with no guidance. What would you like to see, Junio?
[*] Either of these routes are slightly funny, though because Patrick introduced a one-quarter delay on notification to end users of the upcoming change due to the incompleteness of his series. With Ezekiel's changes to build on all platforms in CI, that delay would serve no purpose (that I see) and only harm users by giving them less notice of an upcoming change; so Ezekiel would likely want to tweak the BreakingChanges document in either of these cases to note that we'll give earlier notification to users.