3 ms·
A while back, I chose to migrate my open source projects from GitHub to Phabricator. Having open source projects on GitHub has felt like having an email inbox t
by davidcuddeback 8y ago
A while back, I chose to migrate my open source projects from GitHub to Phabricator. Having open source projects on GitHub has felt like having an email inbox that's open to the public where there's an expectation to respond to every form of spam. It's been a source of aggravation for me that's taken the fun out of coding on side projects. In my opinion, two out of the three bullet points from Dear GitHub [1] are still unaddressed, but all three are handled by Phabricator.
I looked at GitLab, Bitbucket, and Phabricator. I selected Phabricator because it provides more control for moderation and managing workflows and it's 100% open source [2]. Some examples of ways Phabricator can be customized:
- Create a custom "New Bug Report" form with fields for reproduction steps, expected results, actual results, software version, operating system, etc. Customized forms are more than just a Markdown template. (This is the first bullet point from Dear GitHub.)
- Provide instructions on how to fill out each custom form. You can customize the blurb at the top of each form using Remarkup (similar to Markdown). (This is the third bullet point from Dear GitHub.)
- Keep security issues restricted to a private group until they've been resolved.
- Default user-reported issues to private until they've been triaged. (This could help alleviate the expectation to publicly reply to all spam.)
- Require users to acknowledge the contributing guidelines before submitting a feature request.
- Access to forms can be customized with ACL groups, which can be used to moderate spam by granting or revoking access to features based on users' behavior.
- Require signing a CLA or DCO before submitting a patch. This has first-class support since Phacility requires a CLA for contributions to Phabricator.
- Tasks can have subtypes, such as "feature" and "bug." (You can also do this with "project" tags, but I think Phacility's plan is to use subtypes to extend the custom fields functionality.)
Phabricator also has some nice extras that weren't part of my decision criteria:
- It has a built-in blogging application (Phame), which could be used to publish release notes or important changes (e.g., "Upcoming Breaking Changes in v2.0"). A feed of these news items can be added to a custom dashboard along with commit and task activity to help users keep up to date.
- A built-in polling application (Slowvote) can be used to solicit feedback.
- A Q&A app (Ponder) could be used to help answer users' questions without cluttering the issue tracker. Unfortunately, this app currently lacks some customization and moderation capabilities.
- Paste is for sharing snippets (similar to Gist).
- Flags can be used to bookmark anything you want to remember to come back to with an attached note.
- Pholio is a review tool for mockups. I probably won't need this for my peronsal projects, but I thought it was a cool idea.
Phabricator comes with some trade-offs. The downsides that I've noticed:
- There isn't a good hosted option for open source projects. Phacility provides hosting at $20/user/month, but if you have to pay $20/month for every user that signs up to file an issue, that's financially unviable for an open source project. Personally, I prefer self-hosting, so this isn't an issue for me. I'm mentioning it because I know others will prefer a hosted solution.
- Navigating the UI isn't as smooth out of the box. Some common tasks require an extra click or two compared to GitHub or GitLab. Some of it can be alleviated by customizing the places where you want a direct link. For example, you can add a link to a repository in a project's sidebar. (Projects are independent of repositories, so they're not automatically linked.)
- It's meant to be customized, so it's not as simple as just install it and start using it right away. It takes some time to setup and migrate projects.
- Many of the tools that aren't core functionality (repos, tasks, code review) are MVP quality. This includes the CI tool (Harbormaster) [3], the Q&A app (Ponder), and the human intelligence queue (Nuance) [4] among others.
- Phacility's focus is on enterprise customers, so it's not clear how issues that are unique to open source projects will be prioritized. I haven't seen this be a problem and it's used by some prominent open source projects (FreeBSD, GnuPG, Wikimedia), but it's worth mentioning as a possibility.
I've been playing around with Phabricator on a FreeBSD instance on DigitalOcean. For anyone else considering Phabricator, note that the page response time is greatly affected by the instance type that you choose. A standard droplet on DigitalOcean or any of the VC2 instances on Vultr provided about a 1 second response time (measured by Nginx's $request_time in the logs). A CPU optimized droplet on DigitalOcean provides about a 100 millisecond response time and results in a noticably more responsive UI. I can't speak to the response time on EC2 instances, because I've only tried hosting providers with first-class FreeBSD support.
[1] https://github.com/dear-github/dear-github https://github.com/dear-github/dear-github
[2] "No special editions. Everything included, open and free" (https://phacility.com/phabricator/ https://phacility.com/phabricator/).
[3] The documentation for Harbormaster says that all it's really good for is to notify an external CI system (Jenkins, Buildbot, etc) to trigger a build and then to receive build results. It doesn't have any built-in capability of running builds.
[4] Nuance seems like it has potential as a triage queue for user-reported feature requests and bug reports, but it currently lacks the necessary customization.
(Edited for formatting.)