Well-Typed and the Industrial Haskell Group (IHG) are very pleased to announce that Hackage 2 is now available for public beta testing. The plan is to do the final switchover in late September, to coincide with ICFP.


Read on for details of how to help with the public beta, an overview of the new features and what the IHG has been doing to help.

Support from the Industrial Haskell Group

The IHG is a consortium of companies that rely on Haskell. The IHG members have funded the effort to get Hackage 2 up to feature parity and get it ready for the switchover. The IHG funded this effort because while the volunteer effort got us the "first 90%" of the way there (including adding a number of new features) there was still the "last 90%" to do to get it production ready.

The IHG members decided to fund Hackage 2 not just because they are good citizens, but out of enlightened self-interest. Hackage has over 5000 packages written by over 1000 people – including the world's best Haskell developers. This is a massive resource. The IHG members recognise that improvements to the tools and infrastructure that the community uses helps the community to produce more and better code. This is a benefit to everyone in the community – including the commercial users.

The IHG is keen to increase its membership so that more resources can be dedicated to improving the Haskell development platform. If your organisation relies on Haskell in some way then you may want to consider joining. See the IHG website for more details or contact info@industry.haskell.org.

Despite the help of the IHG in getting to this point, Hackage is a community project, and its success depends on the community maintaining and further improving the new server. The code is now on github so it is easier to contribute, and now that the server is live there is more immediate gratification for volunteers contributing fixes and new features.

Public beta

We would like to encourage you to take part in the public beta testing. We need help both from package authors as well as other users of the site.

Please report any problems you find using the issue tracker on the hackage-server github site.

We are mirroring packages from the old server (every 30min) so it is suitable to use as your main hackage server with some caveats: we are allowing package authors to upload (as well as doing the mirroring) so you may find a slightly different set of packages on this server.

If you are a package author then you are welcome to poke about and upload packages. We have imported user accounts from the old server (except for a small number of early adopters of the original server who will need to contact an administrator). Note that before we do the final switchover we will delete everything from the beta instance and do a fresh import from the old hackage server.

Configuring cabal-install

Edit your ~/.cabal/config file. Comment-out the existing remote-repo line near the top of the file and add in a new one like this:

--remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo: beta.hackage.haskell.org:http://beta.hackage.haskell.org/

New features

Though our main priority has been feature parity so that we can switch over, volunteers have contributed several new features, including better package search, a new site theme, improved security, the ability to fix package dependencies after a release, changelogs, and a REST-style interface.

See the beta site for more details on these new features, plus details of other features that are partially implemented or that are in need of improvement.

Contributing to the development

The code is on github and we welcome pull requests.

There are open tickets describing existing bugs and features that we want or that are in need of improvement. Help on any of these would be greatly appreciated.

There is some developer and user documentation on the wiki, including a quick guide to getting your own server instance up and running.

You can ask questions on the cabal-devel mailing list or on IRC in the #hackage channel on freenode.