Thanks for the feedback! A few common answers first:

I think "Approved-by" should be the only required trailer. Since approving
a PR implies a review, I think we can keep the mandatory trailers just to a
single one.

"Co-authored-by" is added automatically by GitHub if a PR has commits from
another author. I don't think we can modify this.

"Signed-off-by" is added automatically by GitHub if a PR has commits which
were cryptographically signed (e.g. "git commit -S"). Again, we can't
control this.

For the two trailers automatically added by GitHub, if we include them
explicitly in the PR body they will not be added a second time by GH. For
an example, see https://github.com/apache/kafka-merge-queue-sandbox/pull/68 and
the resulting commit
https://github.com/apache/kafka-merge-queue-sandbox/commit/a100107be3cb7bd2256acc9552f3697a597b86e9.
The reason we want to add them explicitly is that if we don't, GitHub will
add them automatically below a blank line which will break other trailers.


---

Ismael,

1) Yes, I would love to see this
2) GitHub arguably uses Signed-off-by incorrectly, but it's out of our
control.


José,

I would like to reserve "Approved-by" for the binding committer approval of
the PR. As Ismael suggested offline, we could use the following:

Commented-by: left any comment on the PR (any contributor)
Reviewed-by: did a full review on the PR (any contributor)
Approved-by: committer(s) who approved the PR

Chia,

I personally don't find the Jira ticket in the commit subject to be very
useful, but this is probably a contentious opinion :) Moving it to a
trailer lets us reference multiple tickets or other resources so we can
still search by ticket number. We can leave the KAFKA-12345 in the commit
subject.


Kirk,

I'd like to automate this as much as possible. I think we can eventually
have all of the important trailers automatically populated.



-David


On Wed, Mar 26, 2025 at 3:00 PM Kirk True <k...@kirktrue.pro> wrote:

> Hi David,
>
> In general, I'm in favor of adding information where reasonably possible.
>
> How are these header values populated by the merging committer? Magic or
> manual?
>
> I agree with others that adding so many additional "*-by" headers could be
> confusing, leading to inconsistent usage. Is the equivalent of the
> "Signed-off-by" header already captured by git/GitHub on merge?
>
> Thanks,
> Kirk
>
> On Tue, Mar 25, 2025, at 5:06 PM, David Arthur wrote:
> > Hello Kafka community!
> >
> > I wanted to start a discussion around our Git commits and the metadata we
> > keep in them.
> >
> > We have historically used the "Reviewers" Git trailer [1] to indicate who
> > had reviewed a commit. Originally, it seems we used this field to
> indicate
> > the committer who approved the change (per our By-Laws). But over time,
> its
> > usage has expanded to include anyone (committer or not) who left a
> comment
> > on the PR.
> >
> > I think acknowledging reviews is very important for our community, and I
> > want to continue doing this.
> >
> > I also think it is important to record the committer who approved a given
> > PR.
> >
> > Besides improving the quality of our Git log, I'm raising this issue
> > because of a limitation/quirk I've discovered in GitHub. While
> researching
> > https://github.com/apache/kafka/pull/19242 I found that GitHub will
> > automatically re-wrap the text of the PR body to fit 72 characters. This
> > will blindly break long "Reviewers" lines (which we regularly exceed).
> This
> > will make it difficult to easily find reviewers of PRs using the Git log.
> >
> > I would like to propose that we start using the following Git trailers in
> > our PRs:
> >
> > * Reviewed-by: anyone who left feedback on the PR
> > - * Approved-by: committers who approved the PR
> > - * Helped-by: shout-outs for inspiration or significant help
> > - * Signed-off-by: commit signatory
> > - * Fixes: KAFKA-12345 <
> https://issues.apache.org/jira/browse/KAFKA-12345>
> > - * References: KIP-123, KAFKA-23456, apache/flink#1234, etc
> >
> > Each "-by" trailer should include only a single individual using the
> > standard "First Last <email>" format. Multiple instances of the same
> > trailer are allowed. Before merging, we would use a GitHub Action to
> verify
> > that at least one "Approved-by" is present.
> >
> > This accomplishes a few things:
> >
> > * Works around the GitHub 72 character limit
> > * Keeps a cleaner record of reviewers vs approvers
> > * Allows us to move metadata out of the commit subject, if desired (e.g.,
> > KAFKA-12345)
> >
> > Structuring the metadata in this way allows us to use standard git
> commands
> > to parse the commits. This helps us move towards a fully automated
> process
> > where we populate these fields from the GitHub Pull Request data.
> >
> > Let me know what you think!
> >
> > David Arthur
> >
> > [1] https://git-scm.com/docs/git-interpret-trailers
> >
>


-- 
David Arthur

Reply via email to