[darcs-devel] announcing the darcs 2.0.0 release

Hello darcs users, I am pleased to announce the release of darcs 2.0.0! It's been a long time coming, and hopefully you will be pleased with the result. Notable new features include (in no particular order): * New ssh-connnection mode that dramatically improves connection times when darcs 2.0.0 is present on the server as well as the client. * New "hashed" format that improves darcs' robustness with regard to network or filesystem errors, and also allows for efficient (and safe) caching of patch data, greatly improving access times to a repository that you have had previous contact with--which is the common case of pulling, pushing or sending. This format allows patches to move back and forth with darcs1-format repositories, and is the recommended format (with an old-format mirror) if you do not wish to require darcs 2.0.0, but want to benefit from most of its improvements. * New "darcs-2" format, which features improved conflict handling, and also has all the benefits of the hashed format. Because this format features new and different semantics, it is not possible to interact with darcs 1.x, and care must be taken in switching to this format. It is the recommended format for new projects (although we haven't made it the default). * The --partial get is now replaced with a --lazy get when using hashed formats, and in fact if you forget to provide one of these flags on the command line, you can acheive a lazy get simply by hitting control-C after darcs prints a message suggesting you do this. Lazy repositories are identical to full repositories so long as you have a working network connection and the original repository is accessible, with patches downloaded as they are needed. When the original repository is no longer accessible, a lazy repository will behave like the old --partial repositories. * We have added support for pipelined http downloading via either libwww or a very recent version of libcurl. Neither of these is yet the default, but it is recommended that you try one of them if possible, as they greatly improve download times. * There is now a configurable global cache, which can help reduce network traffic if you have multiple local copies of the same--or similar--remote repositories. * I'm sure there are other new features, but this is all that comes to mind at the moment. BUGS There are numerous issues with the --darcs-2 repository semantics (see a discussion at http://wiki.darcs.net/DarcsWiki/DarcsTwo). In general, I believe the status is that anything you could do with darcs 1.x you can do with the darcs-2 semantics, but the high-level code hasn't been updated to take into account the new possibilities opened up by the new semantics. In particular, patch dependencies are much more complex. Alas, there has not been enough time (or sufficient contributors) to make the code take these complexities into account, and if you're clever you can reveal bugs. You have been warned. Darcs 2.0.0 contains some performance regressions when running with large repositories. It is possible that these regressions will be sufficient to prevent its effective use in some projects. If this describes your project--and the only way to know is to try it--then I recommend considering either switching to a different revision control system, or helping us to improve darcs. The former is certainly the easier path. If I knew how to easily make darcs dramatically faster, I would have done so. FUTURE DIRECTIONS FOR DARCS The existing model for darcs maintenance has been the use of two branches, a darcs-stable branch for well-tested changes, and a darcs-unstable branch for more experimental work. Each branch has a separate maintainer, so most patches will be reviewed by two maintainers before making it into a darcs release. This is quite a nice system. Unfortunately, it is also a rather labor-intensive process, and due to a lack of contributors, we've moving to a more streamlined process. Starting with the darcs 2.0.0 release, there will be just one central branch of darcs and only one maintainer: for now this is me, David Roundy. Moreover, I will be attempting to act as a much lower-profile maintainer than we've had previously. I will not be reading bug reports, reading the darcs-users email list or even the darcs-devel mailing list. I will only be reviewing patches that are contributed. I will not write up long user-friendly release announcements like this for future darcs releases. I will only be reviewing and applying contributed patches. What does this mean? It means that if darcs is to continue to improve, we need new contributors. If bug reports are to be read, responded to and bugs are to be fixed, we need new contributors. If darcs is to be made more efficient, we need new contributors. The new URL for the darcs repository is simply http://darcs.net. (Yes, this is a lame ending to the email, but I'm sending it anyhow, because I'm tired, and I've got to get this done.)