Page MenuHomePhabricator

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

Description

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

Overview

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

Event Timeline

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

◀ Merged tasks: T2742.

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

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.