How do I write my own Phabricator applications?
Open, NormalPublic


This task discusses the state of third-party application development for Phabricator.


Third-party application development is something we plan to support eventually, but it is not supported today (May 2015), and support is very far away. To provide some sense of how far:

  • Internal Applications: Phabricator might be a suitable platform for development of internal (your company only) applications in 1-2 years.
  • Released Applications: Phabricator might be suitable as a platform for development of released applications in 2-3 years.
  • Web Framework: Phabricator might be suitable as a general-purpose web framework in 3+ years.

The current support, infrastructure, and ecosystem are way behind where they need to be to make developing on Phabricator a reasonable decision. Development today will be plagued by serious problems: unusable APIs, frequent API changes, virtually no documentation, no upstream support, no developer ecosystem, major missing pieces of functionality, and major missing tools.

Long-Term Plans

Phabricator's core is a mostly-modular application platform, and Phabricator's applications are mostly built in an extensible way on top of it. Over time, we have increased modularity and separation of applications, and we plan to continue down this path. When making infrastructure decisions we generally move in this direction, and we consider non-modular parts of the codebase to be technical debt and we are gradually removing them. Eventually, we intend for it to be possible to develop third-party applications which are close to parity with first-party applications.

However, this day is a long way away:

  • Phabricator's core does not present stable, public-facing APIs, and we frequently change major parts of internal infrastructure.
  • Many critical capabilities are not reasonably available to third-party applications yet. Although we are improving modularity, we aren't fully there, and it will take us a long time to get there.
  • There is no documentation, and we will not support third-party development until we're ready for third parties to develop applications.
  • There is no system for packaging, versioning, releasing or distributing applications.
  • In fact, there's no version system for Phabricator's core.
  • Overall, this is not a major priority for us, and the motivation is primarily code quality (that is, modular applications with looser coupling are better for us, too), not providing a public platform. Far more users are interested in bug fixes and features in first-party applications than are interested in third-party development.

These major issues (and many more smaller issues) need to be resolved before we can recommend Phabricator for application development.

Related Objects

epriestley updated the task description. (Show Details)
epriestley raised the priority of this task from to Normal.
epriestley added a project: Applications.
epriestley added subscribers: epriestley, chad, btrahan.
epriestley added a subscriber: donama.

◀ Merged tasks: T2742.

J5lx added a subscriber: J5lx.Jan 12 2015, 9:55 PM

Story is pretty much the same a year later, so I'm just going to update the "today" in the description. :3

epriestley updated the task description. (Show Details)May 1 2015, 5:59 PM
tgm added a subscriber: tgm.May 24 2015, 9:00 AM
eadler added a subscriber: eadler.Jun 3 2015, 3:28 AM
20after4 added a subscriber: 20after4.EditedJul 1 2015, 9:35 PM

The biggest challenge for 3rd party apps, from my perspective, is the rapid rate of development in the upstream. Keeping up with the unstable api changes is definitely a challenge for anyone who isn't closely following Z1336: General Chat and watching the upstream commit log regularly.

stevex added a subscriber: stevex.Sep 10 2015, 10:07 AM
revi added a subscriber: revi.Oct 28 2015, 12:42 PM
ox added a subscriber: ox.Dec 17 2015, 7:28 PM
cmmata added a subscriber: cmmata.Feb 16 2016, 9:02 AM
urzds added a subscriber: urzds.Aug 17 2016, 8:39 AM