Working on GHC
GHC is a BSD-licensed open-source project, and we welcome your help in making it better. This page and the side bar on the left have pointers to information you'll need.
- Using Git: read how to use git with GHC. Information about our submodule setup is in WorkingConventions/Git/Submodules, and some useful Git tricks are in WorkingConventions/Git/Tricks.
- Using Phabricator: we use Phabricator as a code review tool; here are our Phabricator guidance notes.
- Releases and branches: Our conventions for making releases and how the branches are managed: Releases
- Useful tools: Various tools which exist to make working on GHC more pleasant.
- Using the Bug Tracker: see Using the Bug Tracker
- Coding style: When you are editing GHC's source code, please follow our coding guidelines:
- Licensing: make sure you are familiar with GHC's Licensing. Unless you say otherwise, we will assume that if you submit a contribution to GHC, then you intend to supply it to us under the same license as the existing code. However, we do not ask for copyright attribution; you retain copyright on any contributions you make, so feel free to add your copyright to the top of any file in which you make non-trivial changes.
- For boot libraries: GHC ships with a number of boot libraries maintained outside of GHC itself. Maintainers of such libraries should read WorkingConventions/BootLibraries for guidance on how to maintain their libraries.
Tips and Tricks
- To have an easier time looking up tickets and searching trac, use the browser tips page to make your search and lookups for Trac tickets substantially easier.
- If you use Emacs, see Emacs for some useful stuff to put in your
- If you have lots of Haskell installations, you may find Edsko's blog post Comprehensive Haskell Sandboxes useful.