- What we gain by using darcs relative to other systems
simplicity. when it works.
- What problems we encounter using darcs, and whether they would be
addressed by any of the alternatives, or by darcs in the future
my main gripe with darcs is its lack of development:
- when i go beyond simple things, i encounter bugs
- the kind of bugs (stack overflow, going to the beginning
of history when operating on the last patch, partial repos
breaking every which way, speed, ..) indicates that the
usual open-source advantages don't apply to darcs: i
cannot be the first to encounter these issues, so they
should have been dealt with long ago
- when i encounter bugs, they are often known, but do not get fixed
- usually, there is a collection of duplicate tickets of the same
bug re-encountered over several months, none fixed
- even when the fix is obvious ("record; unrecord --last=1"
apparently used to work on partial repos, but was broken
in a generalisation attempt), there seems to be no-one
daring to go into darcs internals to do the fixing (David
Roundy mentioned that the code is hard to fix)
Let's be honest, if it weren't for certain problems with darcs we wouldn't
be considering a switch at all, so it's worth listing the ones that I
consider to be affecting us:
..
Generally, darcs doesn't benefit a lot from community support, which is a
shame. There aren't armies of people building tools and fixing bugs, so as
a result darcs has quite a few rough edges, many of which aren't deep, but
some of which are.
that, i think is the crucial point: there seems to be only one developer
working on the deep issues, several developers working on clearing
away the easier fixes and feature requests, and none working on core
issues that do not require redefining the theory behind darcs.
perhaps, the ghc project should issue a call for darcs volunteers on the
haskell list, or perhaps, some of the companies using ghc/darcs/haskell
are willing to fund some full-/part-time darcs maintenance. after all,
darcs has become an integral part of the haskell development tool chain.
darcs hacking is likely to be tricky, or else one could try to redirect
some of the shootout and euler problem fans to a collective darcs
hacking effort.. unless there is something very wrong with darcs patch
theory, most of the performance and partial repo bugs should yield to
profiling and code review.. it would have been nice if the last hackathon
had focussed on darcs.
if there is visible progress in darcs development, i would hope that
most of the bugs would disappear (or be replaced with new ones;-)
over a few months. if there is no visible progress in darcs development,
the issues are here to stay. currently, the latter looks more likely:-(
I suggest we start a wiki page, where we can fill in the points I made at
the top of this email, so I'll start one shortly. We'd also like to get a
general idea of how people feel about this issue - are you violently
opposed/in favour of switching? Care about any of the points I raised in
particular? Want to advocate one of the alternatives? Please follow up.
i'm in favour of staying with darcs, if it shows more signs of
being alive and responsive. if resuscitation fails, there
might be no choice. some darcs issues i've encountered:
- partial ghc repo (on windows):
- "record; send; unrecord --last=1" doesn't work
this is a major issue, and working around it with
diff and patch is both fragile and dubious
- annotate doesn't work
- darcs feels unsafe: when something breaks, there's
no guarantee that the repo survives
- complete ghc repo (not much experience with that yet):
- can't "get --complete" ghc or testsuite on windows
- checkpoints are lost with get
- annotate still doesn't work (takes forever, then fails with
stack overflow)
- no nice web interface to darcs repos (because too slow?)
- general
- "darcs-all pull -a" is too slow, and doesn't even use
full bandwith on a slow phone line
- "darcs send" puts everything into an attachment
- "darcs send -o file" needs to be online - why?
- darcs patch contexts are way too big
- inventories/ claim to be .gz files, but are uncompressed
- "darcs changes file --last=1" does not look for the last
change to "file", but for the last global change
- working with recent patches (the most common use
case for me) doesn't seem optimised - unless darcs
is investigating the whole repo history everytime, i don't
know why it is taking so long
- whether by choice or forced by darcs issues, ghc
development does focus around a central main repo;
when i send a patch, i unrecord it locally, and wait for
it to come back after being applied centrally;
perhaps darcs should make use of that, using the main
repo patch order as a reference for the majority of
patches, only weaving in the out-of-order patches
instead of assuming that any patch can be commuted
anywhere in totally unrelated local repo histories?
that might improve command response times,
reduce patch context sizes, and provide reference
points for buildbot reports. without losing the darcs
advantages in the situation in which they matter.
i might remember more once the wiki page is up, i've certainly
seen various darcs tickets created by ghc developers.
claus
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc