blob: 469fcddc2ca618c8ee7b849f3f4d30b73929ce18 [file] [log] [blame]
= Gerrit Code Review - Attention Set
[[whose-turn]]
== Whose turn is it?
Code Review is a turn-based workflow going back and forth between the change
owner and reviewers. For every change Gerrit maintains an "Attention Set" with
users that are currently expected to act on the change. Both on the dashboard
and on the change page, this is expressed by an arrow icon before a (bolded)
user name:
image::images/user-attention-set-icon.png["account chip with attention icon", align="center"]
While the attention set brings clarity to the process it also comes with
responsibilities and expectations. To provide the best outcome for all users, we
suggest following these principles:
* Reviewers are expected to respond in a timely manner when it is their turn. If
you don't plan to respond within ~24h, then you should either remove yourself
from the attention set or you should at least send a clarification message to
the change owner.
* Change owners are expected to manage the attention set of their changes
carefully. They should make sure that reviewers are only in the attention set
when the owner waits for a response from them.
On the plus side you can strictly ignore everyone else's changes, if you are not
in the attention set. :-)
=== Rules
To help with the back and forth, Gerrit applies some basic automated rules for
changing the attention set:
* If reviewers are added to a change, then they are added to the attention set.
** Exception: A reviewer adding themselves along with a comment or vote.
* If an active change is submitted, abandoned or reset to "work in progress",
then all users are removed from the attention set.
* Replying (commenting, voting or just writing a change message) removes the
replying user from the attention set. And it adds all participants of comment
conversations that the user is replying to. Specifically
** If owner is replying and thread is resolved: all participants who have not
given Code-Review yet, are added to the attention set.
** If owner is replying and thread is unresolved: all participants are added
to the attention set.
** If non-owner is replying and thread is unresolved: only owner is added to
the attention set.
** If non-owner is replying and thread is resolved: all participants who have
not given Code-Review yet, are added to the attention set.
* If a *reviewer* replies, then the change owner (and uploader) are added to the
attention set.
* For merged and abandoned changes the owner is added only when a human creates
an unresolved comment.
* If another user removed a user's vote, the user with the deleted vote will be
added to the attention set.
* If a vote becomes outdated by uploading a new patch set (vote is not sticky),
the user whose vote has been removed is added to the attention set, as they
need to re-review the change and vote newly.
* Only owner, uploader, reviewers and ccs can be in the attention set.
* The rules for service accounts are different, see link:#bots[Bots].
* Users are not added by automatic rules when the change is work in progress.
*!IMPORTANT!* These rules are not meant to be super smart and to always do the
right thing, e.g. if the change owner sends a reply, then they are often
expected to individually select whose turn it is.
Note that just uploading a new patchset is not a relevant event for the
attention set to change.
=== Interaction
There are three ways to interact with the attention set: The attention icon,
the hovercard of owner and reviewer chips and the "Reply" dialog.
*The attention icon* can be used to quickly remove yourself (or someone else)
from the attention set. Just click the icon, and it will disappear:
image::images/user-attention-set-icon-click.png["attention set icon with tooltip", align="center"]
*The hovercard* (on both the Dashboard and Change page) contains information
about whether, why and when a user was added to the attention set. It also
contains an action for adding/removing the user to/from the attention set.
image::images/user-attention-set-hovercard.png["user hovercard with info and action", align="center"]
*The reply dialog* contains a section for controlling to whom the turn should be
passed.
image::images/user-attention-set-reply-modify.png["reply dialog section for modifying", align="center"]
If you click "MODIFY", then the section will
expand and you can select and de-select users by clicking on their chips.
Whatever you select here will be the new state of the attention set for this
change. As a change owner make sure to remove reviewers that you don't expect to
take action.
image::images/user-attention-set-reply-select.png["reply dialog section for selecting users", align="center"]
=== Bots [[bots]]
The attention set is meant for human reviews only. Triggering bots and reacting
to their results is a different workflow and not in scope of the attenion set.
Thus members of the "Service Users" group will never be added to the
attention set. And replies by such users will only add the change owner (and
uploader) to the attention set, if it comes along with a negative vote.
=== Dashboard
The default *dashboard* contains a new section at the top called "Your turn". It
lists all changes where the logged-in user is in the attention set. When you are
a reviewer, the change is highlighted and is shown at the top of the section.
The "Waiting" column indicates how long the owner has already been waiting for
you to act.
image::images/user-attention-set-dashboard.png["dashboard with Your turn section", align="center"]
As an active developer, one of your daily goals will be to iterate over this
list and clear it.
image::images/user-attention-set-dashboard-empty.png["dashboard with empty Your turn section", align="center"]
Note that you can also navigate to other users' dashboards to check their
"Your turn" section.
=== Emails
Every email begins with `Attention is currently required from: ...`, so you can
identify at a glance whether you are expected to act.
You can even change your email notification preferences in the user settings to
only receive emails when you are in the attention set of a change:
image::images/user-attention-set-user-prefs.png["user preference for email notifications", align="center"]
If you prefer setting up customized filters in your mail client, then you can
make use of the `Gerrit-Attention:` footer lines that are added for every user
in the attention set, e.g.
----
Gerrit-Attention: Marian Harbach <mharbach@google.com>
----
=== Browser notifications
You'll automatically get notifications when you are in the attention set. You
must enable desktop notifications on your browser to see them.
image::images/browser-notification-example.png["browser notification example", align="center"]
You can turn off automatic notifications in user preferences. They are enabled
by default.
image::images/browser-notification-preference.png["user preference for browser notifications", align="center"]
The notifications work only when Gerrit is open in one of the browser tabs.
The latency to get the notification is up to 5 minutes.
If you are not getting notifications:
- Check your user preferences - Allow browser notification setting
- Make sure notifications are turned on for the Gerrit site in the browser
- Make sure browser notifications are turned on in your operating system
- Your host can have browser notifications disabled for some user groups
=== Bold Changes / Mark Reviewed
Before the attention set feature, changes were bolded in the dashboard when
*something* happened and you could explicitly "mark a change reviewed" on the
change page. This former way of keeping track of what you should look at has
been replaced by the attention set.
=== For Gerrit Admins
The Attention Set has been available since the 3.3 release (late 2020).
=== Important note for all host owners, project owners, and bot owners
If you are a host/project owner, please make sure all bots that run against your
host/project are part of the link:access-control.html#service_users[Service Users] group.
If you are a bot owner, please make sure your bot is part of the "Service Users"
group on all hosts it runs on.
To add users to the "Service Users" group, first ensure that the group exists on
your host. If it doesn't, create it. The name must exactly be "Service Users".
To create a group, use the Gerrit UI; BROWSE -> Groups -> CREATE NEW.
Then, add the bots as members in this group. Alternatively, add an existing
group that has multiple bots as a subgroup of "Service Users".
To add members or subgroups, use the Gerrit UI; BROWSE -> Groups ->
search for "Service Users" -> Members.
GERRIT
------
Part of link:index.html[Gerrit Code Review]
SEARCHBOX
---------
=== Auto readd owner [[auto-readd-owner]]
This job automatically readds the change owner to the attention-set for open non-WIP/private
changes that have been inactive for a defined time. Gerrit administrators may configure
link:config-gerrit.html#auto-readd[this]
Readding the owner to the attention-set of an inactive change has the advantages:
* It signals the change owner that the review is not progressing and that the owner
may need to adjust the attention-set or indicate a need for a priority review.
* It may prevent changes where no one is in the attention-set from getting forgotten.
* It makes people set changes in WIP or private for changes that should not
be actively reviewed.