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.
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.
Graphite supports multiple commit workflows
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.
Graphite uses new and emerging technologies to improve your workflow
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.
Graphite’s CLI has full bi-directional compatibility with Git
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.
Graphite keeps users informed with live-updating PR status
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).
Graphite supports comments on unchanged lines of code
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
Graphite provides first-class support from our engineering team
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.
Graphite provides Slack integration for real-time notifications and digests
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
"Graphite teams" provides features for collaboration and team insights
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
CLI
Feature | Graphite | Sapling |
---|---|---|
CLI supports stacking? | Yes | Yes |
Collaborate on stacks (i.e. pull someone else’s stack down) | Yes | Yes |
Workflow | Agnostic - developers are in control of their own workflow | Enforces a 1:1 relationship between commits and branches |
Unit of stacking | Branches | Commits |
CLI has git passthrough? | Yes | No |
Repo is largely compatible with git? | Yes - gt and git work seamlessly together | Not recommended |
Automatically create stack visualization comment in GitHub UI? | Yes | Yes |
Interactive Smartlog | No | Yes |
Dashboard
Feature | Graphite | Sapling |
---|---|---|
Has review dashboard? | Yes | Yes |
Support for PR Reviews | Yes | Yes |
Code is the center of the PR page? | Yes | Yes |
Dashboard links are easily translated to GitHub links? | Yes | Yes |
PR inbox (all of the PRs you need to review/have been created by you etc.) | Yes - fully customizable | Minimal |
Customizable PR sections and filters | Yes | No |
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 dashboard | No |
Re-run CI from dashboard | Yes - additional option to re-run only failed checks | No |
Status update banners | Yes - Banners for updates since last review, changes to current version | No |
Filetree view | Yes | No |
Threads-only view | Yes - see only code comment threads to review faster and more efficiently | No |
In-line commenting | On changed/unchanged lines of code (you can comment anywhere) | Only on changed lines of code |
Extra commenting features | Yes - add GIFs and emojis to comments | No - only plaintext/markdown |
Comment reacts | Yes | No |
Timline view (indicating version-specific activity) | Yes | Yes |
Teams features
Feature | Graphite | Sapling |
---|---|---|
Notifications | Yes | No |
Detailed product documentation | Yes | Yes |
Live engineering support | Yes | Somewhat |
Site status | Yes - status.graphite.dev | No |
Merge queue | Yes (coming soon) | No |