[darcs-users] old-fashioned repository support in darcs 2.8

Guillaume Hoffmann guillaumh at gmail.com
Mon Nov 15 23:48:29 UTC 2010


Hello,

I'd like to bring up again the discussion on old-fashionned (OF)
repositories support in darcs.
We discussed this topic two months ago, in late August. Towards the
end of the discussion, Eric wrote:

http://lists.osuosl.org/pipermail/darcs-users/2010-August/025063.html

The discussion happened when Darcs 2.5 was not out yet, so as of now
we still don't have a clear roadmap for Darcs 2.8 (May 2011) on that
topic.

We are not clear about:

* to what extent OF repositories are going to be supported in Darcs 2.8
* what kind of changes should we do to the codebase to reach that
proposed support

Possible options for OF support in 2.8 are:

    1) Keeping full OF support
    2) Keeping all read-only support
    3) Keeping only darcs optimize --upgrade support

So here's my stance on the topic (more motivated than my previous
post): keeping full support for OF repositories is bad because it
makes us focus on problems of the past while we should better think
about the place of darcs in a git-filled world. The code base is of
spaghetti-like. We do not want our users to use a repository format
that is subject to more data corruption than hashed repos. Moreover,
the darcs UI looks much better after removing writing support for OF
repos: for instance removing the ability to make ``darcs init --old``
yields more symmetry to this command: we only choose between
initializing a repo with darcs-1 semantics or darcs-2 semantics
(currently the flags for that are --hashed and --darcs-2, the first
one could be renamed --darcs-1).

However I now think OF repositories should be supported for read-only
operations. As Simon said on IRC: "I don't think I'd want future darcs
to stop reading random darcs repos around the net".
So darcs should continue being able to get and pull from OF repos. But
that's fine code-wise, it already does it and in the future we could
just consider OF repositories as repositories that have broken hashed
pristine and we should be able to have a good failback behaviour for
these ( http://bugs.darcs.net/issue1976 ).

My proposal on how we hack our way towards this objective is to make a
series of easily reviewable patches, that remove features associated
to OF repositories one after another. The following commands can be
successively removed: optimize --relink-pristine, get --old, put
--old, init --old, and then (one by one) all commands that write into
repositories. Whatsnew and diff should be deprecated for OF also:
although they are read-only, they require a pristine.

Lastly, I do not think we should commit to the contract "if, by 2.8,
hashed repos are not as fast as OF repos we should put back full OF
support in the code". We are a volunteer project, so this would be a
bummer to arrive at such a move. We do not know now if someone is
really going to fix the performance regressions. I feel that we are
burdened by this promise. People need to understand that we are not
going to delete all darcs sources and binaries of version < 2.8 from
the Internet and their computers, and during the time lapse between OF
deprecation in the codebase and them being forced to switch to the
hashed format, great things will most probably happen to darcs!

Guillaume

ps :I've put on the wiki a page to keep track of the discussions
happening: http://wiki.darcs.net/Ideas/OFsupport
When a consensus is reached on that discussion, the page
http://wiki.darcs.net/Roadmap should also be updated.


More information about the darcs-users mailing list