databricks/spark-pr-dashboard — pull request #39 by JoshRosen (2014-12-11 06:42:31+00:00)
Title: [WIP] Support 'review status' lifecycle / tagging of PRs based on who is blocking on review / updates

The purpose of this PR is to start a discussion around whether we should implement features for tracking some sort of 'review status' lifecycle for PRs. My proposal is to extend the UI with features for conveying whether the review process is blocked on further review from reviewers or on an update from the PR's author. This could be very helpful for rapidly identifying which PRs need more review, since sometimes the most-recent part of the queue will be cluttered up with PRs where I've left a bunch of comments for an author and they take several days to address them.

I was thinking of adding a 'Review Status' column that's viewable by everyone but only editable by users with the proper permissions:

![image](https://cloud.githubusercontent.com/assets/50748/5390252/f465e0d8-80bc-11e4-88c0-45e51f80666d.png)

By default, all PRs start out in the 'Review needed' state. Once a reviewer feels that the PR is now blocked on the author's update, they may change the status to 'Update needed':

![image](https://cloud.githubusercontent.com/assets/50748/5390256/205ab268-80bd-11e4-9472-4fb6335cadca.png)

When a PR is in the 'Updated needed' state, its row will be slightly transparent (but restored to full opacity on hover):

![image](https://cloud.githubusercontent.com/assets/50748/5390266/4b85c194-80bd-11e4-8b94-793f708135d2.png)

On the backend, we can add some logic for automatically transitioning from 'Update needed' to 'Review needed': if a new commit is added to the PR, its title or description is updated, or the author leaves a comment, then we will automatically mark it as 'Review needed.'

The backend support for this would be helpful in identifying hanging / abandoned PRs.

The screenshots here are just a rough UI mockup that I threw together in a couple of minutes. I'd love feedback on the overall concept / workflow. Is this a useful feature? Should the subdued colors be used on the main page, or only on per-reviewer dashboards?

I also have a couple of React.js-related questions about how to handle data-binding / refresh logic, but I'll discuss those offline.