% 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.5 (with GHC 7.8 support), was in
August 2014.  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.

We have now started a feature freeze for our upcoming release,
Darcs 2.10. In our sights are the new \verb!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).

\paragraph{Summer of Code}

This summer we completed Google Summer of Code projects:

Marcio Diaz has improved our use of the hashed file storage mechanism,
first by introducing a garbage collection mechanism to keep our disk
space requirements in check, and second by introducing a bucketing
system for faster cache lookups. He has also broken ground on a
darcs undo mechanism to help users recover from otherwise permanent
changes such as amending a patch.

Ale Gadea helped us to make darcs patch reordering live up to its
potential. He fixed a bug that was causing
\verb!darcs optimize reorder! to hang in some places, added a
\verb!darcs show dependencies!  prototype (which draws graphs showing
which patches depend on each oher), and started some work in using patch
reordering to help us generate ``minimal context'' patch bundles that
can be applied in more repositories.

\paragraph{SFC and donations}

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://darcs.net/GSoC/2014-Hashed-Files-And-Cache}
\item \url{http://darcs.net/GSoC/2014-History-Reordering-Performance-and-Features}
\end{itemize}
\end{hcarentry}
