Bookmarks in core?

Augie Fackler durin42 at gmail.com
Mon Dec 6 07:47:30 CST 2010


On Dec 6, 2010, at 7:44 AM, Jason Harris wrote:

> 
> On Dec 6, 2010, at 1:32 PM, Adrian Buehlmann wrote:
> 
>> On 2010-12-06 12:44, Didly Bom wrote:
>>> In section five you "Explore the alternate solution space". In there you
>>> have the section "What if we had separate revlogs for tags that weren't
>>> part of normal history?" where you say that:
>>> 
>>> "This would also be significantly more baroque and confusing from the
>>> user perspective ("There's a whole separate normally-invisible history
>>> of tags?")."
>>> 
>>> I think that this statement is not backed up by facts and in fact the
>>> opposite may be true! Where you _imagine_ a question such as "There's a
>>> whole separate normally-invisible history of tags?" I _get_ (on a day to
>>> day basis!) questions such as "Why does creating a tag create a new
>>> commit??", "Why does the "tag commit" appear as a child of the current
>>> revision?" and so on! So I believe that at most the fact that tags are
>>> "in history" is a User Interface decision. While your document addresses
>>> most of the key issues behind the design of mercurial tags it does not
>>> really address the UI issues that may be leading to the slight
>>> dissatisfaction that some users (me included) have with the way tags work.
> 
> I liked Didly's write up of this. I agree that tags somehow should be different... I am well used to the way tags currently work. However, as has been noted many times, tags in different branches have conflicts during merges, and pulling to a tag doesn't include the tag, and the other problems etc. Thus, it's unequivocal that users are complaining and having issues with this feature.

Retrain yourself to use 'hg pull --update <tag>' instead of 'hg pull --rev <tag>'. It's going to almost the same speed except on super-slow links or super-huge repositories, and it doesn't have all that bad behavior.

> 
>> "Why does creating a tag create a newcommit??":
>> 
>> Because it changes a project and it is an integral part of "what
>> happened" in the history of a project. There ain't no such thing as a
>> separate history for anything in a specific project.
>> 
>> Take mercurial itself as a good example: If Matt makes a new release he
>> tags a revision. That's an action done on the project as a whole. It's
>> an action like "I fixed bug X by modifying line Y of file Z like this".
>> 
>> And quite a number of projects use tags like that and people using it
>> understand it. That *is* a fact.
>> 
>> "Why does the "tag commit" appear as a child of the current revision?"
>> 
>> Tagging on anything else than the tip of the branch you want to tag
>> would by silly indeed in almost all cases. You might blame mercurial for
>> failing to protect you from every silly user action, but users who
>> understand how mercurial records history also understand how diverging
>> lines of history happen. And when forking history is probably a bad idea.
>> 
>> The solution to your "problems" is: educate the users. Not: try to tweak
>> core Mercurial until it starts to match what the uninformed users
>> currently happen to see as the best way.
>> 
>> Sometimes, you have to make users unhappy at first, because they have to
>> learn new paradigms or unlearn crappy old ones. As soon as they get over
>> it, they will thank you that you resisted the temptation to try to
>> implement their suboptimal, initial, simplistic view of the world.
> 
> No!!  Once you use the words, the solution is "to educate users" because they are
> surprised with current behavior, you *automatically* know you failed in the goal
> of  making a nice UI. Mercurial is a nice UI in almost all other aspects, so
> this, as people are noting time and again, is somehow a rough patch. Maybe its
> intrinsic, but I don't know.
> 
> We all are writing Mercurial so users can use it. Right? Surely this is the end
> goal!  If user after user after user, has a problem with the way something works
> then the developers have to turn around and say. "Hmmm this is non-intuituve to
> our users. How can we make this better?" Not that users need to unlearn their
> "crappy old paradigms". (This is the perspective of developer centric behavior
> and not user-centric behavior, and you need to have a user-centric behavior
> thinking constantly about how users use things, finding out through experience
> where they are falling down and making those bits smooth and easy...
> 
> Of course this user-centric view can clash with elegance inside your
> implementation, break a paradigm that is clear and concise, and simple to you
> etc... So maybe the feature is never changed... But never ever confuse deciding
> not to implement / change the feature to a more user-centric perspective, with
> the current state of affairs being the best way to do things as far as the user
> is concerned if they only wised up and did things your way...
> 
> It disturbs me to hear the words "crappy old paradigms of users" and "uninformed
> users" that you use above. If this is your true feelings then it makes me very
> nervous about your design decisions re user interface design...  Instead you
> should be fretting about "is there any other ways we can do this?",  "Are there
> possible smooth ways to get around this problem that many users are coming
> across?",  "How can we ameliorate the surprise the users are getting from this
> feature?",  "What are the real alternatives?",  "What would change if we did
> this the way users wanted?",  "Have I *really* investigated all possibilities".
> etc. etc...
> 
> Then in the end the conclusion if you stick with the current way of doing
> something that users find difficult is something like "It's unfortunate that
> many users have problems with this. We investigated all the alternatives and
> couldn't find anything that works better. We are aware this is a rough patch for
> many users. Here are all the alternatives we considered... Did you have another
> alternative that is distinct from these? Regrettably for now the only solution
> is to educate the users..." (and be honest with yourselves /  ourselves that
> this is a rough patch in your / our program...  And this problem should be
> gnawing at your subconscious. All of us have such rough patches in our
> programs... and its a balancing act of which ones we can iron out for what
> effort, etc...)
> 
> Cheers,
>  Jas



More information about the Mercurial-devel mailing list