Pull Requests

General

  • We generally follow a branch naming convention of <user>/<feature>-<issue number>, e.g. sloan/make-things-awesome-5555. Issue numbers can be omitted when unavailable, e.g. for things like quick fixes, spikes, experiments, etc.
  • Push early and often, you don’t need to wait until you’re finished to get feedback. Please use GitHub draft PRs when you have a work-in-progress (WIP) PR, or when you have a PR that is contingent on something else to be merged. We prefer draft PRs rather than adding "DO NOT MERGE" to a PR's title. Any PR that is not a draft should be ready to be merged by anyone once it has been reviewed.
  • Please follow our pull request template. Provide context for reviewers, when in doubt err on the side of too much information.
  • Core team members are not required to review draft PRs. To explicitly request feedback, please assign or mention people.

PR Reviews

PR review is the Core Team's opportunity to weigh-in on changes before they go into production.

Keep in mind that our team is distributed across the world. It's a good idea to leave far-reaching PRs open for a day, to give everyone a change to share their thoughts.

  • We require 2 approvals from core team members for each PR:
    • One from the same team because they have context and are working towards the same goal as you.
    • One from outside your team for the following reasons:
      • A different perspective from someone who has less context
      • To leverage our different strengths and garner additional insights spreading knowledge and code exposure throughout the team
      • To avoid overloading individuals
  • Tag people that you’d like to review your PR using GitHub’s ‘Reviewers’ function.
  • Be kind! The goal here is to work together on shipping good code, not to judge people.
  • For serious issues, use Github’s “Request changes” feature. This should be reserved for serious problems, e.g.
    • Doesn’t do what the issue said
    • Foreseeable performance problems
    • Provable security issues
    • Breaks existing functionality
  • Everything else can be posted as a comment, but it’s up to the original PR author whether or not they want to incorporate the changes.
  • Please keep style discussions to an absolute minimum, that time is better spent making a PR for the configuration of our various lint tools.
  • If you make changes to your PR, please re-request feedback from previous reviewers.

Merging Pull Requests

At the time of writing, we tend to prefer squashing PRs into a single commit and merging them. This is easily (and safely) achieved using the GitHub UI.

All required checks such as CI and Code Climate should be green.

Once a PR is merged, it might need to be deployed. Deployment is a team responsibility, and everyone on the core team should be comfortable deploying code. For more information, read the deployment guide.