Phabricator/Code

Phabricator is written in PHP, just like MediaWiki. Patches welcome!

For developer support and camaraderie, join and. You can also contact the Wikimedia Phabricator admins and reviewers.

Improving Phabricator
We sync with upstream frequently, keeping local patches at a minimum. The Phabricator.org workboard at phabricator.wikimedia.org contains all the tasks that need to be handled upstream. We clone these tasks in secure.phabricator.com, where we maintain a Wikimedia project.

Upstream maintainers are very responsive and supportive, They review patches fast and they push updates continuously, skipping releases and versioning altogether. Once your changes are merged upstream, we can push them to phabricator.wikimedia.org.

Check the Phabricator documentation, which includes the contributor documentation.

Changes specific to Wikimedia Phabricator
Wikimedia maintains several repositories related to Phabricator. We welcome contributions in these areas: Please don't send us patches for
 * Puppet rules for configuration settings common to phabricator.wikimedia.org and Labs instances like phab-01.wmflabs.org — see
 * MediaWiki OAuth extension (in the process of being upstreamed).
 * Security extension (Wikimedia's specific development while upstream implements their solution for private projects).
 * Other Phabricator extensions needed by Wikimedia and not supported officially by the Phabricator project (in this case, please first create a task to discuss your proposal).
 * configuration changes for a single instance; they must be applied through the web admin UI of that instance
 * generic Phabricator improvements; they must be submitted upstream

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