
Phabricator: An open source, software engineering platform - aram
https://github.com/facebook/phabricator
======
skrebbel
I _love_ their writing.

[http://phabricator.org](http://phabricator.org):

    
    
        Review Code or just stare at it 
        Review others' code with Differential, because they can't be trusted. 
    
        ... 
    
        • Shows text in several different colors.
    
        ... 
    
        Have terrible software? Keep track of all the defects and problems with
        your awful code using Maniphest. 
    
        • Keeps track of bugs.
        • You can assign them to people.
        • Maybe you could fix them eventually. (optional)
    
        ...
    
        The arcanist command line tool gives you CLI access to most of Phabricator's 
        functionality.
    
        • Many cryptic commands.
        • ...
    
    
    

[http://phacility.com/](http://phacility.com/):

    
    
        Phabricator, except you pay money for it.

~~~
nanidin
When I read the page I couldn't tell if it was serious or some sort of April
Fool's joke that someone forgot to take down and almost immediately dismissed
it as something that people would actually use.

~~~
skrebbel
Doesn't that worry you?

~~~
nanidin
It would worry me if I were Phabricator, or if I were trying to get others to
buy into using it in a professional environment.

~~~
skrebbel
I meant to imply that if a little dry humour scares you away from an open
source project, then maybe that says a little about you, too.

~~~
aw3c2
It did not scare him away, it made him question the legitimacy. That's not
something you want.

------
apaprocki
We use Phabricator at Bloomberg and I'll take the opportunity to shamelessly
plug the add-on tools we've open-sourced to make working with it even easier:

[https://github.com/bloomberg/phabricator-
tools](https://github.com/bloomberg/phabricator-tools)

------
Dobbs
We use phabricator. It has some really nice features.

* Easily automatic updating.

* Really nice code reviews.

* Many features built in.

It also has some very terrible downsides:

* It expects you to use its work flow (though you can work around it) for merging code back into master.

* It requires manual config per git repository.

* arcanist is a pain to install (and php)

* Its expectations don't seem to quite match up with gits. It seems to often have trouble figuring out what I'm trying to send for code review. I've given up on it being smart and now just always run: `arc diff master` or `arc diff master --update D<ID>`.

~~~
epriest
If you're having issues, let us know. Offhand:

1\. `arc land` is optional, and always has been. If you don't want to use it,
you can just use normal `git` commands. All `arc land` gives you is a few
checks against human error.

2\. `.arcconfig` is no longer required, although if you want to use
integrations like lint, you'll still need to configure them.

3\. Anything we can improve on?

4\. You should be able to use `arc which` to understand what `arc diff` will
do. You can change what `arc diff` will do by specifying a different set of
"base" rules, according to this document:

[https://secure.phabricator.com/book/phabricator/article/arca...](https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/)

------
geuis
We use Phabricator at my company. It's a fantastic issue and task tracking
tool kit. The addition of Arcanist and it's integration with git is awesome.
Highly recommend trying it. I've used a lot of similar systems of the years
(bugzilla, Jira, and others). Phabricator blows them away.

------
efnysien
First used phabricator as an intern, and later brought the toolset for class
projects (Compilers and now thesis-work). It's been massively helpful, and
like others have commented, their IRC is active and helpful.

FWIW, a friend who'd never used the tool got up and running (after a kind of
messy install) in less than 2 hrs. For any other undergrads out there doing
any serious project work with people, this is worth your time. I mostly use it
as a personal task-manager (asana would do the job), but I like how good its
command line tools are, and how I can do just about anything from terminal.

------
SEJeff
This has long since spun off of Facebook into a company working on phabricator
full time:

[http://phabricator.org](http://phabricator.org)

~~~
sdesol
Well that would explain the high churn that I've been noticing with my tool.
I've always been curious about why they were iterating at the pace that they
are.

Here's Phabriactor's weekly code churn

[http://screenshots.gitsense.com/phabricator-
churn/](http://screenshots.gitsense.com/phabricator-churn/)

And its weekly lines of code change

[http://screenshots.gitsense.com/phabricator-
churn/loc.html](http://screenshots.gitsense.com/phabricator-churn/loc.html)

------
asb
LLVM is using Phabricator for code reviews, seemingly very effectively:
[http://reviews.llvm.org/differential/](http://reviews.llvm.org/differential/)

I know for instance that the Rust project has had some frustrations with
Github when it comes to code reviews, possibly for issue tracking too. Does
anyone have any experience with phabricator as a bug tracker?

------
schleppy_oc
Phabricator was one of the first tools I brought to my latest company. We
primarily use it for Differential because the arcanist command line tool is so
easy to use. Even those that are somewhat git challenged benefit as it handles
merging commands for you when you land a review.

The IRC channel is a great place for Q&A and epriestley et. al. are always
there to offer help.

Before you bash it for being written in PHP, take a look at the source; it is
unlike any other PHP code I have ever seen.

~~~
psaintla
Don't take this the wrong way but this is still PHP and I say this as someone
that's been writing in PHP since 2001, although I've largely shifted away. It
didn't take me long to find some really crazy stuff like these nested try-
catch blocks in:

[https://github.com/facebook/phabricator/blob/master/webroot/...](https://github.com/facebook/phabricator/blob/master/webroot/index.php)

Also this comment is pretty telling:

    
    
      // If execution throws an exception and then trying to render that exception
      // throws another exception, we want to show the original exception, as it is
      // likely the root cause of the rendering exception.
    
    

I'm not saying this is a bad project, it looks excellent and the code is
pretty good but you can't escape having to do some nutty things in PHP.

~~~
epriest
I wrote this code, but I'm not sure what's wrong with it. Can you explain
what's bad about it and how you'd improve it?

\---

To provide some context, this is the top-level entry point for all requests.
It routes requests to code which does application-level things, like showing a
code review or updating a task or whatever.

When the application-level things go wrong, we try to display a pretty, human-
readable exception page with a nicely formatted stack trace (if you're in
developer mode), etc. This page relies on some infrastructure subsystems (like
configuration, to check for developer mode, and static resources, to include
JS and CSS, and rendering, to actually produce the HTML) working correctly.

Normally, the exception is in application code and everything works fine. We
produce a pretty page and send it back to the user.

However, sometimes there's an error in one of these subsystems. If we start
rendering the page and encounter a second exception during rendering, we fall
back to a less-pretty page which has bare text and no dependencies on
subsystems. Normally, this happens during development when you've made a
mistake in changing one of the subsystems, and all JS inclusion or all
configuration checks are failing.

On this bare page, we want to retain the original exception (as well as show
the followup exception) because it may be helpful in identifying and resolving
the issue.

With the obvious caveat that I wrote the code, this architecture seems
sensible and appropriate to me, and appears to function correctly in practice.

~~~
nolok
Code's fine, he's just taking a jab at php because that's hip

~~~
psaintla
Actually I'm not, I think PHP is a perfectly good language for certain things
I'm just not blind to the issues with the language. I responded with my
reasons that I believe that particular piece of code isn't so great.

------
Navarr
Phabricator is definitely interesting. In my limited time with it I really
took a liking to it.

Unfortunately, to me, the Atlassian toolchain still wins out over it, provided
it's within the budget. I vastly prefer Jira's Agile boards to anything else
I've ever used, and it's integration with Stash and Bamboo just make things
absolutely lovely.

But I mean, as long as it's not Mantis.

------
malandrew
Phabricator looks so useful, however the one time I tried setting up it up I
found it to be an absolutely horrific experience. The documentation was so so
and I could never figure out some weird issues with permissions that prevented
me from ever getting it to work properly. I really wanted to like it, but I
got the impression that so many comprises have been made to it to accommodate
the needs of every single development team out there and their esoteric set
ups. It would have been much better served saying no to features and promoting
a plugin-based approach where you get a dead simple set up out of the box and
then extend it as necessary. The fact that there are several dozen
configuration guides doesn't help much:
[https://secure.phabricator.com/book/phabricator/](https://secure.phabricator.com/book/phabricator/)

I'd love it if someone started a project like phabricator but in community
with a decent package manager and robust module ecosystem like node.js,
python, go or ruby, with go or node.js being my first choices. Large
monolithic projects with half-baked plugin management and profiteering seems
to be a recurring theme in the PHP ecosystem (joomla, drupal, magento,
wordpress). I feel that a project like this birthed in one of those other
communities would promote a much simpler core product the can grow with your
needs.

I'm really not trying to hate but just vent some frustration.

On the other hand, looking at the site today, it looks like it might have
changed a lot since when I first tried it like 2 years ago. Might have to give
it another go.

------
ausjke
I still use the redmine which supports git well for me, for all my software
stuff plus acting as a nice project management tool. I wish it's not developed
in Ruby, so I could have one less language(and its dependencies) to maintain
on the server side. how does this compare to redmine, or gitlab?

------
jaytaylor
Interesting read on Phabricator vs. Asana: [http://www.quora.com/What-does-
Asana-give-you-that-Phabricat...](http://www.quora.com/What-does-Asana-give-
you-that-Phabricator-doesnt)

------
davidgerard
Wikimedia is seriously looking into replacing Bugzilla and Gerrit with this.
[http://www.mediawiki.org/wiki/Phabricator](http://www.mediawiki.org/wiki/Phabricator)

------
ushi
Here is a running phabricator:

[https://secure.phabricator.com/](https://secure.phabricator.com/)

------
varsketiz
If anyone is interested in trying phabricator on demand (SaaS) - check out
phabricator.io

------
brokenparser
Unfortunately, this requires MySQL. I guess it would be okay if you're already
running that but I'd rather not introduce a third database daemon (after
Postgres and Redis) to my servers.

~~~
cjbprime
I like the implication that MySQL is the unfortunate technology choice here,
rather than PHP. :)

~~~
cauterize
What's so baffling is a behemoth that attracts some of the top engineers would
settle for 2 vastly inferior technologies. To be fair, it is a glorified todo
/ commenting system.

~~~
Shish2k
MySQL works pretty well when you treat it as an unreliable network-accessible
key/value store; and PHP works pretty well if you treat it as a pure
templating language, and also write your own implementation, and also rewrite
the language itself to be a different, better language :P

------
machbio
its amazing, how good and easy it is to setup the phabricator.. looks like a
well trained system

------
thatmiddleway
Another garbage heap of php technology from everyones least favorite personal
data peddlers.

Who cares.

~~~
pestaa
I must say, there is one concern that keeps me away from using otherwise great
Facebook technologies like Phabricator and React is that I don't believe
Facebook will be here in 5 or 10 years.

What will happen to these projects if that is the case?

~~~
krapp
Isn't that the case with any software you choose to use?

~~~
pestaa
That's absolutely true, but again, my perception is that the company backing
the project is very fragile.

Also the tools they produce are an order of magnitude better than their main
product, which I can't wrap my head around either.

