<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: First impressions of darcs: not so hot</title>
	<atom:link href="http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/</link>
	<description>Bryan O&#039;Sullivan&#039;s blog</description>
	<lastBuildDate>Wed, 08 Feb 2012 06:41:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Eric Kow</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-262030</link>
		<dc:creator>Eric Kow</dc:creator>
		<pubDate>Thu, 24 Jun 2010 12:06:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-262030</guid>
		<description>Well, it took us 3.5 years to address the scary interactive prompt, but we finally got there.  We just applied a patch that changes the prompt to only display &quot;basic&quot; characters, while leaving a few clues for potential power users to explore:

Before: Shall I record this change? (1/8)  [ynWesfvplxdaqjk], or ? for help:

After: Shall I record this change? (1/8)  [ynW...], or ? for more options:

Darcs 2.5 and up should be a little bit friendlier.  Thanks for the UI bug!</description>
		<content:encoded><![CDATA[<p>Well, it took us 3.5 years to address the scary interactive prompt, but we finally got there.  We just applied a patch that changes the prompt to only display &#8220;basic&#8221; characters, while leaving a few clues for potential power users to explore:</p>
<p>Before: Shall I record this change? (1/8)  [ynWesfvplxdaqjk], or ? for help:</p>
<p>After: Shall I record this change? (1/8)  [ynW...], or ? for more options:</p>
<p>Darcs 2.5 and up should be a little bit friendlier.  Thanks for the UI bug!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zooko O'Whielacronx</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-15417</link>
		<dc:creator>Zooko O'Whielacronx</dc:creator>
		<pubDate>Tue, 06 Feb 2007 19:10:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-15417</guid>
		<description>Hello Brian.  Thanks for the note about darcs.  (I noticed it via &#039;http://planet.revisioncontrol.net/&#039;.)

You wrote

&quot;Long-time darcs users have no doubt trained themselves to not notice this stuff.&quot;

but on the contrary every one of the five behaviours you objected to are behaviours that I explicitly like and that I consciously prefer over the alternative behaviours of other revision control tools.  I think most long-time darcs users feel similarly about them.

For the record, that&#039;s:

1.  &quot;darcs record&quot; instead of &quot;darcs commit&quot;

This terminological distinction is important because running darcs record is *not* committing you to anything and does not expose your team-mates to the consequences of your work.  This is a fundamental difference in workflow which is generally prefered by darcs users.  A few times I&#039;ve observed people misunderstanding darcs workflow by thinking that &quot;darcs record&quot; is like &quot;svn commit&quot;.

2.  &quot;--all&quot; is not the default

This default setting is valuable because the common case for long-time darcs users is to choose only a subset of edits to batch together into one darcs patch.  This is a change in workflow which is much beloved by almost all long-time darcs users -- it means you can opportunistically make an unrelated change as you are working on a different change and then sort them into logical patches later.

3.  many features available by keystroke at the interactive prompt

I really like this behaviour.  When I started out with darcs I used only four or five of the options, but over time I&#039;ve learned more and more of them and I enjoy the convenience and power they offer.

4.  cbreak mode

I prefer this.  Darcs on Windows does not have the ability to do this, so I use both cbreak and non-cbreak darcs every day, and I know which one I prefer.

5.  &quot;patch name&quot; is an arbitrary length, arbitrary content, human readable string instead of a more restricted format

I prefer this, but perhaps it would be nice if it were called something other than &quot;name&quot;, in order to allay the irritation that many including you have experienced.


Regards,

Zooko,

long-time darcs user</description>
		<content:encoded><![CDATA[<p>Hello Brian.  Thanks for the note about darcs.  (I noticed it via &#8216;<a href="http://planet.revisioncontrol.net/&#039;" rel="nofollow">http://planet.revisioncontrol.net/&#039;</a>.)</p>
<p>You wrote</p>
<p>&#8220;Long-time darcs users have no doubt trained themselves to not notice this stuff.&#8221;</p>
<p>but on the contrary every one of the five behaviours you objected to are behaviours that I explicitly like and that I consciously prefer over the alternative behaviours of other revision control tools.  I think most long-time darcs users feel similarly about them.</p>
<p>For the record, that&#8217;s:</p>
<p>1.  &#8220;darcs record&#8221; instead of &#8220;darcs commit&#8221;</p>
<p>This terminological distinction is important because running darcs record is *not* committing you to anything and does not expose your team-mates to the consequences of your work.  This is a fundamental difference in workflow which is generally prefered by darcs users.  A few times I&#8217;ve observed people misunderstanding darcs workflow by thinking that &#8220;darcs record&#8221; is like &#8220;svn commit&#8221;.</p>
<p>2.  &#8220;&#8211;all&#8221; is not the default</p>
<p>This default setting is valuable because the common case for long-time darcs users is to choose only a subset of edits to batch together into one darcs patch.  This is a change in workflow which is much beloved by almost all long-time darcs users &#8212; it means you can opportunistically make an unrelated change as you are working on a different change and then sort them into logical patches later.</p>
<p>3.  many features available by keystroke at the interactive prompt</p>
<p>I really like this behaviour.  When I started out with darcs I used only four or five of the options, but over time I&#8217;ve learned more and more of them and I enjoy the convenience and power they offer.</p>
<p>4.  cbreak mode</p>
<p>I prefer this.  Darcs on Windows does not have the ability to do this, so I use both cbreak and non-cbreak darcs every day, and I know which one I prefer.</p>
<p>5.  &#8220;patch name&#8221; is an arbitrary length, arbitrary content, human readable string instead of a more restricted format</p>
<p>I prefer this, but perhaps it would be nice if it were called something other than &#8220;name&#8221;, in order to allay the irritation that many including you have experienced.</p>
<p>Regards,</p>
<p>Zooko,</p>
<p>long-time darcs user</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Stosberg</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-10506</link>
		<dc:creator>Mark Stosberg</dc:creator>
		<pubDate>Sat, 20 Jan 2007 19:42:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-10506</guid>
		<description>Kartik,

Darcs &lt;em&gt;does&lt;/em&gt; have configurable defaults. They are documented in the manual:

http://www.darcs.net/manual/node5.html#SECTION00510010000000000000

If you want &quot;darcs record --all&quot; to be the default behavior for you, it can be.</description>
		<content:encoded><![CDATA[<p>Kartik,</p>
<p>Darcs <em>does</em> have configurable defaults. They are documented in the manual:</p>
<p><a href="http://www.darcs.net/manual/node5.html#SECTION00510010000000000000" rel="nofollow">http://www.darcs.net/manual/node5.html#SECTION00510010000000000000</a></p>
<p>If you want &#8220;darcs record &#8211;all&#8221; to be the default behavior for you, it can be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: christian schorn &#187; Blog Archive &#187; Links 8</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-10137</link>
		<dc:creator>christian schorn &#187; Blog Archive &#187; Links 8</dc:creator>
		<pubDate>Thu, 18 Jan 2007 22:03:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-10137</guid>
		<description>[...] First impressions of darcs: not so hot [...]</description>
		<content:encoded><![CDATA[<p>[...] First impressions of darcs: not so hot [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kartik Agaram</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9917</link>
		<dc:creator>Kartik Agaram</dc:creator>
		<pubDate>Wed, 17 Jan 2007 23:25:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9917</guid>
		<description>Concise restatement: Cherry-picking while rapid-prototyping  interferes with [flow](http://en.wikipedia.org/wiki/Flow_(psychology)). The more frequently you commit the greater the interference. The solution is not to avoid committing altogether; you do want a record of your trajectory so you can go over it when you come up for breath.

Addenda:

1. darcs does have programmable defaults:
http://programming.reddit.com/info/yq1t/comments/cyve8?context=5&amp;style=nested#cyve8

2. Maintenance vs prototype programming has some mapping with [stevey&#039;s notions of hardware and software](http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html) and with [the packer-mapper dichotomy](http://www.reciprocality.org/Reciprocality/r0).</description>
		<content:encoded><![CDATA[<p>Concise restatement: Cherry-picking while rapid-prototyping  interferes with [flow](http://en.wikipedia.org/wiki/Flow_(psychology)). The more frequently you commit the greater the interference. The solution is not to avoid committing altogether; you do want a record of your trajectory so you can go over it when you come up for breath.</p>
<p>Addenda:</p>
<p>1. darcs does have programmable defaults:<br />
<a href="http://programming.reddit.com/info/yq1t/comments/cyve8?context=5&#038;style=nested#cyve8" rel="nofollow">http://programming.reddit.com/info/yq1t/comments/cyve8?context=5&#038;style=nested#cyve8</a></p>
<p>2. Maintenance vs prototype programming has some mapping with [stevey's notions of hardware and software](http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html) and with [the packer-mapper dichotomy](http://www.reciprocality.org/Reciprocality/r0).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kartik Agaram</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9785</link>
		<dc:creator>Kartik Agaram</dc:creator>
		<pubDate>Wed, 17 Jan 2007 09:59:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9785</guid>
		<description>What darcs really needs is configurable defaults.

Interactive commit is good where the emphasis is on maintenance and bug tracking. It&#039;s hell if you&#039;re rapid-prototyping, though. My big problem was that I could never remember to commit at the right times when I was hacking something up, trying out options. And spending my neurons on remembering to commit made the Zone less accessible. My solution - to train myself to think aloud about my code: http://www.cs.utexas.edu/~akkartik/feed.cgi?codelog.html

&quot;Have you ever written something but only after adding some scaffolding or debugging code? Do you really want that code in there?&quot;

Again, it depends. If it&#039;s just a private repo I care more about maintaining a record of the sequence of events rather than patch hygiene.

The amend-record trick is a good one, though.</description>
		<content:encoded><![CDATA[<p>What darcs really needs is configurable defaults.</p>
<p>Interactive commit is good where the emphasis is on maintenance and bug tracking. It&#8217;s hell if you&#8217;re rapid-prototyping, though. My big problem was that I could never remember to commit at the right times when I was hacking something up, trying out options. And spending my neurons on remembering to commit made the Zone less accessible. My solution &#8211; to train myself to think aloud about my code: <a href="http://www.cs.utexas.edu/~akkartik/feed.cgi?codelog.html" rel="nofollow">http://www.cs.utexas.edu/~akkartik/feed.cgi?codelog.html</a></p>
<p>&#8220;Have you ever written something but only after adding some scaffolding or debugging code? Do you really want that code in there?&#8221;</p>
<p>Again, it depends. If it&#8217;s just a private repo I care more about maintaining a record of the sequence of events rather than patch hygiene.</p>
<p>The amend-record trick is a good one, though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: augustss</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9723</link>
		<dc:creator>augustss</dc:creator>
		<pubDate>Wed, 17 Jan 2007 02:11:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9723</guid>
		<description>Prompting for each hunk is one of the biggest advantages with darcs.  Very rarely do I want to record all my changes in the same hunk.  And if I do, there&#039;s a key for that too.  Just use ?, it&#039;s your friend.</description>
		<content:encoded><![CDATA[<p>Prompting for each hunk is one of the biggest advantages with darcs.  Very rarely do I want to record all my changes in the same hunk.  And if I do, there&#8217;s a key for that too.  Just use ?, it&#8217;s your friend.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bryan O'Sullivan</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9690</link>
		<dc:creator>Bryan O'Sullivan</dc:creator>
		<pubDate>Tue, 16 Jan 2007 22:46:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9690</guid>
		<description>Since someone posted this to reddit, I&#039;ll follow up to comments #3 and #4 above. Yes, I was picking nits! It&#039;s true! These default behaviours of darcs struck me as annoying immediately, and that&#039;s significant to me. If I&#039;m designing a user interface, I strive for the first impression I give not to be off-putting.

I have objections to the underpinnings of darcs&#039;s patch theory, too, but those are for a different posting.</description>
		<content:encoded><![CDATA[<p>Since someone posted this to reddit, I&#8217;ll follow up to comments #3 and #4 above. Yes, I was picking nits! It&#8217;s true! These default behaviours of darcs struck me as annoying immediately, and that&#8217;s significant to me. If I&#8217;m designing a user interface, I strive for the first impression I give not to be off-putting.</p>
<p>I have objections to the underpinnings of darcs&#8217;s patch theory, too, but those are for a different posting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9490</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Tue, 16 Jan 2007 04:14:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9490</guid>
		<description>Pretty weak complaints really. I don&#039;t want to sound harsh but it seems like you are just trying to use darcs like what-ever you used before it. This would be missing a huge number of points.

Lets take interactive commits for instance. You complain about having to say yes to every commit... but why don&#039;t you ask the following questions:

1) Have you ever written something but only after adding some scaffolding or debugging code? Do you really want that code in there?

2) Has one bug made you aware of another? Fixing two things in one tangled patch seems wrong. You should fix them but use record to track them appropriately.

3) Have you ever made some important changes and then forgot about a few of the unimportant whitespace changes that you made? Do you wish you could just avoid committing all that?

4) Is it really that easy to read through larger diff output than a case by case basis? Shouldn&#039;t you give a careful check to things as you read over things in interactive mode?

5) Have you ever thought &quot;oops&quot; I forgot that change was in there... abort commit, edit, and start commit again? Why not just avoid the change and handle that other part after (with revert, ammend-record, etc...)

6) Do you really commit often enough? I usually have extremely small changes that can easily be tracked and managed. This means darcs rec is very quick and there are very few y&#039;s.

7) Did you know you can incrementally build patches with ammend-record? This is a great tool to sort things out. It would be much less valuable if you had to write the changes in separate branches. I commonly create a parallel debug patch for some code so I can move it in and out quickly when and where it is needed for a certain bug.

8) Has a friend/co-worker/other person ever asked you for a quick change, yet you were in the middle of a big change and didn&#039;t want to make a branch _just_ to do a one liner or typo fix? Quick interactive commits avoid changes that might be in the same file.

9) Conflicts are hard to avoid sometimes but when you can see the hunks separately it can really help to see what the dependent areas are. When I am cooperatively coding with a team it has been nice to be able to proactively be aware of what my footprint is so I know when to warn about certain lines or areas that a someone else might be working on. (I commonly play a patch ping-pong with someone else... this really helps a lot).

10)alias commit=darcs rec -a is simple enough if none of the above suite you.

... yes ... I admit that interactive commits is one of the main reasons I use darcs. There are many more things that could be brought up as well.

Really... I think it might take some serious experimenting on your part before I would let a blog entry like this pass as a good beginner review.

Ok. Now for the positive side. At least you are one of the few who has the guts to not only try something new but you also are willing to gripe about things you don&#039;t quite like yet. Give it some time and it might come to you... otherwise there are some other great SCMs out there like mercurial or different git setups (just don&#039;t get stuck with the cvs/svn mind-set).</description>
		<content:encoded><![CDATA[<p>Pretty weak complaints really. I don&#8217;t want to sound harsh but it seems like you are just trying to use darcs like what-ever you used before it. This would be missing a huge number of points.</p>
<p>Lets take interactive commits for instance. You complain about having to say yes to every commit&#8230; but why don&#8217;t you ask the following questions:</p>
<p>1) Have you ever written something but only after adding some scaffolding or debugging code? Do you really want that code in there?</p>
<p>2) Has one bug made you aware of another? Fixing two things in one tangled patch seems wrong. You should fix them but use record to track them appropriately.</p>
<p>3) Have you ever made some important changes and then forgot about a few of the unimportant whitespace changes that you made? Do you wish you could just avoid committing all that?</p>
<p>4) Is it really that easy to read through larger diff output than a case by case basis? Shouldn&#8217;t you give a careful check to things as you read over things in interactive mode?</p>
<p>5) Have you ever thought &#8220;oops&#8221; I forgot that change was in there&#8230; abort commit, edit, and start commit again? Why not just avoid the change and handle that other part after (with revert, ammend-record, etc&#8230;)</p>
<p>6) Do you really commit often enough? I usually have extremely small changes that can easily be tracked and managed. This means darcs rec is very quick and there are very few y&#8217;s.</p>
<p>7) Did you know you can incrementally build patches with ammend-record? This is a great tool to sort things out. It would be much less valuable if you had to write the changes in separate branches. I commonly create a parallel debug patch for some code so I can move it in and out quickly when and where it is needed for a certain bug.</p>
<p> <img src='http://www.serpentine.com/wordpress/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Has a friend/co-worker/other person ever asked you for a quick change, yet you were in the middle of a big change and didn&#8217;t want to make a branch _just_ to do a one liner or typo fix? Quick interactive commits avoid changes that might be in the same file.</p>
<p>9) Conflicts are hard to avoid sometimes but when you can see the hunks separately it can really help to see what the dependent areas are. When I am cooperatively coding with a team it has been nice to be able to proactively be aware of what my footprint is so I know when to warn about certain lines or areas that a someone else might be working on. (I commonly play a patch ping-pong with someone else&#8230; this really helps a lot).</p>
<p>10)alias commit=darcs rec -a is simple enough if none of the above suite you.</p>
<p>&#8230; yes &#8230; I admit that interactive commits is one of the main reasons I use darcs. There are many more things that could be brought up as well.</p>
<p>Really&#8230; I think it might take some serious experimenting on your part before I would let a blog entry like this pass as a good beginner review.</p>
<p>Ok. Now for the positive side. At least you are one of the few who has the guts to not only try something new but you also are willing to gripe about things you don&#8217;t quite like yet. Give it some time and it might come to you&#8230; otherwise there are some other great SCMs out there like mercurial or different git setups (just don&#8217;t get stuck with the cvs/svn mind-set).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RetroJ</title>
		<link>http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/comment-page-1/#comment-9470</link>
		<dc:creator>RetroJ</dc:creator>
		<pubDate>Mon, 15 Jan 2007 23:54:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/11/why-i-dont-like-darcs/#comment-9470</guid>
		<description>The title is misleading.  When I read &quot;not so hot&quot; I&#039;m expecting startling new revelations--but these are cosmetic nitpicks!</description>
		<content:encoded><![CDATA[<p>The title is misleading.  When I read &#8220;not so hot&#8221; I&#8217;m expecting startling new revelations&#8211;but these are cosmetic nitpicks!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

