Skip to content

Show reviewer avatars and highlight member ACKs in summary comment#72

Closed
l0rinc wants to merge 3 commits intomaflcko:mainfrom
l0rinc:l0rinc/ack-avatar-member
Closed

Show reviewer avatars and highlight member ACKs in summary comment#72
l0rinc wants to merge 3 commits intomaflcko:mainfrom
l0rinc:l0rinc/ack-avatar-member

Conversation

@l0rinc
Copy link
Contributor

@l0rinc l0rinc commented Jan 7, 2026

Context

ACK signals are easy to game via sockpuppets / low-effort accounts: names alone don’t provide much friction against impersonation or ACK stuffing.

Fix

Adding avatars increases the difficulty slightly of blending in (visual identity, easier spotting of suspicious patterns), and highlighting members helps reviewers quickly weight ACKs from people with established repo standing, see: https://gist.github.com/l0rinc/6e92f6ac500a7ab9cc91d0b19a009392

image

Note

Tried different avatar sizes, ended up with this size.

Keep review table entries as `Review` while grouping/sorting by AckType, and centralize reviewer markdown formatting in `format_reviewer_link()`.

Add a unit test that locks in the current output to make follow-up presentation changes (avatars/member highlighting) safer.
@DrahtBot
Copy link
Collaborator

DrahtBot commented Jan 7, 2026

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.
A summary of reviews will appear here.

@maflcko
Copy link
Owner

maflcko commented Jan 7, 2026

Seems fine, if other maintainers want this, but I think there are a few concerns:

  • Is this an issue? I know there are some bot or bot-like reviews, but they should be rare compared to the majority of reviews.
  • Usually, the "ack-language" will keep out the obvious bots from reviews.
  • Reviewers will have to start at some point and learn how to review well. Discriminating against their review by default may feel discouraging and excluding to them.
  • I suspect that maintainers will have a good idea which reviews are worthless, or from bots. So I wonder if there is much value gained.

@l0rinc
Copy link
Contributor Author

l0rinc commented Jan 7, 2026

All reviews will still be used, it's just a lot more obvious who did the (n)acking (pic + bold for members).
Happy to adjust based on the feedback, this was the only thing I could think of to help with the recent flood of fake reviews.

@maflcko
Copy link
Owner

maflcko commented Jan 7, 2026

Maybe ask in the dev meeting for input? I am -0, but I don't want to pull the trigger here one way or the other myself.

@katesalazar
Copy link

Concept ~

How about showing a picture?

Thread each reviewer avatar URL through parsed comments/reviews and render a small inline avatar next to their name in the summary table.

The avatar request size (`s=14`) is based on GitHub `TimelineItem` inline avatars - but it was not explicitly tested.
@l0rinc l0rinc force-pushed the l0rinc/ack-avatar-member branch from 338ecb5 to d1ab647 Compare January 7, 2026 21:59
@l0rinc
Copy link
Contributor Author

l0rinc commented Jan 7, 2026

Updated the avatar sizes to be smaller and removed the link from the avatar, keeping it only on the name (looks better), see: https://gist.github.com/l0rinc/6e92f6ac500a7ab9cc91d0b19a009392

@stickies-v
Copy link

stickies-v commented Jan 8, 2026

I think I'm concept ack, approach ~0. I don't care much for the low-effort ACKs at the moment, that doesn't seem big enough of a problem yet, and we can fix when it's relevant / when maintainers find it an issue. I think impersonation is a much more dangerous potential problem, and although I haven't seen instances of it yet, it's better to protect before it happens.

Using user profile images seems to add little benefit because of how easily spoofable it is, plus it might be confusing since users can change their profile pictures at will. Perhaps using something like https://lifehash.info/ would be a bit more robust? Then again, if we want to keep the image size small, it's not going to be terribly hard to bruteforce a similar-enough picture. Although I don't like the differentiation between members and non-members for the same reason as outlined here, it does provide a pretty straightforward and non-invasive way of doing that.

Another less intrusive alternative would be to add a warning emoji after non-members' usernames if their similarity (not sure if this can be calculated robustly) with a member username exceeds a certain threshold. This might require adding state to DrahtBot to e.g. exclude known collisions, though.

@ryanofsky
Copy link

+1 on the change adding the icons. I think the icons in the screenshot look nice and would make the GitHub page easier to navigate, making the draftbot comment stand out from the wall of plain text and making individual review links easier to find. I also think the color and goofiness of the display send a better message: this is not an official tally of votes, it's a social display of which people participated in discussion of an issue.

I don't think highlighting member acks is a good idea though, and would oppose that change. Maintainers do weigh reviews differently based on reviewer's history and perceived familiarity with area of the code being modified, but GitHub affiliation isn't really a factor in this and IMO highlighting it would be a distraction and could be source of confusion.

