Phabricator's CLI: Arcanist

Arcanist was developed as an integral part of Phabricator, created by Phacility. Phabricator itself was initially developed at Facebook to support the company’s growing needs for tools that facilitated code review and project management. As the ecosystem expanded, Arcanist was introduced to offer developers a more efficient way to interact with Phabricator's Differential code review tool and repository hosting service, Diffusion, via the command line.

  • Initial Release: Arcanist was released as a complement to the web-based Phabricator suite, providing a CLI that streamlined developer tasks.

  • Development: Over time, Arcanist evolved with the community’s input, gaining new features and integrations, while maintaining tight coupling with Differential and Diffusion.

Arcanist boasts a robust set of features designed to facilitate various aspects of the development workflow:

  • Linting and Testing: Automated linting and unit testing help ensure that code submissions adhere to quality standards.

  • Differential Revisions: Simplifies the creation and management of code reviews.

  • Repository Integration: Offers seamless interaction with repositories, supporting various version control systems.

  • Scriptable Workflows: Enables custom scripts and workflows for complex operations, tailored to a team's needs.

  • A developer makes local changes and uses the arc diff command, which lints the code, runs unit tests, and then creates a Differential revision for code review.

  • Upon completion of the review process, arc land is used to merge the approved changes into the main branch.

  • In a continuous integration pipeline, arc commands are utilized to automate code submission and review processes, interfacing with other tools and services.

  • Developer Efficiency: Arcanist has been praised for its ability to streamline the developer's workflow, making it a favored tool among Phabricator users.

  • Learning Curve: Some users initially found the tool challenging to adopt due to its extensive range of commands and options.

  • Arcanist's approach to integrating code review and repository management via the command line has influenced other tools and platforms, highlighting the importance of efficient developer-centric tools in software engineering.

  • The scriptable nature of Arcanist allowed teams to tailor the tool to their unique processes, reinforcing the trend towards customizable dev tools in the industry.

Arcanist stands as a testament to the philosophy that developer tools should be powerful, yet flexible enough to adapt to varied and evolving workflows. Its history is closely tied to that of Phabricator, reflecting the dynamic nature of software development tools and the constant pursuit of efficiency and quality in code collaboration. Arcanist’s functionality, reception, and influence underscore its role in shaping the practices of modern software development.