Developers: Stop what you're doing and check out Phabricator
By Thom McGrath on
I discovered Phabricator about a year ago. It's a total project management tool. What I mean is that if you develop software of any kind, and have a need that is anything besides writing code, Phabricator probably does it. It is a version control host and browser, wiki, and issue tracker. And so, so much more. It has user chat, file storage, password storage, code auditing, and a whole list of other features. It is updated daily and open source. This is the tool you've been looking for.
Most of us have a solution for version control already. That doesn't mean you can't use these features. Phabricator supports Git, Subversion, and Mercurial at the same time. And it does not even need to host them. Phabricator can track activity of repositories hosted on other providers. So wether you want to bring your VCS in-house or continue with your current provider, you don't miss out on any features.
It has a full-featured issue tracker! This integrates with nearly everything else in Phabricator, so your commit messages or wiki entries can reference issues (called Tasks) and Phabricator will know how to link them up.
Multiple Users and Projects
Create projects. Add users to projects. Add wiki entries, tasks, and repositories to projects. Keeps everything organized. Even better, permissions can be tied to projects too, so that a project and everything tied to it can be 100% invisible to people not part of the project.
Ok, now let's get real, Phabricator may be awesome, but it has a very serious problem: setup. Installation is very, very involved. To get started, you need a few things:
- UNIX server with root or sudo access.
- SSL certificate for a domain dedicated for Phabricator.
- Significant UNIX experience. You will be required to add users, as well as configuring your web server and tampering with sshd and your sudoers file.
- A well configured firewall
Setup varies depending on desired features. Enabling self-hosted repositories is probably the most involved part. But you'll need to write your own init script to manage the Phabricator daemons, or they won't start on system boot. Phabricator does not provide this script for you. You'll also want to clone their Git repository directly, because that's how you update. Just stop the daemons, perform a Git pull, update database schema, and start it all up again. I have this done via a cron script daily.
SSL is absolutely mandatory. You are allowed to run without it, but you'd be stupid to do so. This will have so much of your mission-critical data... don't let it be stolen.
For the same reason, a well-configured firewall is also important. Eliminate everything you don't need running. Ideally, setup Phabricator on a server dedicated solely to Phabricator, and its database. Put it behind a VPN if possible. Defend this thing.
Given the involved setup, a hosted Phabricator sounds like a great plan. Well... options are limited. I tried out a service called Phoreplay and was disappointed. There were some daemon issues out of the box and support never answered my questions. I gave up pretty quickly.
Phacility (the developers) now offer beta hosting. This wasn't an option when I started down my path, so I have zero experience. But I'd bet this will be your first choice.
Phab.io looks like a potential alternative with simple pricing. I have no experience with them either.
If you self-host, you can get the Bitnami Phabricator installer. I tried this myself and didn't really like where everything got installed, but this is personal preference. I had no technical issues with it.
I decided to setup entirely on my own. It's a big bite to chew.
Get back to work
Phabricator is an awesome tool for tracking your development. If you can get past the initial setup, you'll love it forever.
I have received zero compensation for this entry. Phacility did not ask me to write it. I doubt they've even heard of me. Although this entry sounds somewhat like sponsored content, it is not. These are my own words written solely because I wanted to write them.