On Wed, Feb 5, 2014 at 2:00 AM, Bjarki Geir Benediktsson <bjarkigeirbenediktsson@gmail.com> wrote:
Hi
I  have a suggestion for a project for Google Summer of Code 2014


Currently Cabal-Install is not a fully featured package manager and can be improved considerably by adding package management features to it.

Features that could  be implemented include:
      Interaction with ghc-pkg to be able to modify (upgrade/downgrade) or remove packages

This would be handy -- ghc-pkg / cabal sandbox hc-pkg help a lot here already, though, and aren't so bad to use. It would be nice, though.

      Support for having multiple versions of the same package installed

I think there is a good bit of on-going work to support multiple versions of one package in the same package db, and it's significantly less of an issue with sandboxes. My understanding is that this is significantly more challenging than it seems.
 
      Automatic installation of build tools when needed (Alex, Happy)

Rather than implement tool installation directly, my preference would be to solve this first:

https://github.com/haskell/cabal/issues/948

Then, once setup.hs has specific dependencies, write a simple EDSL / library that makes it trivial to conditionally install tool dependencies from within a custom build script.

I think the result would be much more generally applicable, and solve a number of other issues along the way.  It would also make it possible for anyone to prototype new cabal/cabal-install features without needing to distribute a new version of cabal/cabal-install.

--Rogan