On our containerized managed platform, VIP Go, the platform team has been experimenting with and refining one of the most valuable parts of our service: code review.
Code review does lots of things for our clients. It gives developers confidence that their code will run at scale, that they’re not adding any unanticipated technical debt, and allows us to share skills to develop knowledge and best practices. For leaders and product owners, it makes launches smoother and more predictable, and creates trust and accountability.
When we began working on the VIP Go project a few years ago we felt it was a good opportunity to revisit our development workflows and code review. We had watched developer teams move from SVN to Git and wanted to ensure our tools did the same. We chose GitHub as the place to be as so many open source projects are based there.
One of our goals for this year has been to bring our code review process even closer to the default workflow most teams use. We’d like it to be so seamless that it feels like we’re just another member of the development team. This week we have introduced a new workflow and process for our industry-leading code review with this in mind.
Pull Request Code Review
As of this week, we will now be providing code review using GitHub’s excellent code review tools. Among other things, GitHub provides inline commenting, excellent syntax highlighting and diffing, and allows the VIP team to work with your team in a shared UI.
A pull request against your master branch is all it takes to trigger a code review from one of the VIP team. We will then leave feedback inline against the code itself.
This workflow has a number of benefits:
You control when your code is deployed to production (including reverts)
Once a pull request has been approved by the VIP team you will be able to merge it to your master branch. The merge triggers a code deploy on your site. This allows you to control when code is deployed and you no longer have to schedule deploys with us.
It also simplifies rollbacks/reverts as the Github UI provides a simple one-click method to revert PRs.
Code review takes place inline; no more back and forth in tickets
Our current code review feedback takes place away from the code itself via Zendesk tickets. This abstracts it from its context, which can slow down reviews and the implementation of fixes. On GitHub, conversations happen alongside your code making it easier to address the feedback given. Pushing changes also dismisses inline feedback.
Integration opportunities with automated code feedback and CI systems
In the near future we plan to introduce automated code feedback integrations with Continuous Integration systems like Travis CI, CircleCI, and TeamCity. This will provide near instantaneous feedback on code quality, errors and linting for our code standards.
So far the feedback has been very positive:
“a big thumbs up for the recent change to incorporate the pull request review functionality”
– Weston Ruter, XWP
If you would like to find out more, our documentation on the new GitHub PR Review Workflow describes the workflow in detail and answers many common questions.
Under the hood
The VIP Go operational API searches across all GitHub repositories looking for open pull requests against master branches. These are aggregated into our code review queue. The review queue is what notifies our developers that a review should be started.
The review queue is a React powered front end that interacts with the API. This front end currently supports both this new workflow and our existing workflow which will be deprecated soon.
Here is how a pull request currently looks for our developers:
The pull requests can be filtered to only show those that require attention and we also highlight SLA information along with the latest discussion to take place.
On the GitHub side things are as you would expect them:
What’s next?
The VIP platform team focuses on the advancement of the tools and systems that power WordPress.com VIP. As mentioned above our main focus now is looking at automated feedback and integration with common CI systems. Beyond that we want to keep the dialog open and continue to refine the process. If you’re a current client, we look forward to your feedback as you use these tools. If you’re thinking about working with VIP, we’d love to hear how a process like this would integrate with your workflows and processes. It will be user feedback that helps determine where we head next.