惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
C
Check Point Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
美团技术团队
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
Jina AI
Jina AI
爱范儿
爱范儿
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美

Graphite blog

Introducing Code Tours: a new way to review Introducing Cursor Cloud Agents in Graphite Building the future of software development with Cursor Reimagining the PR Page: Designing for speed and focus Graphite changelog [11-20-2025] Graphite changelog [11-04-2025] Graphite changelog [10-16-2025] The future of engineering is collaborative (and already here) Meet Graphite Agent: the next evolution of AI code review Introducing frozen branches: A safer way to build on your teammates’ work Graphite changelog [09-17-2025] How we sped up code search for Graphite Chat Introducing Graphite Chat AI is writing code—here's why it also needs to review that code How I got Claude to write code I could actually ship How we built the first stack-aware merge queue (and why it matters) How we organize our monorepo to ship fast Graphite brings stacking to Tower Code review tooling: Should you build or buy? Making AI code review available to everyone Introducing: The new Graphite + Linear integration Graphite raises $52M and launches Diamond to reimagine code review for the age of AI Why AI will never replace human code review How stacked PRs unblock distributed development teams Graphite is going to Developer Week 2025 Beating the end of year code freeze How Graphite’s eng team ships code remarkably fast Why we chose Anthropic's Claude to power Graphite Reviewer AI code generation will remain fragmented How we redesigned Graphite's landing page in-house
Phabricator vs GitHub vs Graphite: How do they stack up?
Tyler Hakes · 2024-02-23 · via Graphite blog

Today, many modern software development teams are spread across different time zones, cultures, and technical expertise. As a result, creating, maintaining, and tracking changes to your codebase becomes a crucial part of any development process.

GitHub, of course, revolutionized repository management for many software teams.

Phabricator was spun out from the development team at Meta (Facebook). It introduced many teams to new ways to plan, track, and manage software development.

Graphite offers much of the same functionality as Phabricator, with the added benefit of direct integration with GitHub. No VCS switching required.

Which option is best for your team?

For the purposes of this review, we’ll consider three options:

  1. Graphite

  2. Vanilla GitHub

  3. Phabricator

Let’s look at GitHub’s functionality versus improvements introduced by Phabricator. And how using Graphite with GitHub can offer the benefits of both options.

Setup and repository hosting

First let’s take a look at how to set up Phabricator.

The good news: Phabricator is self-hosted.

The bad news: Phabricator is self-hosted.

Phabricator is a LAMP (Linux, Apache, MySQL, PHP) application that needs to be installed on a machine running Linux or some similar operating system. This means you’ll need some basic system admin skills, and also need to install a web server like Apache, a functional MySQL database, and a PHP installation.

Unfortunately, that’s just the start. The system itself is also quite complex.

As one HackerNews user put it, “There are a lot of moving parts, and the initial setup requires 60 different unique databases. It has a handful of background daemon-like processes that occasionally get wedged.”

Since Phabricator is no longer being actively maintained, you’ll have to fork your own copy of the repo and set it up yourself. There’s no official support.

GitHub and Graphite, on the other hand, are managed services, with reduced overhead and complexity.

Nevertheless, once they’re set up, both GitHub and Phabricator’s Diffusion have similar repository management functionality. Aside from the main difference—GitHub is cloud-hosted—both tools offer the main features you’d expect:

  • Version control system support

  • Branching and merging functionality

  • Access and permissions settings

  • Continuous integration and continuous deployment (CI/CD) integration

Graphite integrates directly on top of GitHub, and does not affect the repository hosting or setup aspects of GitHub.

Commits and pull requests

Here, we start to see the differences emerge between these options.

GitHub (and, by extension, Graphite) uses the Git version control system (VCS) at its core.

Phabricator, on the other hand, can sit atop any of the three most popular version control systems: Git, Mercurial, or SVN (Subversion).

If you have a strong preference for something other than Git, Phabricator is a viable alternative to GitHub.

If you’re happy with using Git in either case, then the differences between using Graphite, vanilla GitHub, and Phabricator become more about their differences in supported workflows.

