Looking for install scripts, extensions, libraries, or plugins for Phabricator or Arcanist? Have something you want to share? Add a link here.
//We imagine eventually having real support for listing and managing extensions and applications, see T5055 and T5447 for some discussion.//
IMPORTANT: This page is primarily community-maintained and things linked here have not been vetted by the Phabricator upstream. They may not work at all, or may destroy all your data forever. Use these resources at your own risk!
NOTE: When creating a resource for sharing, please consider specifying a license; Some users are pretty pedantic about this, and they will not be able to use your gift without one.
= Linters and Test Engines =
- **arcanist-extensions**: additional testing and linting engines.
- Source: https://github.com/tagview/arcanist-extensions
- Features:
- Multi test engine: run tests using multiple test engines
- RSpec test engine: Ruby's RSpec (version 2 and above) test engine
- Rubocop lint engine: run the Rubocop linter on your Ruby projects
- TAP test engine: run any TAP compatible testing tool
- **arcanist-support**: additional testing and linting engines used by MET Norway
- Source: https://github.com/metno/arcanist-support
- Features:
- arc-install, arc-uninstall. arc-upgrade: Scripts to simplify installation of arcanist for users
- arc-clean: Script for deleting patch branches
- SBTTestEngine: Runs unit tests for Scala using SBT
- Foodcritic Linter: Runs Foodcritic for Chef cookbooks
- Google CppLint Linter: Fixed version of the Arcanist CPP linter
- Scalastyle Lint Engine: Runs Scalastyle linter
- **arcanist-external-json-linter**: external linters with first-class messages
- Source: https://github.com/bgamari/arcanist-external-json-linter
- A linter type allowing external linters to produce JSON-serialized violation messages
- **clang-format-linter**: A linter for C/C++/Objective-C.
- Source: https://github.com/vhbit/clang-format-linter
- **swift-linter**: A linter for Swift code.
- Source: https://github.com/vhbit/swift-linter
- **xcode-unit-engine**: A unit test engine for Xcode projects.
- Source: https://github.com/google/arc-xcode-test-engine
- **proselint**: A linter for prose.
- Source: https://github.com/google/arc-proselint
- **arcanist-elixir-support**: Linter and unit testing engines for Arcanist
- Source: https://github.com/tolbrino/arcanist-elixir-support
- Open integration tasks: T9796, T9797
- **arcanist-android-linter**: Linter for Android xml and java based on gradle
- Source: https://github.com/DheerendraRathor/Arcanist-Android-Lint
- Features:
- Complete integration of checkstyle, pmd and findbugs
- A default configuration of Google checkstyle is included, it can be edited to include custom rules
- **arcanist-linters**: A collection of additional linters in use at [[ https://www.pinterest.com/ | Pinterest ]]
- Source: https://github.com/pinterest/arcanist-linters
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- Linters:
- Apache Thrift - Lints for errors in [[ http://thrift.apache.org/ | Apache Thrift ]] IDL (schema) files using the `thrift` compiler
- Go Vet - Uses the [[ https://golang.org/cmd/vet/ | Go vet command ]] to lint for suspicious code constructs
- Python Imports - Lints for illegal Python module imports
- Python Requirements - Ensures Python package requirements in [[ https://pip.readthedocs.org/en/latest/user_guide/#requirements-files | requirements.txt files ]] are sorted, unique, and pinned to specific versions
= Arcanist Workflows =
- **arcanist-owners**: Adds an `arc owners` command that displays file ownership information
- Source: https://github.com/pinterest/arcanist-owners
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
= Phabricator Extensions =
- **libphutil-haskell**: various extensions for Haskell.org, possibly useful to the outside world.
- Source: https://github.com/haskell-infra/libphutil-haskell
- Features:
- Custom Remarkup: [PhabricatorRemarkupGhcTracRule](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/markup/engine/remarkup/markuprule/PhabricatorRemarkupGhcTracRule.php)
- Custom Differential fields (in our case, to link [Trac](http://trac.edgewall.org) and Phab): [DifferentialGhcTracField](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/differential/customfield/DifferentialGhcTracField.php)
- Custom Herald actions: [SetTaskEditPolicyHeraldCustomAction](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/herald/customaction/SetTaskEditPolicyHeraldCustomAction.php) and [SetTaskViewPolicyHeraldCustomAction](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/herald/customaction/SetTaskViewPolicyHeraldCustomAction.php), which allow you to automatically assign 'Editable by' and 'Visible to' policies, as Global Maniphest Herald rules. The primary motivation is being able to email an address like `security@phabricator.foobar.org`, and have all emails sent to this address to have private visibility/editability automatically.
- Various Chatbot extensions for IRC:
- Automated logging into Phriction wikis for users: [PhabricatorBotServerAdminLogHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotServerAdminLogHandler.php)
- Custom IRC handlers for various messages: [PhabricatorBotGhcTracHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotGhcTracHandler.php), and [PhabricatorBotMiscGhcHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotMiscGhcHandler.php)
- **libphutil-scrypt**: support for `scrypt` based password storage
- Source: https://github.com/haskell-infra/libphutil-scrypt
- WARNING: To be deprecated by D10387
- **libphutil-yubikey**: adds [[https://www.yubico.com/products/services-software/personalization-tools/yubikey-otp/ | Yubikey OTP ]] support for Multi-Factor Authentication (MFA).
- Source: https://github.com/thoughtpolice/libphutil-yubikey
- NOTE: See T8787 for more information.
- **libphutil-backblaze**: adds [[https://www.backblaze.com/b2/cloud-storage.html | Backblaze B2 ]] file storage backend. Useful if you want S3, but you're super cheap.
- Source: https://github.com/thoughtpolice/libphutil-backblaze
- **phabricator-azure**: adds Azure Active Directory / Office 365 authentication providers
- https://github.com/rebeccahughes/phabricator-azure
- See also: T5899, T4256
- **phabricator-mediawiki**: adds MediaWiki oAuth1 authentication providers. The repository also includes custom fields for user profiles and other misc. Wikimedia-specific extensions.
- https://github.com/wikimedia/phabricator-extensions
- https://phabricator.wikimedia.org/diffusion/PHEX/
- **phabricator-sprint**: Support for Sprints. Task points, Burndown charts.
- https://github.com/wikimedia/phabricator-extensions-Sprint - Maintained by WMF.
- https://github.com/bluehawk/phabricator-sprint - Original codebase.
- See also: T5051
- **phabricator-sparkpost**: adds an SparkPost outbound email adapter.
- Source: https://github.com/hiddeco/phabricator-sparkpost
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- **AddSubscribersFromJIRAIssuesHeraldCustomAction**: Herald action to CC all watchers from all JIRA tickets marked on a Revision.
- P2001
= Conduit Libraries =
- **python-phabricator**: Python binding for Phabricator Conduit API
- Source and instructions: https://github.com/disqus/python-phabricator
- **go-conduit**: Go package for Phabricator Conduit API
- Docs (and import path): http://poehls.me/go-conduit
- Usage examples are in the README: https://github.com/jpoehls/go-conduit
- **gonduit**: Another Go library for Conduit
- Source and docs: https://github.com/etcinit/gonduit
- **Phabricator.Conduit**: C# library for Phabricator Conduit API
- Source: https://github.com/hach-que/Phabricator.Conduit
- **Phabricator PHP API**: Alternative PHP library
- Source and Documentation: https://github.com/Zolli/Phabricator-PHP-API/
= Integrations =
- **phabulous**: A Phabricator bot for Slack
- Source: https://github.com/etcinit/phabulous
- **Phabricator Jenkins Plugin**: Play telephone with Jenkins while it builds your code
- Homepage: https://wiki.jenkins-ci.org/display/JENKINS/Phabricator+Differential+Plugin
- **git-phab**: Git subcommand to support git-flow-style workflows
- Repository and README: https://phabricator.freedesktop.org/diffusion/GITPHAB/
- **Phabricator on Microsoft Azure**: Automated deployment of phabricator on a Ubuntu 16.04 VM in Microsoft Azure
- Repository and README: https://github.com/Azure/azure-quickstart-templates/tree/master/phabricator-on-ubuntu
= Migration =
- **github-wiki-to-phriction**: Python tool for migrating a GitHub wiki to Phriction
- Source: https://github.com/aaron11496/github-wiki-to-phriction
- **ManiphestIncludeCustomFieldsExcelFormat.php**: An additional Excel export format which will include a task's custom fields
- **//Read the large comment at the beginning of the extension to understand its hazards/limitations//**
- Source: https://github.com/neandrake/phab-utils/tree/master/extensions
- **Remarkup-ed messages**: Translations of messages from popular (Java) tools into Remarkup.
- Currently Findbugs, soon PMD?
- https://github.com/avivey/remarkup-java
= Translations =
- Chinese: https://github.com/WuJiahu/phabricator/tree/master/src/infrastructure/internationalization/translation
- German/ Deutsch: P1792 (mainly Maniphest)
= Security =
- **SELinux policies** for Phabricator/Arcanist/Libphutil
- https://github.com/vinzent/phabricator/tree/master/resources/selinux
= Packaging =
See also T4200
- **RHEL/Centos 6 packaging**: integrated RPM management for Phabricator
- https://github.com/vinzent/phabricator
- See also: D10509
- **Nix packages for Arcanist**: //official// Nix and NixOS packages for the command line tool.
- See [the source in nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/misc/arcanist/default.nix).
- Updated bi-weekly (usually).
- Can be installed via `nix-env -i arcanist`
- **Bash Script to Install Arcanist**: A script written in shell commands to auto install Arcanist command line tool.
- See P1887
- Run by `bash filename.sh` to install in `~/.arc/`. Or run as `bash filename.sh -d /path/to/install/dir` to pass custom directory for installation
- **Chef Cookbook for Phabricator**: Chef cookbook for installing and configuring phabricator
- Available on [supermarket.chef.io](https://supermarket.chef.io/cookbooks/phabricator)
- See [the source on github](https://github.com/metno/cookbook-phabricator).
- Contributions are welcomed.
- **Packages for Fedora, EL6, EL7**
- [[https://copr.fedorainfracloud.org/coprs/tflink/phabricator/|Repositories in Fedora COPR]]
- [[https://bitbucket.org/tflink/phabricator-dist|Spec files, utility scripts, systemd unit files, etc.]]
- Packages are usually updated with new snapshots of the stable branches every couple of weeks
- EL6 and EL7 packages are built and updated but I don't use or test them
= Administration Scripts =
- **CentOS 7** Service management/upgrading (with backups) and configurations for SSHD
- https://github.com/neandrake/phab-utils
- **Ubuntu / Debian** Service and SSH daemon management
- [[ https://github.com/Zolli/Phabricator-Daemons | Installation and usage ]]
= Symbols =
- P1785 Symbol update script from local clone of a repository.
- See also [Symbol Docs](https://secure.phabricator.com/book/phabricator/article/diffusion_symbols/)
= Training =
== On-boarding ==
- P1876 Script to verity the users are set up correctly with arc, arc token, and SSH keys.
- Short [Presentation](https://docs.google.com/presentation/d/1BNdNMzuVYambeybgVETlTynU74uK47SKXrq7NzgUPFE) for reviewers-only (So they remember to hit submit).
= Walkthoughs =
- [[community_resources/building_xhpast_on_windows | Building XHPAST on Windows]]
- [[community_resources/configuring_a_windows_build_agent_for_drydock | Configuring a Windows build agent for Drydock]]