
While I love Haskell it's packaging system have some problems - especially with parsec. Currently I'm not able to install an practically anything using cabal due to version mismatches (or at least packages linking to both version of parsec). I found the following problems in various cabal packages (the examples are only examples - please do not be offended): - The constraints are too loose. It is written that package works with '>0.6 && <1' but in 0.8 the API has been changed (example of tagsoup & hxt. Fixed hxt versions depends on ghc 6.12... and ghc 6.10 if you change 2 lines in cabal file) - The constraints are too tight. It is written that package works with 'parsec <3' but it can run with 3.0 and 3.1 (a lot of packages) Additionally: - Monomorphism restriction & autodetection of types may cause that extending interface (such as changing signature from a -> IO a to MonadIO m => a -> m a) may break some programs - You cannot change the restrictions on already submitted programs. If I figure out that due to minor change my package does not work with parsec 3.1 I can push the new version with fix but there is no way to mark package on hackage as 'this version is not compatible with parsec >=3.1' I understand that it is not problem only with haskell/cabal but also with many other packaging systems - especially those language-specific. I understand the need of ability of changing API (and haskell-specific problem what constitutes as API change). However I hope that some improvements are possible. Best regards PS. I understand that content may be flame-gen. I am sorry in advance if such circumstances happen. However I believe that possible improvements in process are worth the risk.