This is a proposal on how to migrate highfive to triagebot.
Triagebot will be updated with the following:
Add support to detect r? foo
to perform the same behavior as @rustbot assign foo
.
This is essentially https://github.com/rust-lang/triagebot/pull/433 and https://github.com/rust-lang/triagebot/pull/946.
This will only be enabled if the [highfive]
table is in triagebot.toml
. This requirement makes it possible to transition away from highfive without having the two bots fighting each other (see transition below).
This will use the groups and owners configuration from triagebot.toml
(see below).
Triagebot's behavior may be altered slightly to be more similar to highfive (though probably not much). Some behaviors may be different. For example:
@rustbot assign
is currently unrestricted). If we have problems with abuse, that can be handled individually, or we can add restrictions later if needed.Triagebot will trigger on new PRs to auto-assign using the same behavior has highfive.
Add configuration to triagebot.toml
to configure auto-assignment on new PRs:
To migrate a repo, the process is roughly:
triagebot.toml
configuration.triagebot.toml
file is merged, merge the highfive change (or just remove the highfive webhook from the repo) to avoid conflicting behavior.These are some alternatives that were considered, but not chosen.
Use CODEOWNERS. This is a built-in GitHub system with rather sophisticated capabilities. It uses gitignore-style syntax to choose who to "request review" from based on which files were modified.
When a team is requested, GitHub can be configured to select a subset of the team. You can select the number of people to request. You can also choose to never select certain members. It has different algorithms: Round-robin or Load-balance. Both are rather sophisticated.
I don't think we should use CODEOWNERS for the following reasons:
Configure review groups via the teams repo.
This is certainly a viable option. I could see a few different ways of approaching this, such as creating "real" teams, or just having a configuration in each team config that lists who is in rotation.
This seems a bit overkill, and would require spreading the configuration between triagebot.toml
and the teams repo. I think that would make it harder to configure.
The downside is that this adds ad-hoc groups which can be confusing.
It was suggested to not allow defining individuals at all (and only allow teams), but I think that is over-restrictive.