Roadmap

This is a high-level overview of the major objectives behind the upcoming releases of darcs.

See HowToHelp if you'd like to help us to reach our goals faster :-)

The big picture

  1. make darcs faster for its current users <-- we are here (moving to #2 soon)
  2. build it on solid foundations (clean up library)
  3. (maybe) Seamless Git Integration
  4. darcs3

Current objectives

darcs 2.8.0 (2011-05)

  • improve hashed repo behaviour to make up for (only) read-only support for old-fashioned repositories

    • TODO issue1938 - performance of darcs add
    • TODO issue1934 - insufficient garbage collection of hashed files
    • TODO issue305 - darcs optimize --clean?
    • TODO issue1624 - break up ~/.darcs/cache into subdirectories (see patch72)
  • infrastructure

    • TODO a Windows installer (issue1687)
    • TODO run darcs-benchmark with graphs
  • code quality

    • TODO improved separation of user IO from darcs business (issue1483)
    • TODO separation of library into core/repo/commands?
    • TODO type witnesses enabled everywhere
  • performance enhancements

    • TODO filecache (issue1566)
    • DONE (in 2.5?) local: cache overhaul
    • high priority TODO thisrepo bug
  • getting the basics right

    • TODO sort out XML and encodings issues (issue 1692, issue 1693, issue33)
    • DONE darcs record: make --no-test default, ask to record anyway when tests fail (issue332)
    • TODO darcs test
  • new features

    • high priority TODO darcs rebase (issue938) (see Ideas/RebaseStatus)
    • high priority TODO nicer darcs annotate output (issue25)
    • conflict marking improvements:
      • DONE (in 2.5.1) include old text in conflict marking patch402
      • TODO (probably) reduce the number of alternatives presented when there are complicated conflicts
      * TODO (hopefully) include patch names in conflict markers issue833
    • optimize --http
      • DONE implementation
      • high priority TODO benchmarking, documentation and "marketing"

For 2.8 we want to have packs and rebase, but we will still commit to a time-based release. The release process will be slightly changed: there will be no soft freeze since we feel it does not really help us focus, making us basically lose 2 weeks of attention.

Schedule: - May 31st: decide whether rebase goes into 2.8 - June 15th: first beta - June 30th: hard freeze - July 14th: tentative release

Here is a list of changes since 2.5, as a starting point for release notes.

Future objectives

Medium term:

  • a plugin system (issue1504)
  • library cleanup: witnesses mandatory
  • improved conflict marking [THIS IS REALLY IMPORTANT] (issue833)
  • merge refactors and issue1014 fix from David's fork
  • in-repo branches (issue555)
  • make darcs really non-interactive if user desires so
  • record huge patches (issue80)

Long term:

Old-fashioned phase-out

We decided to phase out old-fashioned repository support for the version 2.8, see: http://blog.darcs.net/2010/11/coming-in-darcs-28-read-only-support.html

Getting an old-fashioned repository is always going to be possible. However, getting getting partial repositories (with the --partial flag) is no longer supported.