Working on GHC
GHC is a BSD-licensed open-source project, and we welcome your help in making it better. This page has pointers to information you'll need.
- Read the GHC Newcomers page, dedicated to helping newcomers in getting started and tackling their first bugs.
- Register an account on this GHC Trac, so that you can edit pages. Editing advice is in the "Wiki" links in the green sidebar on the left of every page
- Subscribe to the ghc-devs mailing list. This list is the place to discuss ongoing development of GHC. ghc-commits gets an email for every commit that is made, and reports generated by the automated nightly builders go to ghc-builds. Additionally, trac ticket discussions can be followed in ghc-tickets. These lists are high volume, so you probably want to at least filter them into separate folders/labels.
- Talk to other members of the GHC Team.
- Read the building guide (link always in the left hand margin) to learn how to build and test GHC.
The following pages guide you step-by-step through making a contribution:
- Fix a bug in GHC. You can see all open bugs by clicking on "All bugs" in the left margin of this page. At the top of the list is a filter you can use to refine your search. Also check out the (currently stalled) GHC bug sweep. Perhaps you can un-stall it.
- Add a new feature to GHC. You can see all open feature requests by clicking on "All bugs" in the left margin of this page. At the top of the list is a filter you can use to refine your search.
- Using Git: Our conventions and some useful tips for using git are here: Using Git, and information about our repository setup is in Repositories.
- 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
- Using the Bug Tracker: see Using the Bug Tracker
- Coding style: When you are editing GHC's source code, please follow our coding guidelines:
- Testing: all patches that go into GHC must first pass validation, which ensures that a basic build works and the regression test suite passes.
- 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.
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 .emacs file.
- If you have lots of Haskell installations, you may find Edsko's blog post Comprehensive Haskell Sandboxes useful.