Hackage update, part 3

Over the last few months, I’ve been working on various improvements to Hackage under the supervision of Duncan Coutts, as part of the Google Summer of Code. As it’s been a while since my last post, I thought I’d give a short summary of what I’ve done so far.

Documentation upload

Hackage has supported manual documentation uploads for quite some time, albeit through a rather obscure API. This is an important feature for packages which cannot be built automatically on the server.

My contribution was a simple HTML interface, which allowed for uploading and deleting documentation at the click of a button. Here’s how it looks (click to enlarge):

There is still one pain point, however. Building the documentation archive in the first place is quite error-prone; it would be nice if Cabal could automate the process. As that is a Cabal issue, not a Hackage one, it is out of scope for now – but would make a good project to tackle next.

Build reports

The next feature I worked on was build reporting. The Hackage build bot leaves logs for every package it builds, and it is often helpful to view them. Users can submit their own reports as well, though this is rare in practice. Unfortunately, as with documentation uploads, while the functionality was there, it was difficult to discover and use.

My contribution had two parts – a fancy build status indicator (click to enlarge):

and a pretty build reports view:

This part of the project ended up a bit broader than expected, as there was plenty of information to summarize. The gory details are on the wiki, for the curious.

Next steps

Overall, I’m happy with the work I’ve done so far, especially given that it’s my first time working on a project of this scale.

Next up would most likely be either package candidates or the tag system.