In GitHub, you can create an issue to communicate bugs, new feature requests, and security threats with your code collaborators. The tool also allows you to clone or fork a repository, work on it without affecting the original codebase, and create a pull request (PR) that notifies the codebase maintainers of proposed code changes. If the maintainers review the PR and accept the changes, GitHub ensures that the new changes get merged with the original codebase.

Traditionally, you might create a single feature branch that contains all of the code changes necessary to push a new feature.

Once you submit a pull request for the branch, it goes through code review and is ultimately merged back into main branch. While this process is happening, further development that depends on these code changes is delayed.

In other words, the GitHub workflow handles pull requests, commits, and merges serially. One at a time.

This creates problems for many teams:

This is one of the main things that Phabricator attempted to solve. Phabricator tackled this by introducing a different workflow known as stacking (AKA stacked pull requests, stacked diffs, or stacked changes).

Stacking is a workflow designed to unblock developers.

As Gergely Orosz explains:

“Stacking refers to breaking down a pull request (PR) for a feature into several, smaller PRs which all depend on each other – hence the term ‘stacked’. It might sound counterintuitive, but this workflow is incredibly efficient by making it easier to review and modify PRs – or ‘diffs’ as we called them at Uber.”

Instead of following the traditional pull request model, you can think of stacking like creating a separate branch for each pull request (Phabricator refers to a pull request as a “differential revision”). And instead of creating pull requests containing multiple commits, you can instead stack multiple, smaller PRs. This means fewer commits per pull request and easier code review.

Technically, you could follow this same workflow using vanilla GitHub, but it presents a few challenges that can make it difficult and messy:

  1. GitHub doesn’t offer a way to “stack” the PRs. They’re not linked in any kind of logical way that would allow you to easily track how and when they contain dependent commits (or the order in which they need to be merged).

  2. Upstream changes have to be handled manually. If you identify a bug or issue with a previous PR, you have to manually apply those code changes to any downstream PRs with git rebase.

In other words: technically, it’s doable. Realistically, it’s not a fun workflow.

Cue: Graphite.

Graphite is built to facilitate the stacking workflow for GitHub users. This means that both the web app and CLI offer features to stack PRs, manage a series of PRs, and perform automatic rebasing upon any changes.

So, if you want the benefits of the Phabricator workflow and stacked PRs, you can simply use Graphite on top of GitHub to get the best of both solutions.

The benefit here is that you can ship faster, and code reviews become significantly easier without sacrificing the creature comforts of GitHub and making the leap to Phabricator.

Code review and merging

GitHub, Phabricator, and Graphite all offer their own code review tools.

In the case of GitHub, code review follows a familiar workflow. Once a pull request is created, reviewers can be assigned. The pull request will enter the queue. After the code review takes place, there may be multiple rounds of feedback and comments. Ultimately, the pull request is finalized and then merged into main.

The Phabricator review workflow is quite similar to the GitHub PR workflow. An author changes the code and requests a review from specific reviewers. Reviewers then get notified, inspect changes, and either accept them or propose further changes. Once all the reviewer conditions are satisfied, the code gets merged upstream to the central codebase.

One key difference is that Phabricator and Graphite make code reviews non-blocking for developers.

The stacked PR workflow also makes code reviews smaller and faster.

There’s generally just one commit per pull request. More reasonably sized PRs mean that code reviewers can more easily and reliably identify issues with commits and easily understand the changes being introduced before approving and merging.

Graphite provides a similar experience to Phabricator, while also introducing some quality-of-life improvements over both vanilla GitHub reviews and Phabricator reviews.

The pull request inbox offers review workflow organization changes that make it simpler to manage and keep track of reviews in progress. Review messages, comments, and feedback appear in a simple interface, organized by necessary action.

This simple interface makes it easy to leave and respond to lots of review comments and quickly see what actions need to be taken. You can create comment threads directly in the context of the pull request. Plus, you can attach files or add memes, macros, and emojis.

