% Darcs-ED.tex
\begin{hcarentry}[updated]{Darcs}
\label{darcs}
\report{Eric Kow}%05/13
\participants{darcs-users list}
\status{active development}
\makeheader

Darcs is a distributed revision control system written in Haskell. In
Darcs, every copy of your source code is a full repository, which allows for
full operation in a disconnected environment, and also allows anyone with
read access to a Darcs repository to easily create their own branch and
modify it with the full power of Darcs' revision control. Darcs is based on
an underlying theory of patches, which allows for safe reordering and
merging of patches even in complex scenarios. For all its power, Darcs
remains a very easy to use tool for every day use because it follows the
principle of keeping simple things simple.

Our most recent release, Darcs 2.8.4 (with GHC 7.6 support), was in
Februrary 2013.  Some key changes in Darcs 2.8 include a faster and more
readable \texttt{darcs annotate}, a \texttt{darcs obliterate -O} which
can be used to conveniently ``stash'' patches, and hunk editing for the
\texttt{darcs revert} command.

% WF: update on rebase?
Our work on the next Darcs release continues. In our sights are the
new `darcs rebase` command (for merging and amending patches that would
be hard to do with patch theory alone), the patch index optimisation
(for faster local lookups on repositories with long histories), and
the packs optimisation (for faster darcs get).

This summer we have been lucky to get a chance to work on not just one,
but \emph{two} Google Summer of Code projects.%
\footnote{We participate in the Summer of Code under the Haskell.org
umbrella, with an special agreement with Google to have an extra
slot allocated for the purposes of Darcs work. This year, one of the
Darcs related submissions was also selected in addition to the Darcs
slot}
Our projects this year were on improving the local patch recording
experience (Jose Neder), and the Darcs hub (BSRK Aditya).

For the work on patch recording, Jose Neder brought three major
improvements to the Darcs user interface: performance improvements to
darcs whatsnew on large changes to files; the use of the patience diff
algorithm, making diffs much more reflective of human intention; and
automatic detection of token replace and file-move operations, resulting
in much patches that take better advantage of Darcs' patch theory.

As for the Darcs hub project (the Darcsden instance running on
\url{http://hub.darcs.net}), BSRK Aditya has brought us a series of
now live changes that make the hub easier to get up and running with.
OAuth support means that users can now log in with their GitHub or
Google accounts avoiding the need to create yet-another-password.
A handful of nice new features make the site more useful than just
a repository store: file edit for convenient quick edits, repository
compare and patch bundle support for enhanced collaboration with forks,
changes/annotate on files for better insight on the evolution of you
code.  Finally, the new “build packs” feature (see repository settings)
enables an optimisation (GSoC 2010) which we hope will pave the way to
much faster \verb!darcs get! over networks.

These changes have been merged into the mainline Darcs and Darcsden
repositories, and are expected to available in the next stable release
of Darcs.

% WF: does Simon want to add anything more about Darcs hub?
%Meanwhile, the Darcs hub at \url{http://hub.darcs.net} continues to
%grow in robustness and usage (at the time of this writing,
%254 accounts, 294 repos). The Darcs hub is based on work by Simon
%Michael improving the original Darcsden by Alex Suraci, resulting in a
%1.0 release earlier last year.  Feedback and help pushing forward this
%new Darcs hosting option will be greatly appreciated!

% WF: update from Sebastian
%To accompany this work are some very interesting lines of development
%being contributed by Sebastian Fischer on behalf of factis research.
%The work is aimed at improving the patch management experience for
%teams of Darcs users, first with a mechanism to track the history of
%patches (who pulled them into the repository, or removed them, when)
%and second with possible commands that would allow patches to be
%easily split apart and merged together. We're very grateful to factis
%for funding this development work and look forward to using it
%ourselves.

Darcs is free software licensed under the GNU GPL (version 2 or
greater).  Darcs is a proud
member of the Software Freedom Conservancy, a US tax-exempt 501(c)(3)
organization.  We accept donations at
\url{http://darcs.net/donations.html}.

\FurtherReading
\begin{itemize}
\item \url{http://darcs.net}
\item \url{http://wiki.darcs.net/Development/Priorities}
\end{itemize}
\end{hcarentry}
