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.

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.

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

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.

Testing: all patches that go into GHC must first pass validation, which ensures that a basic build works and the regression test suite passes.

The policy on validating patches, and how to perform validation, is at: Testing Patches.

Details about the regression test suite, and how to use it are at: Running Tests.

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.

Old stuff

Using Darcs: Our conventions and some useful tips for using darcs are here: Using Darcs.