This document is written to proposal an idea about how to integrate Reviewboard with bug trackers product. Though this document, I will proposal a way to extend Reviewboard to support different kinds of bug trackers, such as GoogleCode, Bugzilla, and so on.
Currently, Reviewboard and bug tracker are independent of each other. Reviewboard provides a platform for code review and bug trackers facilitate the way of keeping track of software issues. Although Reviewboard and bug tracker were often used together for the same software product, we have no way to associate a code review request with one or more specific bug issues.
Implement one extension for each bug tracker product. The extension framework should provide following functionalities:
• Reviewboard server admin can choose which bug tracker product they used from a list of supported bug trackers.
• Reviewboard server admin can enable or disable the bug tracker extension.
• For each code review request, the code authors or the reviewers can associate the code review to the specific issue posted at specific bug tracker.
• If a code review post and an issue post have been associated, any status update on code review(e.g. review is open, review has been commented, review has been closed, and so on) will automatically trigger a new comment on the issue post.
• The Reviewboard admin can configure which kind of status update should notify the bug tracker.
• The code authors or the code reviewers can disassociate the code review against the issue. If a code review and an issue have been disassociated, it means any update on that code review will no longer notify the issues tracker.
With the Reviewboard API and existing extension framework, the implementation is straight forward. The general idea is to listen to a specific set of events from Reviewboard and do corresponsive actions for different events. The event handler is mainly for posting comments on bug tracker by utilizing the specific bug tracker API. However, before we can post comments on issue, we should handle the authentication properly.
As I mentioned above, the Reviewboard admin should configure which bug tracker they want to use. After the decision is made, he or she should provide an user account and password for that specific bug tracker system. The user name and password(It should be encrypted) will be store on the Reviewboard server. That account will be the only account to authenticate against the bug tracker system. By doing this, we can make sure that we don’t need to authenticate the specific code review users to bug tracker system, which is an overhead for users. In addition, the admin password will be only given to bug tracker so that no Reviewboard’s users will abuse the account.
– Issue association
Under each code review, Reviewboard will provide an option for users to associate current review with one or more issues. Specifically, Reviewboard will query all open issues from bug tracker and put them in a drop down list, in which users can easily choose.
After this proposal has been approved, I will try to implement the extension for GoogleCode and Bugzilla first. (Because GoogleCode is the one we use and Bugzilla is the one our customers required) I would suggest to add support for other bug trackers in per request basis.