Skip to content
Francesco Gazzetta edited this page Jun 19, 2022 · 35 revisions

This wiki is for development of the Cabal project.

Cabal is a Common Architecture for Building Applications and Libraries in the Haskell programming language. It was originally the subject of a proposal by a team of influential Haskell implementors to unify the then-disparate methods for turning a collection of .hs files into a program that could be run. It consists of several components:

  • The Cabal package specification format, for writing files that contain metadata about a Haskell library or program, such as its name, version, author, build dependencies, etc.
  • The Cabal library, which parses files in the format of the same name and translates them into compilerspeak.
  • The cabal-install tool, which provides a nice interface for fetching packages from the package repository Hackage, and using Cabal to configure, compile, and install them.

Resources for users

The Cabal website has a bunch of documentation and related resources, including the user guide, and is probably where anyone interested in using Cabal should go for help.

Some things have been written sufficiently recently that they haven't made it into the guide yet:

Reporting bugs

We use the GitHub issue tracker for both Cabal and cabal-install.

Resources for developers

General information:

For asking questions:

  • The development mailing list.
  • The #hackage IRC channel on libera.chat. Many Cabal developers also hang out in #ghc.
  • We have a Slack team, which is primarily used to get build notifications for pull requests. To get issued an invite, fill in your email at this sign up page. Contact @ezyang if you have any problems with these.

This wiki

Information that should be attached to development of the Cabal library and cabal-install tool goes on this wiki. Information about how to use Cabal or cabal-install should end up in the user's guide, but drafting something to go in there counts as development information, so goes on the wiki :)

If you want a quick chat, go to IRC. If you want a thoughtful discussion, go to the mailing list. If that discussion proves fruitful, write a wiki article about it! Much wisdom is stored in ML archives but inscrutable to the casual observer; wiki articles are much easier to find and update.

GitHub wikis are built on Gollum, and information on how to use them is detailed in its README. They support a variety of markup languages, but for consistency's sake, we should probably stick to using Markdown everywhere.