On Mon, Mar 28, 2011 at 6:39 PM, Brandon S Allbery KF8NH <allbery.b@gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/28/11 21:29 , Ivan Lazar Miljenovic wrote:
> On 29 March 2011 12:19, Brandon S Allbery KF8NH <allbery.b@gmail.com> wrote:
>>> No, my meaning was that the reasoning of "I don't need to specify this
>>> as a dependency since it's part of the Platform" isn't sound since not
>>> everyone has the Platform.
>>
>> The point of the Platform is to provide a baseline.  So you *are* saying it
>> is pointless, because you want packages to confirm to a different baseline.
>
> My impression that the Platform was a baseline in regards to "what do
> I need to get started to develop with Haskell?", and not in terms of
> specifying dependencies.  After all, we still need to specify a
> dependency on `base' in .cabal files, even though it comes with GHC
> and other compilers (let alone the Platform)?

And it regularly causes annoying dependency issues, including causing cabal
to regularly do diamond dependencies.

Somehow the Haskell community is hellbent on repeating the mistakes every
other community learned about the hard way years ago, especially in the area
of dependencies (first refusing to acknowledge the need for upper dependency
limits, more recently trying to avoid adding an epoch — and I'm not counting
how packages included with the compiler but not recognized as such by Cabal
lead directly to Cabal introducing diamond dependency failures).  Is this
*really* necessary, or should those of us who've seen it before just sit
back and watch you all ram your heads against the same brick walls?

While more precise solutions do exist, cabal-dev solves this rather well in practice via sandboxing.  I have not run into the diamond dependency issue even once in several months of using cabal-dev regularly.  If I were still using plain-old cabal I would have hit it at least a few times and I probably would have blown away my ghc install a few times as well.

I think Ivan's point is: When we can be precise about dependencies we should be.  I agree that someone using the HP as a dependency might not realize that Alex is part of that.  Depending on the HP is a conservative overapproximation.  Once we have more precise information, even if redundant in this case, I think it's appropriate to document it as such.  The alternative to that, is for Cabal to know what "HP-2011.1" implies in terms of dependencies and to then be able to check for those things.  As I far as I can tell, Cabal does not function that way.

Just my $0.02,
Jason