old branch used for the 1.0 release, with the old darcsden UI style

root / ANNOUNCE.md

ANN: darcsden 1.0

I'm pleased to announce the release of darcsden 1.0!

darcsden is a web application for browsing and managing darcs repositories (and issue trackers, and their owners), and an SSH server which lets users push changes to the app without needing a full system login. It can be used for browsing your local repositories, for publishing your repos on the web, or for running a public repo hosting site. It is available under the BSD license.

darcsden was created by Alex Suraci. The last release was 0.5, in 2010. I've been tinkering with it and using it to publish repos on my site for a while. In recent months, with help from the Darcs community I made a serious attempt to make it more robust and to run a reliable instance at http://hub.darcs.net , with promising results. Alex and I feel this is a good time to release an official darcsden 1.0, containing hub's reliability/functionality updates (but not the UI style tweaks).

Home: http://hackage.haskell.org/package/darcsden

Release notes:

Changes in this release fall into several themes:

Deployability/Hackability

  • dependencies have been updated; darcsden now uses the latest GHC, darcs and snap

  • cabal build flags have been added:

    • darcs28: build with released darcs 2.8.2+ instead of latest darcs-screened ? default: true

    • ssh, closing, highlighting: build the ssh server, issue-closing script, and highlighting features ? default: true (disable these for easier building on windows)

  • settings allowing easier custom deployment are available in src/DarcsDen/Settings.hs: base hostname, path and URL, home link, front page content, root directory, log files, maximum request time, maximum displayable patch/file size, database hosts/ports, etc.

  • the db setup required for issue trackers has been added

  • the register form has a security question to reduce junk signups

  • issue trackers can be enabled/disabled per-repo

  • a robots.txt file has been added (default: allow all bots)

  • non-content pages now have NOINDEX meta tag to discourage search indexing

  • user repos and log files have moved to subdirectories for easier management

  • a makefile has been added for developer convenience

Reliability

  • error messages are more user-friendly

  • intermittent browsing errors and eventual stylesheet loss due to non-thread-safe working directory in libdarcs have been fixed

  • viewing a patch or file with binary data no longer gives an error

  • patch content larger than 200K is elided, avoiding some timeouts

  • viewing a patch shows the page right away and fetches the patch data asynchronously, with a more friendly message if it times out

  • viewing a non-existent patch id shows a 404 instead of an exception

  • source code highlighting is faster (using highlighting-kate); viewing a complex file (like minified jquery.js) no longer times out

  • the error-prone repo bootstrap feature has been dropped

  • patch author names are now replaced with user links reliably (when the email address matches)

  • repo links now work when the current url ends in /

  • . (period) is supported in repo names

  • merge now redirects properly when it completes

  • the login button in the issue tracker now works

  • private repos are now listed for their owners

  • private repos are no longer darcs gettable by non-owners

  • patch author names now link to local users and hide email addresses reliably

  • input fields now accept at most 1000 characters

  • ssh access now supports DSA public keys

Usability

  • the site favicon now works in Chrome

  • the register form now disables browser autofill and is readable in Chrome

  • navigation buttons are clearer and more context-sensitive

  • the front page remains accessible after login

  • users are listed on the front page

  • repos are listed alphabetically

  • page headings are more consistent when browsing files

  • files view displays directory names in bold

  • when viewing file content, long lines now use all space to window edge

  • all markdown files are now rendered as markdown, not just README

  • the patches view has been renamed branches, and shows all related repos including upstream

  • merging patches can now also be done by repo members

  • pagination controls also appear at the top and have a stable layout for easy clicking

  • patch view lists files alphabetically

  • patch view now also displays added/removed file content

  • all issues, closed issues views have been added

  • code blocks on issue pages no longer overflow their background

  • list styles have been improved in markdown

  • button transition, border radius and box shadow styles have been updated for modern browsers

Credits:

Alex Suraci created darcsden. Simon Michael led this release, with help from Ganesh Sittampalam, Guillaume Hoffmann, Niklas Haas, Daniel Patterson, Owen Stephens and Scott Lawrence.

darcsden depends on Darcs, Snap, GHC, and the rest of the Haskell ecosystem.

Contributing:

I think darcsden fills a strategic niche in the Darcs ecosystem and deserves wider use and more active development. It has a small, clean codebase and is fun to hack on, not least because (if you contribute to hub's darcsden branch) useful changes will quickly be deployed at hub.darcs.net, providing a tight dogfooding/feedback loop. Here's how to contribute a patch there:

  • register at hub.darcs.net, add your ssh key in settings
  • fork http://hub.darcs.net/simon/darcsden
  • darcs get http://hub.darcs.net/yourname/darcsden
  • (edit, record)
  • darcs push yourname@hub.darcs.net:darcsden
  • your change appears at http://hub.darcs.net/simon/darcsden/patches ; ping me by IRC or email to merge it

Best,

-Simon and the Darcs team