Phabricator Administrator's Handbook/Compare Phabricator and ...

People often compares Phabricator to other technologies like Bitbucket, GitLab[1][2], GitHub[3], Launchpad[4], Mantis bug tracker, ecc.

Having said that no solution is just "better" than another one, this page will help in having a background in how some various similar technologies are designed and how they differ.

Differences between Phabricator and other solutions

edit

Often it's just a matter of subjective choices and habits, but there are some differences, some different business workflows, etc.

Some key differences between Phabricator and other software and services:

License and solutions

edit

GitLab, Launchpad, Phabricator, Phorge and Mantis bug tracker are all free software. This means you have the freedom to study, modify, improve and share them. This means you can:

  • self-host these platforms on your own servers (100% data ownership)
  • have an on-premise solution (your servers but official assistance)
  • find a service provider (someone taking care of everything on their infrastructure)

Bitbucket and GitHub, instead, are proprietary software as a service and this means they take care of everything but you have not the freedom to study, modify, improve and share the platform (you can't install it on your server ecc.).

GitHub, GitLab, Phabricator and Launchpad can be used "as a service", provided by their respective companies. Actually Phabricator official service does not allow gratis registration to everyone. Anyway, Phabricator, GitLab and Launchpad may be used "as a service" by some providers (not promoted from this book).

Source version control

edit

Phabricator and Phorge support multiple source version control systems: git, Subversion, Mercurial. This feature is quite unique.

Launchpad supports both Bazaar[5] and git.

GitLab and GitHub only supports git.

Collaboration systems

edit

In Phabricator and Phorge, software collaboration is preferred over patches. This is handled by a web interface and using the Differential command line tool.

GitLab, GitHub are built over pull requests (separate repositories that can interact).

Launchpad is built over merge requests (similar to pull requests).

Permissions

edit

In Phabricator and Phorge, the privileges of almost every object can be tuned. This feature is quite unique. For example every Phabricator Task can be configured for custom visibility and edit privileges. This is very flexible. It's very easy to say that something is "Editable only by Administrators, or Users in this Security group, but only when Moon is full". Also, this flexible Visibility system quickly allows to create Tasks (or other stuff) that are only visible to you: for example, you can secretly organize your work, creating stuff not visible even to your boss or to Administrators. For example, this feature is frequent to create secret Passphrases only visible to you, etc.

In GitHub, GitLab and Launchpad this is limited, so, maybe it's simpler.

In Mantis bug tracker, only Tasks can be hidden. They have only two states: Public and Private (where Private is a fixed list of users).

Permanent deletions

edit

Phabricator and Phorge are somehow paranoid about permanent destruction of objects from the web interface. Usually, objects can be archived, marked as deleted, but not permanently deleted. You may need access to the server command line to do important operations, like repository deletions, etc. The reasons about this choice are explained here: Permanently destroying data in Phabricator. In this way, normal Administrators cannot do any big mistake from the web interface.

In GitHub and GitLab it's easy instead to completely destroy a repository, if you are an Administrator.

Tasks dependency

edit

Phabricator and Phorge have a very flexible dependency system to declare: What are the parents of this Task? What are the children? Note: plural in both cases. So, you can organize very complex work that involves big multiple departments and projects in a visually understandable way. Example in Wikimedia Foundation: https://phabricator.wikimedia.org/T229015

In any other platforms, this feature is very basic. Usually, you can just have one parent, and multiple children.

In Mantis bug tracker, the system is quite flat, and normally people just don't assign parent/children Tasks. This is handled like an extra attribute and not visually shown as a tree.

Visual Work progress

edit

In Phabricator and Phorge, you can assign "Points" to Tasks. So that, a Task is much more complicated than another one and takes more time, etc. Then, you can assign "Point limit" to Workboard columns. Then, every column shows how are you going, if you are going in burnout. If you close a Task, the progress bar advance by its Point factor and it's visually useful. Also, for each Project, there is an automatic render that shows your "Burnout chart", so that you see you much Open Tasks a project is receiving, how much Tasks are closed over time, to see if your team is efficient or under total burnout etc.

Please add other comparisons.

Other notes

edit

There is also an interesting and quite neutral comparison between Phabricator and GitLab, talking also about Bugzilla, GOGS, gitea and Pagure.

You can further read it from the GNOME wiki:

Notes

edit
  1. wikipedia:GitLab
  2. https://about.gitlab.com/blog/2021/08/13/five-great-phabricator-features-inspired-gitlab/
  3. wikipedia:GitHub
  4. wikipedia:Launchpad (website)
  5. wikipedia:Bazaar (software)