Skip to content

Resolve "Weight trainee maintainers higher in reviewer roulette"

Trainee maintainers count as reviewers, but should get more reviews than most reviewers, as they need practice to become a maintainer. This makes them three times as likely to be picked (compared to another reviewer; compared to before, it's roughly twice as likely at the current numbers for each).

Also, switch to Array#sample because I think it looks nicer.

I tested this with this Ruby script:

class Foo
  include Gitlab::Danger::Helper
end

def spin(team, project, category)
  reviewers = team.select { |member| member.reviewer?(project, category) }
  traintainers = team.select { |member| member.traintainer?(project, category) }
  maintainers = team.select { |member| member.maintainer?(project, category) }

  # TODO: filter out people who are currently not in the office
  # TODO: take CODEOWNERS into account?

  # Make traintainers have triple the chance to be picked as a reviewer
  reviewer = (reviewers + traintainers + traintainers).sample
  maintainer = maintainers.sample
  [reviewer.username, maintainer.username]
end

team = Foo.new.project_team
results = Hash.new(0)

10_000.times do
  reviewer, maintainer = spin(team, 'gitlab-ce', 'backend')

  results[reviewer] += 1
  results[maintainer] += 1
end

results.sort_by(&:last).reverse.each do |username, picked|
  puts "#{username}: #{picked}"
end; nil

And I got these results, which look OK to me. A nice unintentional side-effect is that currently (subject to change!) trainee maintainers are about as likely to be picked as a maintainer is - albeit for a different role.

grzesiek: 815
mkozono: 802
dbalexandre: 793
smcgivern: 791
jameslopez: 787
jprovaznik: 783
rymai: 776
dzaporozhets: 775
ayufan: 765
rspeicher: 763
nick.thomas: 757
tkuah: 747
mayra-cabrera: 746
DouweM: 744
jarka: 744
ashmckenzie: 733
godfat: 727
splattael: 715
reprazent: 706
stanhu: 705
vsizov: 287
dosuken123: 265
felipe_artur: 265
toon: 252
ifarkas: 250
mdelaossa: 249
engwan: 246
rpereira2: 245
jamedjo: 243
markglenfletcher: 243
brodock: 242
rdavila: 239
oswaldo: 237
theoretick: 232
brytannia: 231
rossfuhrman: 229
fjsanpedro: 228
matteeyah: 220
vzagorodny: 213
zj: 210

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/60035.

Edited by Sean McGivern

Merge request reports