Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
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
Some things have been written sufficiently recently that they haven't made it into the guide yet:
We use the GitHub issue tracker for both Cabal and cabal-install.
Resources for developers
- Style guide – there isn't one yet, but there's a discussion about what there should be.
- Have a look at the content migrated from the Hackage Trac wiki.
- Making a release - step-by-step guide to making a release of Cabal and cabal-install.
- Potential Refactors - if you have some time to spare
For asking questions:
- The development mailing list.
#hackageIRC channel on Freenode. Many Cabal developers also hang out in
- 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.
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.