[darcs-users] enfranchising darcs! (update 1)

Eric Kow kowey at darcs.net
Tue Oct 21 08:52:27 UTC 2008

I have now pulled David's franchise patches into the stable branch.
Franchise is now available as an *optional* build method (you can
still use the old autoconf-based approach).

Why are we doing this?
The main reason for making this switch is that it makes building darcs a
lot easier on Windows.  At least two users (under Windows) have reported
that indeed the new build system makes darcs easier to build on Windows.

Do I need to install franchise?
Not yet! The autoconf-make based system will still be available for a
few weeks.  But if you would like to test out the new build system,
please install franchise and give it a whirl.  Buildbot updates shortly.

The following table sums up the transition that we will undergo over the
next few weeks.  For now, we still use the autoconf/make system, but as
we become more confident that the franchise-based one does everything
the current build system does, without any regressions, we will
eventually drop both autoconf and make.

  |              | now        middle      end       |
  | C lib        | autoconf   franchise   franchise |
  | checking     |                                  |
  | Haskell lib  | autoconf   franchise   franchise |
  |checking      |                                  |
  | building     | make       make        franchise |

Note that our Setup.hs file and the franchise build system are evolving
together.  So if you want to help test the franchise-based build system,
you will need to darcs get http://darcs.net/repos/franchise and probably
update your local copy from time to time.

Isn't there some kind of debate about this?
Indeed, there are many people who would prefer that darcs used the Cabal
system instead of franchise.  Most of us from both sides accept (if
grudgingly) that some mixture of franchise and Cabal is necessary; the
question is just to what extent we use either of the libraries.

The following table compares the current state of affairs with two
prototypical mixtures that we could aim for: the "David" mixture uses
franchise for everything, but allows provides a darcs.cabal file so
for packaging and tools like cabal-install.  The "Don" mixture uses
Cabal to do everything but uses franchise just to check for C libraries.

  |               | old        David       Don       |
  | overall       | make       franchise   cabal     |
  | framework     |                                  |
  | C lib         | autoconf   franchise   franchise |
  | checking      |                                  |
  | Haskell lib   | autoconf   franchise   cabal     |
  | checking      |                                  |
  | building      | make       franchise   cabal     |
  | packaging     | -          cabal       cabal     |

I hope that the following summary does justice to everybody's point of
view.  Bias warning: I personally favour a more Cabal-oriented mixture,
but I also intend to fully support the franchise transition.

 * C libraries.  We cannot get away from using something like
   franchise at the moment, because we need some sort of autoconf
   replacement to check for functionality in C libraries.
 * Concerns about maturity.  Don points out that build systems
   are a time-sink (Cabal took 6 years to get to its current state).
   David thinks that by limiting ourselves to the problems that are
   relevant to darcs, we can get away with a lot less development.

 * Backward-compatibility.  David wants to avoid the situation where
   new versions of darcs have different dependencies than older
   versions of darcs solely because the contemporary GHC version has
   changed.  Don points out that this is not the case with GHC 6.10
   (only 4% of packages break).
 * Forward-compatibility. David wants to ensure that already released
   versions of darcs will build with a future version of GHC.

 * Matching the Cabal interface.  Franchise now matches the familiar
   Cabal (command line) interface.  You can even install darcs using
   cabal-install cabal's command.

 * Maintaining more than one build system.  Jason thinks we should
   just support all three systems because people will want Cabalisation
   anyway.  Trent and David feel that it would be better to focus our
   attention on a single build system.

 * More than one version of Haskell packages.  Ben pointed out that if
   you have two versions of parsec, franchise could just pick the wrong
   one (parsec 3 instead of parsec 2).  David thinks this a matter of
   refining the API check.  Simon points out that there is also the
   diamond dependency problem to worry about.

Anyway, that's all for now.  Please shout if you have any questions or
complaints.  Thanks, everyone!

Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
Url : http://lists.osuosl.org/pipermail/darcs-users/attachments/20081021/d5af7fa0/attachment.pgp 

More information about the darcs-users mailing list