Overall, this makes the user experience better for both leaving and resolving code review feedback efficiently.

Both GitHub and Phabcricator offer their own features for issue and bug tracking, task and project management, and other collaboration tools.

GitHub Issues lets you organize project tracking in board, roadmap, and table views. It also offers features to:

  • Break issues into child tasks.

  • Track relationships between issues and tasks.

  • Use customizable fields to organize tasks in alignment with your workflow.

  • Create conversations around each task or issue.

Phabricator’s task management tool is called Maniphest. It’s built around Kanban workboards.

Similar to GitHub’s issue tracking, you can assign parent and child relationships as well as save custom views and searches.

The interface is simple. Perhaps a bit dated at this point, but it gets the job done.

If you’re looking for a radically different workflow for handling bugs, issues, or projects, you can customize further with Phabricactor. Since it’s open source, you’re free to roll your own system to align with your team’s preferred processes. Of course, that costs time and money.

Costs (subscription and operating)

Phabricator is free to install on your local machine. But in terms of lifetime maintenance costs, this may cost you more than both GitHub and Graphite's enterprise plans.

Qt Group did some napkin math on the lifetime cost to deploy and maintain open-source software. They came out at about $135,000.

Now, of course, your cost to operate Phabricator may vary.

But, there’s no doubt that there will be reasonable costs associated with setting up the self-hosted environment and infrastructure. Then you’ll need engineer time to maintain, debug, and ship one-off patches.

On top of that, because this isn’t an actively maintained project, there’s no official support and a waning base of community support available on the web.

How does that compare to the subscription models offered by GitHub and Graphite?

GitHub offers a forever free account along with team and enterprise tiers that are priced on a per-user basis. The free plan offers 2,000 CI/CD minutes along with 500 MB of storage every month for your private repositories. There are no CI/CD or storage limits for your public repositories.

The GitHub team plan at $4 per user a month offers 3,000 CI/CD minutes and 2 GB of storage every month for your private repositories. This plan comes with automated code request review workflows and enables multiple reviewers for a PR. The enterprise plan at $21 per user per month offers 5,000 CI/CD minutes per month and 2 GB of storage for your private repositories. This plan comes with premium support, annual SOC2 reports, and SAML SSO.

Graphite also offers a forever free plan that can be used for up to 3 searchable GitHub repositories and 3 months of searchable PR history. The Graphite team plan offers 30 searchable GitHub repositories and 24 months of searchable PR history. This team plan also comes with detailed insights that identify bottlenecks and an option to merge queue that automatically rebase to eliminate merge conflicts.

Can Graphite help your team ship code faster?

GitHub is the leading repository management tool by far, with over 100 million developers using the platform. However, many open-source enthusiasts and the engineering team at Meta still swear by Phabricator’s code review workflows.

So which one’s right for your team?

Are you looking for the easiest possible solution?

Vanilla GitHub checks most of the boxes in terms of traditional functionality.

Do you want a fully customizable experience and have lots of time or money to throw at deploying and maintaining an open-source solution?

Phabricator offers some major upgrades to the overall developer experience and workflow. This is a reasonable solution for hardcore shops, but probably not feasible for most casual users.

Do you want the best of both worlds?

Graphite offers the innovations and modern workflows offered by Phabricator—but without having to actually manage your own repo hosting system.

Graphite improves upon GitHub to help unblock your team, ship codes faster, and improve code reviews. But you don’t have to spend eons tinkering with your own setup to make it work.

Teams choose to use Graphite + GitHub because:

  • Developer productivity improves by using the stacked PR workflow.

  • Code quality improves because you incentivize developers to create small and specific PRs that are easy to review for bugs, contextual errors, and low-quality code.

  • Cost advantages accrue because you don’t have to spend on hardware, security, or upgrades for an open-source project like Phabricator.

This is why some of the world’s top-performing engineering teams choose to add Graphite to GitHub and unlock the benefits of stacking with the simplicity of familiar code management.

Want to see how it works?

Sign up with your GitHub account and sign up for a free Graphite plan.