Skip to content

Hackathon 2016

Mikhail Glushenkov edited this page Oct 8, 2016 · 21 revisions

This is a page to collect ideas for Cabal/Hackage hacking tasks/mini-projects for the Haskell eXchange Hackathon 2016. It is an updated version of a similar page for the 2015 infrastructure hackathon.

Please use the #hackage IRC channel on freenode for online discussions.

Feel free to expand individual bullet points into full (linked) pages or tickets/issues.

Strategically important projects

Mostly Cabal 2.0 and related.


  • Package collections in cabal-install and hackage-server

    The idea here is to support package collections directly in our infrastructure. Currently package collections like Stackage are implemented indirectly by specially crafted cabal.config/cabal.project.freeze files. Collections are also to be distributed via hackage, allowing anyone to define and distribute collections.

    A specification was posted to the libraries list recently. There is also some prototype code available for cabal-install. The cabal-install code adds solver support and allows for set-like operations on collections. Nothing has been started yet for hackage-server.

    This is an important feature since package collections are one of the two big solutions to cabal hell. This is not a huge project. There's probably enough for two people to work on the client side and two on the server side.

Link to https://github.com/haskell/cabal/issues?q=is%3Aopen+is%3Aissue+label%3A%22meta%3A+easy%22


  1. Intro

  2. Tutorial, p.1 - how to use cabal-install to build and install existing packages

  3. Tutorial, p.2 - how to develop programs using cabal-install and write .cabal files -- basically, an updated version of https://wiki.haskell.org/How_to_write_a_Haskell_program.

  4. .cabal format reference

  5. cabal-install command reference

  6. cabal new-build chapter

  7. Appendix: Cabal spec (i.e., the Setup.hs interface)

    Anyone considering this should feel empowered to make decisions. You could decide to start from scratch with a new structure and just pinch material from the existing docs. You might want to fully split into tutorial and reference.

  • A new website for cabal-install/Cabal.

    Our website hasn't been updated in ages, so a facelift is long due. It doesn't have to be super-advanced, a simple Hakyll-based static page with a blog/news feed would suffice. Start by looking at the https://github.com/haskell/cabal-website repo.

    Improvements in the release process.

  • Rewrite of the .cabal file parser. #2865

    @phadej (Oleg Grenrus) is the person to talk to about this issue. Help him with merging, experiment with using the new parser instead of the old one, write tests.



  • Include-able Common Stanzas #2832

    Builds on the new parser+AST. Allow to reduce duplication by moving common definitions to include-able common stanzas which can then be included from other stanzas.