On Monday 13 April 2009, Eric Kow wrote:
> On Mon, Apr 13, 2009 at 14:46:05 +0200, Daniel Carrera wrote:
> > Before I say anything else, are you happy with "patch reordering"? I
> > can go for that if you think it's really better.
>
> I can't speak for Stephen, but "patch reordering" seems to have the
> right mix of conveying what we mean without making it sound magical or
> hyped up.

I tried to think of what "patch reordering" can convey to me if I would be 
a new user and had no idea of the things I know now. To be honest it 
means ...nothing. At the same time it escapes me how reordering patches 
can help me or why would it be useful. Not only that, but it may even 
sound an alarm in my head if I'm used to all the other history based 
revision control systems out there. The VCS reordering the history of my 
repository without my consent? Why would anyone want that?

IMO, the issue comes from the fact that technical, implementation related 
terms are used to describe it. I don't think such technical terms can be 
used in a description at all. They can only be brought on the table a bit 
later after the user gets some definitions and explanations of how things 
work. At that point you can already use the right terms, not some 
cosmetically trimmed down versions of them.

When I first met darcs, it was a few years ago and there were not many 
distributes VCS out there. There was arch, tla (GNU's arch), bazaar (the 
first generation which was basically a derivative of arch) and darcs. In 
the non-distributed world, there were CVS and svn. I used CVS up to that 
point and was looking for something to replace it because of the numerous 
problems CVS had. svn looked like CVS on steroids and while it fixed some 
of the CVS problems it was still about the same. arch had an awkward, 
complex interface and using it felt like moving from programming in a 
high level language back to programming in assembly. bazaar was basically 
a clone of arch. There was word about bazaar-ng which attempted to 
implement the arch ideas but with a sane user interface, however it was 
in alpha so I didn't consider it.

Then I came across the darcs site. I was immediately intrigued by the web 
page mentioning it was based on a theory of patches with roots in quantum 
mechanics. That immediately conveyed to me that it had a solid ground 
(theory of patches) and it made me curious what ideas from quantum 
mechanics were used.

It was already available as a debian package, so installing it was easy. I 
tried it out and the first thing that I noticed was how simple and 
natural it was to use it. The user interface was (and still is) the best 
I found in a VCS. Today I would say that this quality and simplicity of 
the user interface comes from its symmetry and its orthogonality (both of 
which, I would say today, came from the quantum mechanics inspiration).

The next thing I know, is that I have forgotten the references to the 
patch theory and quantum mechanics (even though they were the ones that 
intrigued me in the first place) and I was amazed by how easy it was to 
use darcs. The references to the patch theory and quantum mechanics were 
still in the back of my head and it was good to know that darcs had a 
solid foundation and was not yet another ad-hoc implementation. But they 
were intriguing intriguing enough in the first place to motivate me to 
try it out and discover the good things about darcs.

So I think you must put something intriguing in the description, something 
to motivate people to dwell into it and learn more. Otherwise, no matter 
how non-technical the description is and how easy is for Common Joe to 
grasp the terms in it, it will be just another dull feature list to 
compare against the other VCSs.

One may think that terms as "patch theory" or "quantum mechanics" are a no 
go for a description meant for new users, but in my case they made me 
curious enough to try it out and discover the good things about it.

Another thing that captivated my attention was the idea that patches were 
central to the darcs philosophy, unlike revisions with the other VCSs.
This appealed to me as a more natural approach, because this is how humans 
function. We think of a bug fix or a feature we implement as a patch that 
moves the tree to a new state.

All of the darcs advanced featured like patch commutation and cherry 
picking were not obvious to me during the first contact and even if they 
would have been conveyed to me in a short description they would have 
probably meant nothing at that point.

So if I'm to represent what captivated me in the first place was the nice 
user interface that made working with darcs a breeze and the novel 
concept of having the patch as the central entity in the system (I guess 
the latter is what actually stays at the base of all patch commutation, 
conflict resolution and other advanced features). The rest came in time 
because I was intrigued enough by the first contact and pleasantly 
surprised by the first use to want to move forward with it. I even 
remember later when I discovered notes about exponential conflicts and 
infinite waiting times in some cases, I still was motivated enough by the 
simplicity of the system to stay with it in spite of the serious problem 
it had in certain cases.

Even nowadays, I find the darcs user interface to be the best available. 
Just as a comparison, many distributed VCS out there have almost if not 
over 100 (one hundred!) commands. That's insane. The closest that comes 
to darcs in this regard is mercurial which still has almost twice as many 
commands as darcs.

IMO, you cannot represent a concept as patch commutation in a short 
description of darcs meant for newcomers, no matter how you dress it up 
to make it newbie friendly. What would help is to add the right hooks in 
that description that will intrigue people and make them want to learn 
more. If the ideas presented are intriguing they will want to find out 
more. Otherwise, if the terms you use do not captivate their attention 
and they do not understand it, or they don't see its relevance to them, 
they will simply discard it.

-- 
Dan
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to