Graphite vs Sapling

Graphite offers many of same trunk-based development features that Sapling does, but there are a few key differences/offerings between the platforms that we want to highlight when it comes time to choose which product you want to use.


icon

Note

This comparison may not be completely comprehensive - feel free to contact hello@graphite.dev if you have questions about specific differences between Graphite and Sapling.


Graphite enables your entire workflow

Graphite handles your workflow all the way from “task” to “trunk.”

Graphite has first-class support for an improved code review dashboard

Sapling's ReviewStack add-on is a reference implementation and is not a production-ready tool (ex. ReviewStack’s PR title and body fields aren’t editable). A company that decides to use Sapling will likely need to create its own internal code review UI or continue to use GitHub's which is not stack-aware.

Graphite provides a modern, stack-centric take on the existing GitHub PR interface in addition to an improved review experience. We believe that the code should be the main focus of a review, so it is front and center on the PR page. The Graphite PR inbox serves as a “queue” of PRs that are awaiting review, have been returned to the user, or are merging/have recently been merged. In addition, the Graphite PR inbox improves visibility for authors and reviewers regarding the lifecycle and actions needed for a PR to be merged quickly and efficiently, something both Sapling and GitHub lack.

By default, PRs created with Sapling will only ever contain one commit. Additionally, Sapling tracks commits or “bookmarks,” and considers them the unit of stacking.

Graphite was built with a flexible workflow in mind to allow users from all backgrounds to speed up their personal source control management while remaining fully compatible with Git and the rest of their team’s flow (this means that you can use Graphite even if the rest of your team doesn’t). Graphite supports a 1:1 PR and commit ratio (like Sapling), or multiple commits to a branch (like traditional Git). In addition, Graphite tracks and stacks branches rather than commits.

Sapling is a Meta open source project - response to actionable feedback may not be immediate.

Graphite engineers are extremely active and involved in conversations on new and emerging technologies - because of this, we’re constantly creating interesting features and improvements to improve your workflow. For example one of our newest features, AI summarize, uses GPT3 to auto-summarize PRs based on the contents of its diff.

Graphite integrates seamlessly with GitHub

Adopting a completely different CLI and version control system isn’t always easy for users and large companies, and we built the Graphite CLI and dashboard with this in mind. You can still use Graphite to contribute to a shared codebase even if your team doesn’t. Like Sapling, all actions you take on the CLI or dashboard are immediately synced back to and visible on GitHub.

Sapling has an entirely separate set of sl commands that are used in place of git.

When you use the Graphite CLI, you'll find that all git commands can be invoked with gt as well - under the hood, gt uses native git commands and stores all of the metadata on your stacks in the .git folder of your repository. This also means that you can use regular git commands in Graphite repository without running into any issues. While we strongly suggest that you use gt in place of git, you can always jump back to git and then sync your changes with Graphite if they aren't already applied.

Sapling's ReviewStack has two main sections for PRs: require review and recently updated.

Graphite's PR inbox is highly customizable. Users can create custom sections to stay notified about PRs that satisfy certain filters such as the author of the PR, who it was reviewed by, what repository it belongs to, the status of the PR, labels that it contains, and more. The PR inbox shows live-updating CI status and mergability for each and every PR - data pulled directly from GitHub’s API. Additionally, the PR page surfaces actionable banners when changes have been made after a review, and any time a PR’s version has been updated (no refresh required).

Sapling's ReviewStack doesn't allow comments on unchanged lines of code.

On the Graphite dashboard, you can leave comments across multiple lines of code regardless of whether it’s been changed, with the intention of matching GitHub’s behavior as closely as possible.

Graphite supports fast-moving companies

Sapling is a project created by Meta open source. The project’s Discord is generally inactive, and support for bug fixes and feature requests isn’t necessarily guaranteed.

At Graphite, we believe community is everything. Our strong team of engineers respond to bug fixes and feature requests within a matter of hours. We actively communicate to users through our 7,000-member-strong community slack, bi-weekly changelog emails, monthly blog posts, and our Twitter page. Our engineers are also currently working with top teams and companies using Graphite to build new features and iterate more quickly.

Sapling’s provides a CLI and lightweight ReviewStack interface.

Graphite has a number of features beyond the CLI and dashboard, including Slack integrations for real-time notifications and digests. Fast-moving teams of developers can install the Graphite Slack integration through the dashboard. Graphite notifications allow users to:

  • Get notified when their review is requested on a PR in real-time

  • See a condensed summary of a PR’s changes through slack unfurls

  • Review PRs directly from slack

  • Receive daily/weekly/monthly slack digests about code contributions you may have missed

Sapling’s provides a CLI and lightweight ReviewStack interface.

Graphite is built to power fast-moving teams; fast-moving teams require features that allow them to evaluate their developer productivity and cut CI costs. Teams features we have shipped/are working on include:

  • Team insights: A page that provides metrics on Graphite users’ contributions to a set of repositories over a given time frame. These stats include number of PRs shipped, number of reviews given, review ratio, median lines added per PR, median lines deleted per PR, and average time to close a PR (to name a few).

  • Merge queue: With a high volume of PRs being reviewed and merged into a repository, a merge queue becomes necessary to keep trunk green. GitHub’s merge queue (in beta) isn’t stack-aware and doesn’t provide necessary context on failing or evicted PRs - Graphite’s merge queue improves upon both.

  • CI optimization: As part of the merge queue, your CI will be automatically analyzed to look for potential optimizations around runtime, common failures, and flakiness. The additional configuration over when and what CI to run will help you reduce CI costs.

Differences between Graphite and Sapling at a glance

FeatureGraphiteSapling
CLI supports stacking?YesYes
Collaborate on stacks (i.e. pull someone else’s stack down)YesYes
WorkflowAgnostic - developers are in control of their own workflowEnforces a 1:1 relationship between commits and branches
Unit of stackingBranchesCommits
CLI has git passthrough?YesNo
Repo is largely compatible with git?Yes - gt and git work seamlessly togetherNot recommended
Automatically create stack visualization comment in GitHub UI?YesYes
Interactive SmartlogNoYes

FeatureGraphiteSapling
Has review dashboard?YesYes
Support for PR ReviewsYesYes
Code is the center of the PR page?YesYes
Dashboard links are easily translated to GitHub links?YesYes
PR inbox (all of the PRs you need to review/have been created by you etc.)Yes - fully customizableMinimal
Customizable PR sections and filtersYesNo
Can edit PR metadata?Yes - PR titles and descriptions can be edited in markdown with live description edit preview. Add screenshots, screen recordings and GIFs to descriptions through dashboardNo
Re-run CI from dashboardYes - additional option to re-run only failed checksNo
Status update bannersYes - Banners for updates since last review, changes to current versionNo
Filetree viewYesNo
Threads-only viewYes - see only code comment threads to review faster and more efficientlyNo
In-line commentingOn changed/unchanged lines of code (you can comment anywhere)Only on changed lines of code
Extra commenting featuresYes - add GIFs and emojis to commentsNo - only plaintext/markdown
Comment reactsYesNo
Timline view (indicating version-specific activity)YesYes

FeatureGraphiteSapling
NotificationsYesNo
Detailed product documentationYesYes
Live engineering supportYesSomewhat
Site statusYes - status.graphite.devNo
Merge queueYes (coming soon)No