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 maintainers and potential reviewers can be found here.

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

Contributing configuration changes and downstream patches: Our  custom settings  are available in operations/puppet under /modules/phabricator/data/fixed_settings.yaml

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.)

Patches in Gerrit should be changes that we want disabled on all Phabricator installations and by default. Changes that apply only to one or several instances (e.g. on Wikimedia Labs) should be done in the Web admin UI. Changes to settings in the web admin UI are included in backups.

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

Labs instances
(Explain the role of phab-01 and the possibility to clone more instances in Labs)

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...)