Skip to content
This repository has been archived by the owner on Oct 8, 2021. It is now read-only.

Specifications

jerboaa edited this page Oct 16, 2010 · 4 revisions

Specifications

In order to maintain a code of good quality, and to increase the bus number [*]_ Markus developers uses review board as a review tool. In order to systematize the assignment of review request to developpers, the idea of ReviewBot has emerged. ReviewBot would be a tool that automatically assigns Review Request to developers, and help us spot the bottleneck that occurs on ReviewBoard.

The developers will be divided in two groups: the Ancients and the Newcomers. Each review request will have to be reviewed by at least one member of the Ancients and one member of the Newcomers.

  • ReviewBot has a list of members, composed of two groups
    • The Ancients: developers with more than one semester of experience on Markus
    • The Newcomers: developers with less than a semester of experience on Markus
  • Every member starts with a score of 0.
  • Every day, ReviewBot will look at the unassigned Review Request.
  • For each unassigned Request, ReviwBot will assign a member of the Ancients, and one member of the Newcomers to review this ReviewRequest.
  • When a member is assigned to a ReviewRequest, his score increments of a number determined by the complexity of the request (number of lines modified)
  • To assign a ReviewRequest, ReviewBot will randomly choose a member among the two groups, using the scores as a weight.
    • if member A has a score of 2, and member B has a score of 4, ReviewBot will randomly choose one person out of (A A A A B B)
  • When ReviewBot assigns the members to a Review Request, it should send the two members a mail.
  • Once per week, ReviewBot should summarize the traffic on ReviewBoard
    • Which reviews are still opened ?
    • Who is assigned to them ?
    • What review has been closed ?
  • It would be awesome to have it talk in #markus, on IRC

On that note there is something called python-irclib. You should be able to do something like the following with it (I've tried it it doesn't work, though :-(:

      irc = irclib.IRC()
      server = irc.server()
      server.connect("irc.freenode.net", 6667, "MarkUsReviewBoardBot")
      server.privmsg("#markus", "Hi there!")
      irc.process_forever()
Clone this wiki locally