Code Review UX Roadmap
Purpose
There are many initiatives we're currently working on in Code Review that will require UX to lead efforts and then provide supporting assistance. The goal for this issue is to first generate a list of all of these efforts, and then we'll work to prioritize that works since we'll likely need to "say no" to some items.
Vision
The vision by addressing the top priorities is to have the following experience:
- Reviews are a first class workflow in GitLab
- The code review workflow that can be used to understand who and what action is needed to get the change merged.
- The reviewer has a key role. They are not unassigned and empty when changes are merged
- The concept that a reviewer provides an appproval will extend from approval rules, CODEOWNERS, and to security policies: "Hey Grant, can you review this code that addresses the security violation this MR introduced?"
- Clarity of the state of a merge request
- Nobody needs to scroll to some random part of the page to figure out if the MR is mergeable or what's outstanding in a merge request
- You can jump straight into a checks report or a reviewer's review.
We came to the top priorities by looking at the outcome statements of the JTBD for Code Review.
Method: Using JTBD and outcome statements to highlight opportunities
For prioritization in the world of JTBD and outcome statements, it is best to address outcome statements with the highest opportunity scores. Opportunity scores are calculated based on users ratings of the solution's satisfaction and importance to the outcomes of a job step. There are 3 outcomes for speed, reliability, and efficiency for every job step. The Code Reviewer has 66 outcome statements.
Using the existing outcomes has shown that refinement of these scores will be necessary to be done as many outcome statements are blank. We have plans to address them across to FY24Q3. Although many outcome statements were missing, I still believe it provides an accurate picture of the underserved outcomes as it aligns to past prioritization work https://gitlab.com/gitlab-org/create-stage/-/issues/12890#note_645081983 and this issue's description of list of unprioritized roadmap work that have not been fully addressed yet today.
The underserved outcomes were:
- Minimize the time it takes me to understand the context of a merge request (as a reviewer).
- Decrease the time it takes to ensure code I'm reviewing complies with team procedures / standards.
- Increase the efficiency of reviewing and understanding comments from other reviewers.
- Increase the efficiency with which I can examine proposed code changes.
- Increase my ability to assess the larger infrastructure impact of the proposed changes (during a code review).
- Minimize the effort it takes to ensure that proposed code changes have proper test coverage.
- Minimize the effort needed to keep track of a merge request.
Top 3 priorities
- Increase the efficiency of reviewing and understanding comments from other reviewers [Opp score: 10.38]
- Entering threads and reviews &14426
- Display progress of review
- Work here helps supports Duo Code Review (&13008)
- Minimize the effort needed to keep track of a merge request [Opp score: 10.91]
- Monitoring the merge requests from draft to merged state in one view
- Also addresses these outcomes that are "properly served"
- Minimize the time it takes to figure out which review requests I have already reviewed.
- Increase the efficiency with which I can prioritize my review requests.
- Decrease the time it takes me to select an merge request to review.
- Minimize the time it takes me to understand the context of a merge request (as a reviewer) &15891 [Opp score: 13.40]
- Overview tab and focused display of information
- The catalyst for this work will come from two fronts:
- One: Addressing how reviewers and approvers are displayed on the page
- Two: Checks/MR DevSecOps &11194 and how that relates to actions needed to eliminate the blockers so that we can get Loveable merge button (&1381).
Priorities 1 and 2 are being looked at in parallel at the moment. If we follow the spreadsheet (tab: Outcome prioritization) and tackle the highest opportunity score then we would have addressed Merge request overview tab improvements to conv... (&13632) first. However I believe there is a reason not to do this first but rather third after the we improve the reviewing process and merge request homepage. The idea is that the homepage work is exploring status presentation, the review workflow will look at where review/approve actions will go, and both will help inform along with past explorations (&5038 (closed)) of context changes will land.
Addressing other outcomes
With the top 3 priorities, it provides a solid foundation for the following opportunities to get the maximum impact. The following items have not been prioritized yet. Issues and epics added to this list are not definitive as there might be items we have not included:
Increase the efficiency with which I can examine proposed code changes.[Opp score: 11.54]
Maximize the efficiency with which I can submit a comment during my code review. [Opp score: 8.18 (Properly served)]
- 💬 Comment on multiple lines in a merge request ... (&1431 - closed)
- Improved merge request commenting (&10132 - closed)
- 🚀 Code review all things, all places (&1429 - closed)
- UX/quality of life improvements to improve feedback interactions
- ⌨️ Improved merge request keyboard navigation (&12655 - closed)
- Improvements to showing/hiding whitespace changes (&5713)
- Update file tree as user scrolls (gitlab#233089 - closed)
- Scroll position changes when files are loading ... (gitlab#333666 - closed)
- Interactions with commits
- 🖌Commit by commit code review (&285)
- Automatically expand file when viewing a commit... (gitlab#266973 - closed)
- Provide context when viewing commits in a merge... (gitlab#241004 - closed)
- Show more commits in the "commit" tab on merge ... (gitlab#244027 - closed)
- Interactions with diffs
- 🧮 Smarter merge request diffs (&340 - closed)
- Improve Merge Request diffs UI to be usable on ... (gitlab#352749 - closed)
- Improve hidden diffs in merge requests (&4493 - closed)
Minimize the time it takes to set up my environment for a code review. [Opp score: 8.98 (Properly served)]
Example of a need to revisit the JTBD and job steps because flows to improve getting from code to code in action for review would help with reviews.
Increase my ability to assess the larger infrastructure impact of the proposed changes (during a code review). [Opp score: 13.15]
- Decrease the time it takes to ensure code I'm reviewing complies with team procedures / standards.
- Help decrease the time it takes to ensure that changes satisfies issue requirements
- Understand context of change in relation to other changes
- Understand context of change in relation to other code.
Minimize the effort it takes to ensure that proposed code changes have proper test coverage. [Opp score: 12.0]
Could auto generation of tests work here?
Increase clarity in feedback in code review [new]
Other top of mind
-
Enhance merge request reviewer assignment (&12878 - closed) - finishing up this effort to make reviewer assignment more clear. Missing pieces from this likely include more of this information in the sidebar.
- This ties in with viewing a review from a reviewer.
- Rapid Diffs - unclear what UX support we might need still
- To make changes in this area the efforts to modernize the codebase to Vue and performance upgrades with Rapid Diffs will help with the work related to addressing
Maximize the efficiency with which I can submit a comment during my code review
.
- To make changes in this area the efforts to modernize the codebase to Vue and performance upgrades with Rapid Diffs will help with the work related to addressing
- In the FY-25 Product Roadmap - Improve merge request notifications, it includes &1943 and &5147
- Do we want to see what the direction from Improve the User Experience for Notifications (&11609)?
Initial roadmap starter items
-
Review Rounds (&9577) - this is pretty broad, so lets break it down
- Action focused merge request homepage (&13448) - new merge request homepage to better communicate which MRs users need to action. The scope of this will likely bleed over to notifications/sidebar/etc... but this should be a large focus area.
- Enhance merge request reviewer assignment (&12878 - closed) - finishing up this effort to make reviewer assignment more clear. Missing pieces from this likely include more of this information in the sidebar.
- Improving the relationship between reviewers/approvers so that it doesn't feel like two distinct roles. Some of this is work that may be related to our sidebar, there's also work from the DevSecOps work to enhance reviewer assignment that we'll need to look at.
- GA of AI Features
- Duo Code Review (&13008) - This will be one of the most critical new AI capabilities we need to look at and refine. It could also be that we fold the existing AI features more in to this overall experience to build something much more complete.
-
DevSecOps MR Work - this is also pretty broad
- [MVC] Improved DevSecOps experience in merge re... (&13808) - Code Review will likely largely be responsible for this, so getting familiar with the design will be important
- Review request and approval flows for security ... (&13809) - the overlap previously mentioned
- Merge request overview tab improvements to conv... (&13632) - revisions to the overview page of a merge request. Potentially the most important piece here is the "one widget" effort