Well-Typed and the Industrial Haskell Group (IHG) are very pleased to announce that Hackage 2 is now powering the official Hackage server.
Read on for an overview of the new features and what the IHG has been doing to help, and for details of how you can help to make Hackage 2 even better.
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 firstname.lastname@example.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.
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 new features page for more details on these, plus details of other features that are partially implemented or are in need of improvement.
Reporting problemsThere are site administrators you can contact and there is an issue tracker. Please report bugs in the site issue tracker. For issues with accounts or permissions please contact the administrators by email at email@example.com
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 github 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.
Exploring the site
The header bar on each page has the most important links:
- The Search box lets you search for packages by keywords that appear in the package name or description.
- The Browse page lists all the available packages.
- The What's new page lists recent additions (also available as an RSS feed).
- The Upload page lets you upload packages or package "candidates".
In addition to the main package list page, there are a few other package indices:
- All tags
- All packages by name, with tags
- All packages by download
- All packages with preferred versions
- All deprecated packages
- All candidate packages
The new server has an automatically-generated site api. This is mainly intended as documentation for people working with the server, rather than as a user-oriented site map, but it can be interesting to see exactly what is available. This includes important resources like the machine-readable index of packages, used by clients like
The old Hackage server is still available for a while in case anyone needs it. To use
it with cabal-install, change your
~/.cabal/config file, comment-out the existing
remote-repo line near the top of the file and add in a new one