Phabricator, once a Facebook internal tool, was open-sourced in 2011 and offered support for stacked diffs. Developed by Evan Priestley, it was maintained by Phacility until 2021. Phabricator is recognized for its contribution to the tech community, with over 200 companies adopting it at its peak.
Sapling, on the other hand, is a more recent development designed to simplify complex workflows and is particularly effective in large monorepo environments.
Support and Maintenance
As of 2021, Phabricator is no longer actively maintained by Phacility. While some companies still use it, many have transitioned to other tools like GitHub. Those still using Phabricator typically maintain their own version of the source.
Sapling, being newer, is under active development, with updates and support provided to accommodate evolving developer needs.
Workflow Philosophy
Phabricator's workflow involves creating 'Diffs', which are equivalent to pull requests but typically involve a single commit. It allows for per-commit review units and forming a conceptual stack of changes for review.
Sapling aims to streamline workflows by simplifying branching and merging processes, focusing on usability and scalability.
Code Review Process
Phabricator has historically leveraged client-side tooling to rewrite commit messages after submission, making it easier to track changes and associate them with code reviews.
In contrast, Sapling's approach and features for code reviews are not detailed in the provided documents, but it’s designed to integrate well with GitHub's code review systems.
Stack and DAG Representation
Phabricator can render complex directed acyclic graphs (DAGs) and supports the creation of parent-child relationships in its code review process, which is reflected in its user interface.
While not explicitly stated, Sapling's design is likely to support modern code review patterns, including stacking changes, as it is built to work on top of GitHub.
Community and Ecosystem
Phabricator was widely used and contributed to the developer community, inspiring other tools and workflows. It has served as an inspiration for tools like Graphite, which indicates its strong influence on current developer tools.
Sapling, while newer, benefits from the lessons learned from previous tools like Phabricator and seeks to provide a modernized experience for developers.
FAQ
**Is Phabricator still actively maintained? **As of June 1, 2021, Phabricator is no longer actively maintained. This decision was made after Phacility, the company offering paid support for Phabricator, discontinued its services.
**How does Sapling's approach to diffs and code review compare to Phabricator's? **Sapling's approach to diffs and stacked changes is influenced by the model established by Phabricator, which was one of the first tools to introduce the concept of stacked diffs. While Phabricator used a tool called Arcanist to submit diffs, which by default did not construct multiple Differential revisions for each commit, Sapling has been designed to work with modern workflows and is likely to have its own methods for handling diffs and code review.
**Can Phabricator handle parent-child relationships in diffs like Sapling? **Phabricator, through its tool Arcanist, by default collapsed all Git commits into a single Differential revision and did not construct parent-child relationships for them, which meant there was no stack to render in the way modern tools might handle them. It is unclear if modern versions of Arcanist supported more advanced stacking, but custom tools had to be developed to work around these deficiencies.
**What was the typical workflow for using Phabricator? **The typical Phabricator workflow involved working directly on top of the master branch and using the command line tool to create a 'Diff' for each commit, which served as the equivalent of a pull request. Updates were made to the single commit in place, and once reviewed and approved, the Diff could be 'landed' onto the remote master branch.
**How do the philosophies of Sapling and Phabricator differ? **Phabricator was part of a suite of tools that helped organize and display diffs, and supported developer workflow actions like creating diffs and merging them back to the main branch. It focused on a centralized code review process. Sapling, while not explicitly detailed in the source document, is likely to have been influenced by the ideas from Phabricator but is designed with an emphasis on integration with Git and modern code review practices.
**Did many companies use Phabricator, and what has happened since it is no longer maintained? **Phabricator was used by more than 200 companies in 2020, including notable tech companies like Asana, Dropbox, and Pinterest. However, with the discontinuation of support, many of these companies have moved off of Phabricator. Some, like Uber and Twitter, maintain their own versions of Phabricator due to having dedicated infrastructure teams.
Conclusion
Comparing Phabricator and Sapling reveals two different philosophies addressing the needs of code review and version control. Phabricator, with its historical significance and once widespread adoption, offers a classic approach with a strong focus on diffs and individual commit reviews. Sapling, however, is positioned as a modern tool that aims to streamline and simplify the version control process, especially for large-scale projects.