Chris Martin

Submitting a pull request to GHC

When you find things incomplete or unclear in Haskell’s documentation, please fix them! I’ve submitted a handful of pull requests so far to make tweaks to the API docs. GHC seemed intimidating at first, but I’ve found the maintainers to be quite friendly.

GHC manages its code on a GitHub-like website called Phabricator, and I’m writing this short guide because Phabricator is unfamiliar to most of us.

Get the repo

Clone the GHC repository and its submodules:

git clone --recursive git://

Create an account

Before submitting pull requests, you’ll need to create an account at and upload your SSH public key.

Submit a PR

Once you’ve committed your changes to some local branch, use Arcanist to submit the PR. Arcanist will run some style checks that require Python, so you’ll need that installed as well.

You only need to learn one Arcanist command: arc diff.

Here’s a command to submit a PR to the master branch using Nix:

nix-shell -p arcanist python3 --command 'arc diff master'

Once your PR has been uploaded successfully, Arcanist will print a URL where you can go to look at the discussion on it.

I write about Haskell and related topics; you can find my works online on Type Classes and in print from The Joy of Haskell.