[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Arx-users] ArX and simplicity
Re: [Arx-users] ArX and simplicity
Thu, 28 Apr 2005 23:30:08 -0400 (EDT)
Kevin Smith <address@hidden> wrote:
> I have already added several entries to the bug tracking system
> suggesting tweaks to the manual.
They are pretty much all good suggestions. I will try to work through
them in the next few days.
> But there is one "feature" of ArX that has already caused
> frustration for me several times as a user, so I want to discuss how
> to fix it rather than just documenting it:
> There is no delimiter between the name of an archive and the names of a
> top-level branch within it. The most obvious downside is that users must
> remember whether or not to include a trailing slash, depending on what
> they are doing. That's error-prone and confusing. Another downside is
> that just by looking at some archive URI, you can't really tell whether
> you are looking at an archive or a branch. There are probably other
> problems that I just haven't hit yet.
> I may have asked about or mentioned this before, but would it be
> possible to clearly separate archives from branches? Just trying to find
> an example in the manual, I'm not sure which archive/branch names I
> might grab that might be relevant and which are not.
The original larch had a -A option where you could specify the
archive. It also had something like the current syntax. The -A
option worked in a confusing manner, but it could perhaps be
resurrected in such a way that it would all make sense.
However, this actually touches on something that has always bothered
me. I don't like it that we have to specify archives so much. It
seems that other systems manage to get away without having explicit
names for archives at all. I think the principle reason is that they
do not try to support lightweight branches.
In other systems, if you want to make a first class branch of a
project, you have to download the entire history of the project. With
ArX and tla, you just put a pointer in your own archive to the parent
archive. In order for that pointer to work, it can't use a URL,
because URL's can change. So they use a symbolic name.
But symbolic names suck for two reasons:
1) They need to be unique, so they become long and unwieldy.
2) People ignore guidelines, and end up with names that are not
The solution to the first problem is to make the use of archive names
much more implicit. One possiblity would be to get rid of the default
archive and instead use the archive of whatever project tree we are
The solution to the second problem is to replace the current user
generated scheme for choosing archive names with UUID's. Bitkeeper
uses something like this, although in a very different way. Then you
are guaranteed to never have conflicts. It would also make me more
comfortable allowing archive aliases, because they could never be
mistaken for real archive names. Aliases would also make it easier to
type archive names when you are forced to.
I have been thinking about this problem for a while, but I don't feel
like I have figured everything out. In particular, I don't feel like
I have a good scheme for hiding archive names.
> Would it be possible to use : to separate an archive from the top-level
> branch name? Would that remove all ambiguity? Or perhaps there is a
> better alternative?
The colon ":" is already used to determine whether we are looking at a
url (http://foo/bar) or an archive name (address@hidden).