Changes planned to the Launchpad code review system

Code reviews in Launchpad are based on branches. This is not going to change at this time.

Diff Changes

Right now proposals have two associated diffs.

There is quite a bit of confusion about having two diffs, as the only way the preview diff was ever generated was with an external script.

What we are going to show the user is changing. When the proposal is created, Launchpad will create the diff against the target. This will be shown on the main page where the review diff shows currently. Whenever the tip of the source branch changes, the diff will be regenerated. Users will see an updating diff on the proposal page. We intend to record the diff with the comment to show that a comment may have been made against a different diff.

If a project also wants to update the diffs when the target branch moves, then they will have to run the mad script themselves.

Status Changes

Merge proposals have one status right now. This status tries to show two pieces of information. The current values of the queue_status are:

What we really have here are two distinct states:

We are also looking at adding another review status: Withdrawn

Recording History

Historical status changes are not currently recorded. Currently if someone has the branch in needs review, then approved, then work in progress, then needs review again, we can't track that. We are going to add a historical table that will record who sets the status and to what.

We are also going to add a column to remember if a user reviewed on behalf of a team or not, and which team.

Workflow Changes

When a new branch is created on launchpad, we can look at the target of the branch (project or package) to see if it looks like the branch is a feature branch (most will be). If we think it is, then we create a "work in progress" merge proposal, but don't send any emails at this stage. This allows us to create moving diffs as the users push changes to launchpad.

If we have chosen the wrong branch, then we allow the user to update the target, like changing lp:launchpad for lp:launchpad/devel. This will cause the diff to be regenerated.

When the user wants the review, they just say "now this needs a review". This will change the state from "work in progress" to "needs review". This will cause the review email to be sent, and start the review process. We could even stop traversal to merge proposals that are in "work in progress" to stop comments being added prematurely.

Ideally, I'd like to show this diff on the branch page itself, so the casual observer of branches could see at a glance what the branch introduces.

This would require us to constrain the merge proposal creation so there could be only one that is active at a time.

Resubmitting

With the moving diff, we are hoping to avoid some unnecessary resubmissions.

Resubmitting will still be an option. We want to keep the conversation shown on the new page while at the same time indicating it was for an earlier submission.

Resubmitting will cause the reviewers to be copied to the new proposal with thier state set to Pending.

Commits shown in the conversion

Commits that happen after the proposal was created will show in this conversation history like bug status updates. The date that Launchpad sees these revisions will be where in the conversation they appear, not when the commit actually happend.

The summary should show the date of the revision, a link to the revision in bazaar.launchpad.net and the commit message.

Code/Review/Plans (last edited 2009-09-01 04:44:01 by thumper)