Code Reviews with Phabricator

Jakub Vrána, WebExpo 2013

1 year full-time contributor and user

Phabricator

Started as Diffcamp at Facebook

Open source

Users: Dropbox, Asana, Quora, Uber, …

Supports Git, Mercurial, SVN, plain diffs

For developers from developers

Performs at scale

Other tools: GitHub, Critique, …

Phabricator Applications

Differential: code reviews

Diffusion: browse repository

Maniphest: tasks and bugs

Herald: notifications

Owners, Calendar, Wiki, Blog, lots more

Conduit: API

Arcanist: command line interface

Differential: Code, Context

Mention two-side diff, syntax highlighting, hidden lines, code context.

Differential: Inline comments

Mention multiline inlines, Remarkup, object IDs.

Differential: Cross-references

Mention selecting text, double click.

Differential: Copies, Moves

Mention selecting text, double click.

Diffusion: Stable Links

Mention link rotting.

Diffusion: Blame Previous

Mention refactorings, stable line.

Maniphest: “Not Bad”

Mention related tasks, diffs, commits.

Herald: Packages

Mention packages and owners.

Calendar: Reviewer Away

Mention that information is available anywhere the user is mentioned.

Conduit: Method Call

Arcanist

arc feature: Start working on something

arc diff: Send code for review

arc land: Publish reviewed code

arc cover: Who should review my change

arc patch: Apply someone’s revision

Several other commands

Works on Linux, Mac, Windows

Mention that Arcanist uses Conduit.

Arcanist: Lint

Mention pre-commit hooks, style rules, wide variety of linters, simplicity to add own linter.

Arcanist: Unit Tests

Test plan

Mention running tests before diff (before land at Google), test speed, supported unit testers, code coverage.

Mention that test plan is sometimes better than unit test.

Customization

Configuration

Extending code

Differential fields

Remarkup rules

Events

Custom Arcanist commands

Conduit

Weaknesses

Commit discovery is delayed

Some features require manual setup

E.g. cross references

Hosted repositories should solve both

Culture

Response within a day

Don’t ask for unrelated changes

Express strength of your feelings

Who reviews the code

Who lands the code

How is the code tested

When is the code linted and tested

Pre-commit or post-commit review

Thanks