Phabricator/Code

(Intro contains the main links to get started located in Phabricator upstream)

Wikimedia Phabricator updates and local patches
(How we sync with upstream, and mention that they don't have traditional versions. Mention that we have local patches that we aim to upstream.)

Wikimedia Phabricator or upstream Phabricator?
(Where to send your patches)

Web admin UI or patches in Gerrit?
(When it is better to change something through Phabricator's admin web UI, when something can only be changes with a patch.)

Setting up your environment
(How we recommend you to clone Phabricator and play with it)

Labs instances
https://phab-01.wmflabs.org/ uses "git::install" within puppet. so for example: git::install { 'phabricator/phabricator':

git::install itself is in modules/git

modules/git/manifests/install.pp:#  git::install { 'project/name/on/gerrit':

so it clones from our gerrit installation at https://gerrit.wikimedia.org/r/#/q/project:phabricator/phabricator,n,z

so what would it take:

- new project/repo created on gerrit - import code into that repo - add puppet code that uses "git:install" to clone from it, copied from how it does it for the other existing repos

> Also, how will core and library code changes to phabricator be deployed to > the production instance?

puppet will make it "exec {"git_update... .. command => '/usr/bin/git remote update', from our gerrit repo. i'm not 100% sure about the sync between upstream and our gerrit repo, but Chase would know

> Where shall we put this phabricator-sprint code so that we can work on it > with the intention of having it reviewed and deployed in production as soon > as possible?

probably into modules/phabricator in repo operations/puppet and suggest it as a change by uploading into gerrit. first you could just modify the role::phabricator::labs and after testing it would be addedi to role::phabricator::main

Chase, correct me if i'm wrong

Contributing small patches
(Sending patches to Gerrit)

Pushing new features
(Testing/showcasing first in Labs if it's an existing project; sync with upstream if it's something new...)