Skip to content
benmachine edited this page Apr 3, 2013 · 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.

Resources for developers

General information:

For asking questions:

  • The development mailing list.
  • The #hackage IRC channel on Freenode.

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.