UI elements moving across the screen considered harmful #63

Open
mvdan opened this Issue Jan 7, 2017 · 3 comments

Projects

None yet

2 participants

@mvdan
mvdan commented Jan 7, 2017

When I click on "update", the repo item moves to a separate section. This has two inconvenients:

  • It is racy. If I click these buttons faster than they can sync (i.e. multiple running at a time), sometimes they don't move properly and stay in the "to update" section.
  • It makes reading worse. I can't read commits properly if text is jumping up and down (e.g. if I click "update" on the first and go read the second)

To fix both, I instead suggest that each element is changed somehow, instead of moved around. For example, changing "Update" by "Done" or simply nothing. Colours or other styling could be added to make the difference stand out more.

@shurcooL
Owner

I agree it feels not great. I'll just share some notes.

I tend to try to update packages from bottom, going up. That way things don't move around.

GPS Updates tab is heavily inspired by Apple's App Store on macOS. Its design suffers from the same issue, however, it's less noticeable for a few reasons. There are generally fewer updates for macOS apps than there are for Go packages. They tend to be slower and you can update many packages before the first one completes. And finally, there's an extra delay between an update completing and it moving to the bottom.

I kinda like the general idea of moving completed updates out of the way rather than having them intertwined with the rest of available updates... But yeah. So I'm not sure what to do here.

@shurcooL
Owner
shurcooL commented Jan 14, 2017 edited

One really interesting idea in this space IMO is how Chrome tackles this problem.

See the following 15 second video:

image

Basically, they try to avoid moving things unexpectedly as long as your mouse cursor is hoving over the tabs. As soon as you move mouse elsewhere, that's when it tries to shuffle things around.

It would require tracking the mouse on the frontend and doing some experimentation, but if done well, this might be a good idea. There's also a high chance it won't be a good idea. It's definitely going to be complicated to implement.

@shurcooL
Owner
shurcooL commented Feb 16, 2017 edited

Ok, I can't believe I didn't notice it until now, but the logic for moving a completed update down was wrong (not what I had in mind):

https://github.com/shurcooL/Go-Package-Store/blob/15be84cf3de4d21dad4b1eb9ed370c559a24d001/cmd/Go-Package-Store/updater.go#L70-L79

Instead of taking the updated item and moving it down, it swapped that item with the bottom-most available update. So the update you'd expect to be next was preceded by some update from the bottom.

Fixing that is going to help this issue very little, but nonetheless, it's something.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment