Hidden Commits in 4.3

Sean Farley sean at farley.io
Thu Apr 20 19:37:55 EDT 2017


Durham Goode <durham at fb.com> writes:

> I respond below, but I believe Jun has sent you a innovative proposal 
> that may solve both of our needs and render this discussion irrelevant. 
> So take a look at his proposal at your earliest convenience, since it 
> may let us put this behind us.
>
> On 4/18/17 11:03 AM, Pierre-Yves David wrote:
>> On 04/14/2017 01:04 AM, Durham Goode wrote:
>>> On 4/13/17 2:37 PM, Pierre-Yves David wrote:
>>>> On 04/12/2017 04:23 PM, Ryan McElroy wrote:
>>>>> […]
>>>> *Practical example* (/simplified/):
>>>>
>>>>    Situation:
>>>>
>>>>      * Facebook has a useful: hg undo command.
>>>>      * Facebook cares about hg undo, preserving the hash,
>>>>      * this hash preservation conflict with current constraint of
>>>>        changeset-evolution.
>>>>
>>>>    Way forward:
>>>>
>>>>      * Facebook can upstream hg undo with hash preservation,
>>>>      * We introduces a variant that changes the hash and makes it
>>>>        available to all users with BC,
>>>>      * Facebook can set the config for hash preservation internally.
>>>>
>>>>    Result: the code is upstream, user has new feature and we can
>>>>    discuss hash preservation later.
>>>
>>> I think this example is missing the step where we discuss what we should
>>> ship to users. My goal is not to enable Facebook to have a feature (we
>>> already have these features), my goal is to create a good user
>>> experience for Mercurial users. If we do the config knob route, we must
>>> at some point have the discussion about what experience we want to give
>>> to users, before we actually ship it to them.
>>>
>>> So in your proposal, when will it become appropriate to have that
>>> discussion? And what can we do between now and then to make that
>>> discussion more productive? I think we're blocked on getting bits into
>>> the hands of users by default until then.
>>
>> (note: I've purposely delay more "discussion" oriented part in my other
>> email (that you also replied to) I'll reply to it too shortly after this
>> one.)
>>
>>
>> In my example above, once "hg undo" is upstreamed, we are able to build
>> a variant without hash preservation[1] and ship that the user by default
>> without delay.
>
> I'm sure you don't mean it this way, but this sounds a lot like "let's 
> ship my thing and we'll figure your thing out later". The moment evolve 
> ships, it becomes a lot harder to make the types of changes I'm talking 
> about (both from a user experience point of view and community 
> momentum), so I'd rather have the discussion now while it's still 
> possible to make important changes.  If we flipped the sentence around 
> (ship mine, figure yours out later) I'm sure you wouldn't be happy with 
> that outcome either.

For what it's worth, I did not read it that way. Also, I've tried to
avoid this discussion (across all the various threads) because it has
been draining.

>> On a general principle, decoupling implementation discussion from UI
>> polishing is usually a win.
>
> If we decoupled UI from implementation here, we'd just go ahead and ship 
> "hg unhide" with hash preservation, since that's objectively the more 
> intuitive UI for unhide. But since the implementation of the obsolete 
> graph doesn't allow that UI, implementation therefore affects our 
> discussion.

At first reading of this, I find this kind of hostile from Facebook. I'm
sure you didn't mean it that way but eh.

I found it hard to reply to this thread because of all the different
derailings. For every non-Facebook dev here, there are so many more
Facebook devs to reply to. That is exhausting. *I* am exhausted.

> I'd love to discuss the pro's and con's of these two ideas purely from a 
> UX standpoint, but I haven't seen any concrete examples of situations 
> where evolve is affected by this for us to have a tangible discussion 
> around it. If we had a concrete example, we could more productively 
> evaluate the pro's and con's of these ideas.

There's so much convolution in this thread. For instance, I think (fast)
local hiding would be cool. A version of that is possible today and I've
even had my hand at it:

https://bitbucket.org/seanfarley/hgremotenames/commits/69cda2b8353ab1b108ca120d08eb253941f9ae70?at=hideable

That's remarkably simple and having a bitmap (or whatever) api would be
good. I'm surprised there has been so much misinformation and changing
of the goal posts. For instance,

* obs marker are global state

  I didn't think this was even a point to be contested. Distributed
  systems is difficult and evolve is solving a hard problem of shared
  rebase, histedit, etc.

* hash preservation

  Sure, that's neat. But that's not a blocker. Like, not even a little
  bit. If I hear Jun say that obs-based hiding is broken by design one
  more time, I might roll my eyes so hard that they'll fall out the back
  of my skull.

> Given that evolve has been around for years and people still aren't able 
> to reason about concrete examples in these discussions, I don't think 
> the strategy of 'give it more time' is going to help move this 
> discussion forward.

The last time I discussed this with you, I was under the impression that
your plan was:

- turn on obs-based rebase (perhaps histedit) but disallow unstable
  changesets

- augment the UI with a list of operations for diverged changesets, e.g.

  $ hg rebase foo
  you have two choices:
  1) abcd0123
  2) deadbeef

None of the above, in my mind, requires the unhiding / cycle business.
To me, getting the above points in core first (just making the happy
path working, basically) would be a win. If that's not the goal, then
I'm not really enthused about your proposals.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20170420/247c0adb/attachment.sig>


More information about the Mercurial-devel mailing list