One change I'd really like independently of the other ideas is a link to past acks. Like I'd love if drahtbot displayed "ryanofsky [0] [1] [2]" where "ryanofsky" links to the final ack like currently but [0] [1] [2] link to earlier acks. Normally when I review a PR, I write my full feedback in the first ack and and then incrementally reack after that. But in current GitHub UI it can be difficult to find previous acks and having direct links would make it much easier.

@maflcko
Copy link
Owner

maflcko commented Jan 8, 2026

+1 on the change adding the icons. I think the icons in the screenshot look nice and would make the GitHub page easier to navigate, making the draftbot comment stand out from the wall of plain text and making individual review links easier to find. I also think the color and goofiness of the display send a better message: this is not an official tally of votes, it's a social display of which people participated in discussion of an issue.

Heh, that is an interesting view. Personally, I'd say it will be harder to follow review links for outsiders, because putting the user image next to the user name may indicate that the link it points to is the user profile (at least for most of the remainder of github, this is the case).

An alternative to make the table more goofy, could be to ask an LLM to add emojis to the left column 😅 .

@ryanofsky
Copy link

Yeah I should clarify I think the table has two purposes:

(1) - Making the GitHub page navigable by providing direct links to code reviews.
(2) - Being a social display and showing which people were involved in review discussion.

I think (1) is more important than (2) by far. But the icons could help with both, helping find individual links more easily and helping see at a glance who participated in a review. I also think the colorful appearance of the icons could help dispel the misconception that that the table is a highly official list of votes, but this would be like a third or fourth order effect

Present reviewer names in italics when GitHub reports `AuthorAssociation::Member`, so member ACKs stand out in the summary table.
@l0rinc l0rinc force-pushed the l0rinc/ack-avatar-member branch from d1ab647 to 8d19a96 Compare January 8, 2026 15:17
@katesalazar
Copy link

Concept ~

This would be a valuable idea if you were using your own issue tracker and you could show a big pic on name hovering, in a temporary tool-tip. Because you are using GitHub, you need to show a permanent pic, and showing a small pic next to the name is better than nothing, but it's almost same as nothing. It is a great idea for a different context.

@maflcko
Copy link
Owner

maflcko commented Jan 8, 2026

I think I'm concept ack, approach ~0. I don't care much for the low-effort ACKs at the moment, that doesn't seem big enough of a problem yet, and we can fix when it's relevant / when maintainers find it an issue. I think impersonation is a much more dangerous potential problem, and although I haven't seen instances of it yet, it's better to protect before it happens.

I think impersonation will likely be caught quickly, if it ever happens, or at least this change won't help detect it quicker, because:

  • If someone is impersonating someone long inactive, they wouldn't be in the review-members-group (expectedly)
  • If someone is impersonating someone active, the person that is being impersonated (or someone else) will likely discover it soon. Especially, given that GitHub already displays above every comment, whether someone is a member or not.

Maybe I can use this opportunity to ask reviewers to sign their comments. It is no harder than fetching the code (which any serious reviewer will have to do either way), and a dedicated (sub)signing key can be set up with a one-time cost. Finally, a bash alias or function can make it usable: sgn "Message. Ack 11aaff" (will reply with the signed message, ready to copy-paste)

users
.iter()
.map(|(user, url, _)| format!("[{user}]({url})"))
.map(format_reviewer_link)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Seems a bit odd to extract this for a unit test on a single format call

body: c.body.unwrap_or_default(),
date: c.updated_at.unwrap_or(c.created_at),
.map(|c| {
let user = c.user;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Why extract this?

body: c.body.unwrap_or_default(),
date: c.submitted_at.unwrap(),
.map(|c| {
let user = c.user.unwrap();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't unwrap it multiple times (the previous was just extracted for symmetry)

@l0rinc
Copy link
Contributor Author

l0rinc commented Jan 8, 2026

Updated the code to show members in italics instead of bold - if this is still too much, I'll drop it completely.

a link to past acks. Like I'd love if drahtbot displayed "ryanofsky [0] [1] [2]" where "ryanofsky" links to the final ack like currently but [0] [1] [2] link to earlier acks

Working on it, I like the idea. Maybe even a mousover summary of the review (either static or LLM generated)

@l0rinc
Copy link
Contributor Author

l0rinc commented Jan 8, 2026

Thanks for the feedback in https://bitcoin-irc.chaincode.com/bitcoin-core-dev/2026-01-08.
Closing it for now, but will investigate @ryanofsky's idea of showing the ACK history.

@l0rinc
Copy link
Contributor Author

l0rinc commented Jan 10, 2026

One change I'd really like independently of the other ideas is a link to past acks. Like I'd love if drahtbot displayed "ryanofsky [0] [1] [2]" where "ryanofsky" links to the final ack like currently but [0] [1] [2] link to earlier acks. Normally when I review a PR, I write my full feedback in the first ack and and then incrementally reack after that. But in current GitHub UI it can be difficult to find previous acks and having direct links would make it much easier.

Added something similar to #74, thanks for the hint

@l0rinc l0rinc deleted the l0rinc/ack-avatar-member branch January 10, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

Comments