Phabricator/Code

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

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

Improving Phabricator
Bugfixes and small enhancements can be contributed directly as patches to 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 upstream Phabricator documentation. That includes documentation on contributing in general and on contributing code. This upstream guide is also interesting: When will my feature get built, or my bug get fixed?

Phabricator extensions
Whole new features aiming to be deployed in Wikimedia Phabricator must be discussed in advance and be planned as extensions. The advantage of Phabricator extensions is that they can be evaluated and eventually deployed to Wikimedia Phabricator without requiring any acceptance from busy upstream maintainers. Still, planning them upstream is encouraged, in order to get more feedback and other potential contributors or users.

Any Wikimedia developer should be familiar with this approach, used for MediaWiki core and extensions as well.

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

Note that currently (October/November 2014) long-term development resources designated for maintaining local Phabricator code changes are not clearly defined yet. While patches for important functionality issues, security issues and common configuration settings are welcome, we kindly ask you to please wait with any other local code contributions until the migration of Bugzilla and RT has been finished.

Setting up your environment
The easiest way to get yourself a Phabricator instance close to the Wikimedia experience is to create an Wikimedia Labs instance and apply the  role. This will give you a fresh install with the same code and basic configuration as https://phab-01.wmflabs.org. Check the Wikimedia Labs documentation for more details.

The local alternative to this is using a vagrant setup. See Phabricator/Code/Vagrant for more details.