
On Fri, 2008-11-28 at 19:30 -0800, John Meacham wrote:
On Wed, Nov 26, 2008 at 07:20:12PM -0800, Jason Dagit wrote:
I spoke with the author of the fork a bit in IRC around the time it happened and my understanding is that: 1) John sternly objects to using cabal as the build system for JHC
This is a fairly silly reason to fork a project, especially jhc, for a number of reasons.
In general John is right in most of his criticisms of Cabal. As someone who works on Cabal I am well aware of the problems in its design and implementation. I happen to think that most of the problems can be fixed but it would be silly to suggest that the balance of advantages to disadvantages goes in its favour for every project. The advantages at the moment are greatest for small projects and are in a large part due to network effects. The major problems are in the configuration and build components. The configuration language is not quite expressive enough and the current configuration search implementation does not take advantage of the full expressiveness of the existing language. The build component obviously should be based on a dependency system, as make is, rather than IO () and ghc --make. There are lots of things we don't do well because of this. As I said, I think all these things are fixable. But it is a lot of work. We're currently limited by the amount of developer time we have. So I would like to encourage people to get involved. There are elegant solutions to the problems. It's actually quite fun working on the new bits and helping to drain the IO () swamp.
It is important to me that jhc be as widely accessible at possible. The number of machines './configure && make install' will work on outnumbers those that cabal install will work on hundreds or thousands to one.
I've sometimes wondered why nobody has made a generic configure.ac and makefile that wraps the Cabal build procedure. It seems pretty straightforward and it might help lower barriers for some users, especially, as John mentions, potential users from outside the community. Duncan