• written in PHP • users: Dropbox, Asana, Quora, Uber, … • supports Git, Mercurial, SVN for SCM • for developers from developers • moderate plugin system • use as many or as few Phabricator services as you like • supports: issue tracking, scrum boards, source auditing, code review, more! 7
there any obvious logic errors in the code? • looking at the requirements, are all cases fully implemented? • are the new automated tests sufficient for the new code? • do existing automated tests need to be rewritten? • does the new code conform to existing style guidelines? 11
tradeoffs. • Ask good questions; don't make demands. • Ask for clarification. ("I didn't understand. Can you clarify?") • Avoid selective ownership of code. ("mine", "not mine", "yours") • Avoid using terms like ("dumb", “stupid"). • Be explicit. Remember people don't always understand your intentions online. • Be humble. ("I'm not sure - let's look it up.”) • Don't use sarcasm. • Keep it real. If emoji, animated gifs, or humor aren't you, don't force them. 18
call. I'll make that change.") • if a review seems aggressive or angry or otherwise personal, consider if it is intended to be read that way and ask the person for clarification of intent • explain why the code exists. • extract some changes and refactorings into future tickets/stories. • link to the code review from the ticket/story. • seek to understand the reviewer's perspective. • try to respond to every comment. 20
necessary • communicate which ideas you feel strongly about and those you don't. • identify ways to simplify the code while still solving the problem. • offer alternative implementations, but assume the author already considered them. ("What do you think about using a custom validator here?") • seek to understand the author's perspective. • sign off on the pull request with a or "Ready to merge" comment. 22