New Hackage Server Features

Updating to announce a whole bunch of new features in the latest redeploy, with a few yet to come. This release includes a bunch of work from GSoC students, as well as a few other big-ticket items, and some various small fixes.

The biggest highlight is reverse-dependencies, which are finally here after years of attempts. Janus Troelsen re-thought the problem space to make an order-of-magnitude improvement in memory footprint, which means that we can finally provide this much requested feature.

A fun and noticeable change is that hackage now has a “night mode” color scheme enabled when your browser is set to request it. Thanks to Peter Becich for that!

Also included is a ton of GSoC work from Alias Qli and Ondřej Kubánek (though the latter’s work on a “hackage-rank” feature has not yet been merged). Notably, hackage now has an improved user account management page (reach it from User accounts | Hackage). You can now self-update your name and email address, and even more excitingly, opt into notification emails. You can now request notification when a maintainer is added to a package you maintain, a metadata revision is performed, a tag is proposed to be added, or when a docbuilder run finishes. For now, you’ll need to opt-in explicitly, since its not clear if existing hackage users will want to start getting a bunch of new emails all of a sudden.

Along with smaller bugfixes, and the usual dependency bumps and CI fixes (thanks Andreas Abel and Peter for all your help on that!) here are some other changes of note:

  • improvements to the sitemap to help guide google search (and searchbox metadata)
  • improvements to rendering of markdown
  • allows syntax from cabal 3.8
  • maintainers can disable tests being run by the docbuilder
  • display logs for docbuilder-run tests
  • Updates to accepted licenses (allowed both from osi and fsf lists)
  • better warnings on deprecated versions
  • maintainers listed on package pages
  • captcha for user registration (should reduce spam registrations we get hammered with)
  • remove filtering 00-index for cabal version < 2.0 hack (not a big deal, but makes some weird corner cases less weird)
  • Add lastVersion in browse listings
  • quickjump now works on candidate pages
  • paging enabled for recent uploads and revision pages

Other various contributors to this release are Hécate Moonlight, Matthew Pickering, bodigrim, Gautier Di Folco, and Levi Butcher


Thanks a lot for this deployment!


Amazing stuff! Thanks very much to everyone involved. I particularly like the reverse dependencies and night mode.

1 Like

This is great stuff - thank you! I’m looking forward to giving the updated package candidates stuff a spin, and the reverse deps.

Just one last thing voice

As a final note, I just realized while updating the docbuilder that while it is still somewhat janky, and the UI is lacking, I believe that it now builds documentation for candidates!

Is there any way to opt out of Hackage’s dark mode? I like dark modes, all my desktop applications implement a dark mode, as are most of the websites I visit, but Hackage’s dark mode is incomplete and hinders readability in some places.


1 Like

Chrome at least has a setting for it: How to Enable/ Disable Dark Theme on a Per-Site Basis in Google Chrome | Beebom

Also, if anyone would like to help improve the stylesheet to handle the missing cases for hackage’s dark mode, that would be very appreciated!

My mistake on the CSS oversights, here are some fixes:

How do you enable Quick Jump on Hackage running locally? I am trying to test this: [WIP] Night mode quickjump fix by peterbecich · Pull Request #1163 · haskell/hackage-server · GitHub



Good catches! Peter jumped in and patched up the issues you found. The fixes are now live, assuming you force a reload of the css. We still will need to polish the dark mode a bit going forward, but the most problematic stuff is at least all solved.

1 Like

Fantastic, my thanks to the both of you.


Edit: deleting this post because I just realized it was a response to a comment from over a year ago and not worth reopening.

Discourse confuses me by highlighting new-to-me discussions as “recent” just because somebody posts a new comment on it. :sweat_smile: (Maybe we shouldn’t resurrect old threads very often)

Is there any way to place the thread’s details:

at the very beginning, so one doesn’t have to scroll through the original post just to see it?

What’s the right setup for cabal-install < 2.0 now? I have some CI jobs with GHC 8.0 / Cabal 1.24 (coming with an old, 32-bit Ubuntu), which fail after the last changes to Hackage server, e. g., Update changelog for v0.11.4.0 (#534) · haskell/bytestring@0602eab · GitHub.

Upd.: After reading remove cabal > 2.0 restriction on files in the 00-index file? · Issue #1063 · haskell/hackage-server · GitHub I assume the answer is "cabal-install < 2.0 no longer works". That’s fine, I can update, just would be better to be a bit more explicit about it.

Yep, you got it. I just sort of decided that there’s no need to support cabal < 2 – even older ghcs are still supported by newer cabal versions, and the last ltses which shipped with it seem about to EOL (cabal 2.0 was released in 2017). And meanwhile the occasional confusion about the 00-index not containing all packages seems to come up far more often, especially as newer versions of cabal files become more frequent on hackage.

Bumping this thread to announce a new hackage redeploy. Some more notable changes:

  • Email notifications for revision upgrades – opt in to that and other useful notifications from your account management page linked from User accounts | Hackage
  • Bugfix for nonupdating “latest version” in package browse.
  • JSON endpoint for top downloaded packages
  • improved check for changelogs and readme files
  • uses cabal 3.10 – this should mean support for uploading multilibs is enabled!

Thanks to @andreasabel @peterbecich @Kleidukos @janus among others for the patches.


Please enable the new email notification (for dependencies going out of bounds) and let me know if there are any problems with it!

When the notification is enabled, the setting can be configured to not keep sending emails if the second highest version number also doesn’t accept the new dependency (see below). This should keep traffic to a minimum.


The email notifications for out of bounds packages is so nice. I used to rely on Stackage reports on GitHub but then I created an issue for a number of packages including one I maintained so I did not see that it went out of bounds.

1 Like

For those who prefer RSS to email, there is also


With the machinery on hackage now, we could probably calculate this there directly as well. PRs to do so would be very welcome!

Do you know of any good user-facing resources that describe multilibs? I think these have a lot of really good potential, but I think that we need to explain them well in order to get the most value.