-
Notifications
You must be signed in to change notification settings - Fork 696
Hackathon 2016
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.
Mostly Cabal Hell and related.
-
Package collections in
cabal-install
andhackage-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
-
Improve
cabal new-build
TODO: Update this sectionThis is the other major plank in the solution to cabal hell. This is not a neat self-contained project. There are lots of parts to this project and it will require people to work together.
TODO: better intro, link Edward's blog post Link to https://github.com/haskell/cabal/issues?q=is%3Aissue+is%3Aopen+label%3A%22cabal-install%3A+nix-local-build%22
- Get the new-clean PR into shape
- Building on top of the
cabal new-build
code to supportcabal {run,test,bench}
etc. - 'cabal new-haddock' (link to relevant ticket)
- A link to Galois meta tracking ticket https://github.com/haskell/cabal/issues/3577
- UX design for user-wide environments ('cabal new-install') https://github.com/haskell/cabal/issues/3737
- UX design for 'cabal new-update' (index freezing by default, interaction with cabal.project.freeze) https://github.com/haskell/cabal/issues/3832
- 'cabal new-install' for binaries
- Test Duncan's ghc-environments PR (use GHC 8.0.2 snapshot)
- https://github.com/haskell/cabal/issues/3883
- https://github.com/haskell/cabal/issues/3741
- https://github.com/haskell/cabal/issues/3730 (related to GHC environments, see extra-packages feature)
- https://github.com/haskell/cabal/issues/3401 (deprecate sdist hooks, use stack code as reference, but use Cabal's file globs)
- Integration tests for new-build (e.g.: new-build everything on Stackage) https://github.com/haskell/cabal/issues/3322
- Go through the remaining issues in https://github.com/haskell/cabal/issues/3104 (difficulty: moderate)
- Add support for git/darcs/... dependencies https://github.com/haskell/cabal/issues/2189 (makes sense to start with tarballs)
-
Cabal documentation.
Cabal's user guide [got quite a bit better
-
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.
-
New AST for .cabal files (not an easy one!).
Builds on the new parser.
-
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.