beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.6k stars 1.8k forks source link

import formatting hard to parse mentally #1593

Open Profpatsch opened 8 years ago

Profpatsch commented 8 years ago

With the current formatting output, it’s extremely hard to find the crucial information. Current output might look like this (minus the colors):

4. Austin Wintory - The Banner Saga (26.9%) (tracks, missing tracks, album, ...) (Digital Media, 2014, XW, Reference Recordings)
5. Austin Wintory - Monaco: What’s Yours Is Mine / The Gentleman’s Private Collection (25.3%) (missing tracks, tracks, album, ...) (Digital Media, 2013, XW)
# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? s
/home/philip/Downloads/music/Austin Wintory - The Conformation (4 items)
Finding tags for album "Austin Wintory - The Conformation".
Candidates:
1. Austin Wintory - Monaco: The Gentleman’s Private Collection (28.7%) (missing tracks, tracks, album, ...) (CD, 2013, US, T-65b Records)
2. Austin Wintory - Monaco: The Gentleman’s Private Collection (28.7%) (missing tracks, tracks, album, ...) (Digital Media, 2013, XW)
3. Austin Wintory - The River Why (27.7%) (missing tracks, tracks, album) (2012)
4. Austin Wintory - The Banner Saga (19.1%) (missing tracks, tracks, album, ...) (Digital Media, 2014, XW, Reference Recordings)
5. Austin Wintory - Monaco: What’s Yours Is Mine / The Gentleman’s Private Collection (17.3%) (missing tracks, tracks, album, ...) (Digital Media, 2013, XW)
# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? 

I deliberately cut one output in half and used a terminal with half a screen’s width. The crucial information I need for a decision is:

Especially the first point is hard at the moment.

A few points to break it down

new entry

# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? s
/home/philip/Downloads/music/Austin Wintory - The Conformation (4 items)
Finding tags for album "Austin Wintory - The Conformation".

A newline would greatly increase readability.

paths

 /home/philip/Downloads/music/Austin Wintory - The Conformation (4 items)

Since you invoke the import with beets import <path>, it would make sense to use relative paths to reduce clutter (and overlong lines).

noise

Some chars are mostly noise after the first time:

Finding tags for album
Candidates:
Correcting tags from:
To:
URL:

Suggestion for reformatting

<previous entry>

./Austin Wintory - Monaco- What's Yours Is Mine (17 items)
    Austin Wintory - Monaco: What's Yours Is Mine
->  Austin Wintory - Monaco: What’s Yours Is Mine
 * What's Yours Is Mine          -> What’s Yours Is Mine
 * Prison life                   -> Prison Life
 * The Devil's Trick             -> The Devil’s Trick
 * Can't Resist (ft. Laura Vall) -> Can’t Resist (title)
http://musicbrainz.org/release/8bae12ae-945d-4f8c-866c-0892e5f31e15
(Similarity: 99.9%) (tracks) (CD, 2013, US, T-65b Records)

./Austin Wintory - Soul Fjord (8 items)
    Austin Wintory - Soul Fjord
    http://musicbrainz.org/release/a75abdad-57be-40bf-8464-ac5090225ff5
(Similarity: 100.0%) (Digital Media, 2014, XW)

./Austin Wintory - Spirit of the Cosmos (13 items)

---
1. Austin Wintory - Monaco: The Gentleman’s Private Collection (33.5%) (tracks, missing tracks, album, ...) (CD, 2013, US, T-65b Records)
2. Austin Wintory - Monaco: The Gentleman’s Private Collection (33.5%) (tracks, missing tracks, album, ...) (Digital Media, 2013, XW)
3. Austin Wintory - The River Why (31.5%) (tracks, missing tracks, album) (2012)
4. Austin Wintory - The Banner Saga (26.9%) (tracks, missing tracks, album, ...) (Digital Media, 2014, XW, Reference Recordings)
5. Austin Wintory - Monaco: What’s Yours Is Mine / The Gentleman’s Private Collection (25.3%) (missing tracks, tracks, album, ...) (Digital Media, 2013, XW)

---
# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? s

I’m not entirely happy with the last one, the list should be clearly visible and the prompt is two lines. Probably even the word Similarity should be taken out, the color-coded percentage is self-explaining.

sampsyo commented 8 years ago

A newline would greatly increase readability.

The current version does have a newline. Any chance you have an older version (I recall that at some point someone accidentally removed the newline temporarily)?

Since you invoke the import with beets import , it would make sense to use relative paths to reduce clutter (and overlong lines).

Good idea! Although I'd caution that paths beginning like ./ could intuitively suggest that they are relative to the current working directory. So they should either actually be relative to cwd, or some other way should make it clear where paths are relative to.

Some chars are mostly noise after the first time:

Hmm; I definitely see your point. Stuff like "URL:" is rather obvious, but "Candidates:" can actually be helpful for new users. How would we balance this with obviousness for new users? A compact configuration switch? Some kind of an automatic timeout?

Profpatsch commented 8 years ago

I think good use of symbols can immensely clarify the output, i.e. “symbols for ‘control commands’, words for content.

but "Candidates:" can actually be helpful for new users. How would we balance this with obviousness for new users?

If we need Candidates:, the prompt is probably not clear enough; but even now, # selection (default 1) already implies that you can select one of the above, right?

Although I'd caution that paths beginning like ./ could intuitively suggest that they are relative to the current working directory.

You’re right, then I propose just /. It intuitively stands for “root”—like for e.g. in websites—and it should be clear that it can’t mean the system root dir.

sampsyo commented 8 years ago

A leading / sounds quite reasonable.

Regarding Candidates:, I'd love to hear feedback from people who recently got started with the interface before we remove something like that. It could be that we could make the prompts even clearer!

fxthomas commented 8 years ago

A few thoughts on this since I started using Beets recently:

Yaourt

sampsyo commented 8 years ago

Great point! I'd love to see a mockup that makes some decisions about what's most important to call out.

ekjaker commented 8 years ago

I accidentally started a new thread (#1643) with ideas to improve UI. Obviously it would be better to have it all in 1 thread. So, as sampsyo requested, I tried to summarize all the ideas and comments from both threads in the text below to have a good starting point. Please add and edit where needed.

ekjaker commented 8 years ago

Introduction

To improve the UI, below some proposed options/settings. These are focused on these general goals:

Putting everything in curses would be awesome of course, but also a big change. So below some suggestions for the current CLI-UI.

Suggestions

standardization of output:

One of the issues with the UI, is that the information printed on screen necessary for making the necessary tagging decisions, is not consistent. This means that it is on different locations on the screen, with more or less lines printed, depending on the album. All this makes for a difficult experience, because the user's eyes have to search for the location of the info on the screen for each album.

[A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums, Enter search, enter Id, aBort?

instead of...

[A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort?

making the UI easier to read / navigate

Some minor tweaks might make the UI easier to read and to find the necessary information.

Finding tags for album
Candidates:
Correcting tags from:
To:
URL:
sampsyo commented 8 years ago

Awesome; I'm glad this discussion is continuing. If you're interested, @ekjaker or anyone else, maybe you can put together a series of medium-sized changes along with fully fleshed-out designs so we can get going with the implementation of some improvements.

ekjaker commented 8 years ago

@sampsyo: I think it would be possible to make a list of changes from the list above, but I don't I don't really understand what you mean with "a series of medium-sized changes along with fully fleshed-out designs". Could you please elaborate? Apart from that, I assume describing it all correctly in text is going to be quite cumbersome. It is a UI after all which has a graphical inclination. I've been looking for mockup tools to make it more visual, but none of the usual mockup suspects seem to support CLI-environments, and word processing applications are the best either. Anyone any ideas for tools to easily make and adjust mockups for a CLI-environment?

sampsyo commented 8 years ago

Yes, that's more or less what I meant! Prototyping out a set of UI changes, preferably with a screenshot, will help make it clearer what we need to do.

I don't have a specific recommendation for a tool, but you could try just using an HTML page with a <pre> element, styled appropriately.

ekjaker commented 8 years ago

OK, this is going to be a long post. My apologies. I have been playing around with layouts a bit. As it is all (formatted) text anyways, I will post it as text here as well. This way, everyone can easily copy-paste it somewhere else and make adjustments for new proposals.

I started out with a folder that gave a medium recommendation, then chose m, chose 2, chose m again, chose 1 again and finally apply. This gives a view of a few common UI situations as well as a common workflow (for me a least).

First you can find the output of these steps as they are now in beets:

old layout

G:\REORG\test originele files - kopie\[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB] (3 items)
Correcting tags from:
    Nicloas Jaar - Love You Gotta Lose You Again
To:
    Nicolas Jaar - Love You Gotta Lose Again EP
URL:
    http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4
(Similarity: 89.9%) (artist, media, album) (Digital Media, 2010, XW, Double Standard Records)
 * Don't Believe The Hype -> Don't Believe the Hype
[A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? m
Finding tags for album "Nicloas Jaar - Love You Gotta Lose You Again".
Candidates:
1. Nicolas Jaar - Love You Gotta Lose Again EP (89.9%) (artist, media, album) (Digital Media, 2010, XW, Double Standard Records)
2. Nicolas Jaar - Love You Gotta Lose Again EP (86.3%) (media, artist, album) (10" Vinyl, 2010, US, Double Standard Records)
3. Austin Catron - You Gotta (36.2%) (tracks, artist, album) (2006, US)
4. Elton John - You Gotta Love Someone (34.7%) (tracks, artist, album) (1990)
5. Peaches - Lose You (27.3%) (tracks, artist, album, ...) (12" Vinyl, 2009, GB, XL Recordings)
# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? 2
Correcting tags from:
    Nicloas Jaar - Love You Gotta Lose You Again
To:
    Nicolas Jaar - Love You Gotta Lose Again EP
URL:
    http://musicbrainz.org/release/06bfde9f-378a-421e-8cd9-6791288c5696
(Similarity: 86.3%) (media, artist, album) (10" Vinyl, 2010, US, Double Standard Records)
 * Don't Believe The Hype -> Don't Believe the Hype
Apply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? m
Finding tags for album "Nicloas Jaar - Love You Gotta Lose You Again".
Candidates:
1. Nicolas Jaar - Love You Gotta Lose Again EP (89.9%) (artist, media, album) (Digital Media, 2010, XW, Double Standard Records)
2. Nicolas Jaar - Love You Gotta Lose Again EP (86.3%) (media, artist, album) (10" Vinyl, 2010, US, Double Standard Records)
3. Austin Catron - You Gotta (36.2%) (tracks, artist, album) (2006, US)
4. Elton John - You Gotta Love Someone (34.7%) (tracks, artist, album) (1990)
5. Peaches - Lose You (27.3%) (tracks, artist, album, ...) (12" Vinyl, 2009, GB, XL Recordings)
# selection (default 1), Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? Copying artifact: White Denim - Last Day of Summer.cue
Copying artifact: White Denim - Last Day of Summer.log

Correcting tags from:
    Nicloas Jaar - Love You Gotta Lose You Again
To:
    Nicolas Jaar - Love You Gotta Lose Again EP
URL:
    http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4
(Similarity: 89.9%) (artist, media, album) (Digital Media, 2010, XW, Double Standard Records)
 * Don't Believe The Hype -> Don't Believe the Hype
[A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort?
This album is already in the library!
Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
New: 3 items, MP3, 244kbps, 12:18, 21.2 MB
[S]kip new, Keep both, Remove old? k  

The proposed layout is below. After that I will give an explanation of the choices I made and possible points of improvement.

new layout

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

    => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
       (artist, media, album) 
       (Digital Media, 2010, XW, Double Standard Records)

        ===> [a] apply
         [m] more candidates
         [s] skip
         [u] use as-is
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort

    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (artist, media, album) 
           (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (media, artist, album) 
           (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
           (tracks, artist, album) 
           (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
           (tracks, artist, album) 
           (1990)
    5. (27.3%) Peaches - Lose You 
           (tracks, artist, album, ...) 
           (12" Vinyl, 2009, GB, XL Recordings)

        ===> [#] selection (default 1)
         [s] skip
         [u] use as-is
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort

       #2 selected

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

    => (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
       (media, artist, album) 
       (10" Vinyl, 2010, US, Double Standard Records)

    ===> [a] apply
         [m] more candidates
         [s] skip
         [u] use as-is
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort

    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (artist, media, album) 
           (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (media, artist, album) 
           (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
           (tracks, artist, album) 
           (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
           (tracks, artist, album) 
           (1990)
    5. (27.3%) Peaches - Lose You 
           (tracks, artist, album, ...) 
           (12" Vinyl, 2009, GB, XL Recordings)

        ===> [#] selection (default 1)
         [s] skip
         [u] use as-is
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort

       #1 selected

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     

    => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
       (artist, media, album) 
       (Digital Media, 2010, XW, Double Standard Records)

        ===> [a] apply
         [m] more candidates
         [s] skip
         [u] use as-is
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort

    applied

    => This album is already in the library!
       Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
       New: 3 items, MP3, 244kbps, 12:18, 21.2 MB

    ===> [s] skip new
      [k] keep both
      [r] remove old

       keep both

First, it is important to notice that I didn't make use of color at this point. We can always add it later, but I feel a good layout should already work without it. The other choices I made are mainly the ones suggested in the summary in a previous post:

Stuff I really like about the proposal (and suggest to keep)

Stuff I don't really like too much

The last remark can be greatly countered by summarizing the action options like so (for instance for the more candidates actions):

[#] [s] [u] [t] [g] [e] [i] [b]

This would give this:

new layout (shortened action options)

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

    => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
       (artist, media, album) 
       (Digital Media, 2010, XW, Double Standard Records)

        ===> [a] [m] [s] [u] [t] [g] [e] [i] [b]

    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (artist, media, album) 
           (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (media, artist, album) 
           (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
           (tracks, artist, album) 
           (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
           (tracks, artist, album) 
           (1990)
    5. (27.3%) Peaches - Lose You 
           (tracks, artist, album, ...) 
           (12" Vinyl, 2009, GB, XL Recordings)

        ===> [#] [s] [u] [t] [g] [e] [i] [b]

       #2 selected

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

    => (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
       (media, artist, album) 
       (10" Vinyl, 2010, US, Double Standard Records)

    ===> [a] [m] [s] [u] [t] [g] [e] [i] [b]    

    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (artist, media, album) 
           (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
           (media, artist, album) 
           (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
           (tracks, artist, album) 
           (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
           (tracks, artist, album) 
           (1990)
    5. (27.3%) Peaches - Lose You 
           (tracks, artist, album, ...) 
           (12" Vinyl, 2009, GB, XL Recordings)

        ===> [#] [s] [u] [t] [g] [e] [i] [b]

       #1 selected

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     

    => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
       (artist, media, album) 
       (Digital Media, 2010, XW, Double Standard Records)

    ===> [a] [m] [s] [u] [t] [g] [e] [i] [b]

    applied

    => This album is already in the library!
       Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
       New: 3 items, MP3, 244kbps, 12:18, 21.2 MB

    ===> [s] [k] [r] 

       keep both

Clearly, this shortens and simplifies the output greatly, making it shorter but still way easier to use than the original. And we're not even using color yet. But for new users, this might make it more difficult to work with the actions. Although, to be honest, even with the full description, new users have to hit the manuals anyway to know what they actually do before being able to choose them. And once they've done that, I guess it won't be so difficult to know what each letter stands for. Or a new compact option might be created for a minimal output, as suggested before.

Other remarks:

That's it.As always, feel free to add or modify.

Ekjaker

Profpatsch commented 8 years ago

So much better than my suggestion. A great idea to use identation! I think we don’t need to look out for 80‑char terminals in 2015.

Some small nitpicks
Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
New: 3 items, MP3, 244kbps, 12:18, 21.2 MB

Comparisons like that should line up column-wise to make them easy to compare. For numbers like in the last column even the digits of the same magnitude should align and the same unit should always be used. (So no mixing kB and MB.)


(89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
    (artist, media, album) 
    (Digital Media, 2010, XW, Double Standard Records)

These blocks are hard to read. Probably a fat white for the title will trivially solve this problem. I would also align it like so:

(89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
        (artist, media, album) 
        (Digital Media, 2010, XW, Double Standard Records)
sampsyo commented 8 years ago

Awesome! Thanks for the initial designs. Here a few assorted thoughts:

ekjaker commented 8 years ago
thx for the feedback. In response:
With the initial post, I forgot to mention a few things...
Correcting tags from:
    Nicloas Jaar - Love You Gotta Lose You Again
To:
    Nicolas Jaar - Love You Gotta Lose Again EP
URL:
    http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4
ui:
   color: yes
   URL: green, no
   path: yellow, yes

The compact mode could even tie into this. The default new-user layout would have everything turned on, while the compact is one with more none-essential fields turned off. This can even be expanded to several options. Instead of just having a 'yes' or 'no' option, we could make it a 'full', 'compact', or 'no' option for every single ui-element. This obviously would give everyone a lot more customization options, would be fairly simple to use in the config, allows the use of full presets (copy the whole UI section into the config) and scales nicely with possible new fields added in the future not requiring a full UI-overhaul. But of course, again this might be a lot of work to implement. The development could be done in stages though, with every stage immediately adding functionality: first defining more fields (immediately usable for coloring), then adding the display 'yes' 'no' option, and finally adding compact modes. But I guess I'm getting ahead of myself. Maybe for now better to stick to one general UI -overhaul and leave the customization for later. :-)

New layout (compact): corrected

Below you can find the corrected layout as it was intended, with some minor adjustments added (see below).

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)

       ===> [amsutgeib]:    more candidates

       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)

       ===> [#sutgeib]:     #2 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

       => (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)

       ===> [amsutgeib]:    more candidates

       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)

       ===> [#sutgeib]:     #1 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     

       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)

       ===> [amsutgeib]:    applied

       => This album is already in the library!
            Old: 3 items,  FLAC, 773kbps, 12:18, 61.6 MB
            New: 3 items, MP3, 244kbps, 12:18, 21.2 MB

       ===> [skr]:          keep both
Adjustments:
       ===> [amsutgeib]:    more candidates

instead of...

       ===> [amsutgeib]:    

       more candidates
       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)

       ===> [amsutgeib]:    more candidates

or this...

       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)

                  ===> [amsutgeib]:    more candidates

Can't wait to actually try this new layout! It does really look like a major improvement. So what do you guys think?

Profpatsch commented 8 years ago

Can't wait to actually try this new layout! It does really look like a major improvement. So what do you guys think?

It is indeed. Can’t wait.

Still not sure what I prefer. This...

All for the second option. I quite often find myself missing the prompts because they don’t stand out enough. I’d tend towards making the ===> bright yellow/magenta/green, too.

I removed the URL completely as well as the album tags at the beginning, because honestly I don't use them and they seemed like dead weight.

I actually use the URLs quite a lot (because I’m a Musicbrainz geek), but they add heavy clutter. So I opt for a [+] show Musicbrainz info prompt option, which prints more information about a release. Possibly even for the muiltiple release view, but with a diff (that would minimize visits to musicbrainz).

The default new-user layout would have everything turned on, while the compact is one with more none-essential fields turned off.

I’m a quite strong advocate of the “less config options are better, if possible none” movement, because every config option includes a new code path into a program, which can be fatal if it appears high in the decision tree.

How about making the short version the only one, but changing each prompt to [amsutgeib+] [?] where ? expands to

         [a] apply: description
         [m] more candidates: description
         [s] skip: description
         [u] use as-is: …
         [t] as tracks
         [g] group albums
         [e] enter search
         [i] enter id
         [b] abort
         [+] more detail

for more help see `man beets`

The colors should also be fix, because there are only 8*2; if a user direly needs to change e.g yellow to green, he can always patch the source.

Now we’re down to path on/off, which can be set to on and voilà, no additional complexity. :)

ekjaker commented 8 years ago

All for the second option. I quite often find myself missing the prompts because they don’t stand out enough. I’d tend towards making the ===> bright yellow/magenta/green, too.

Don't know whether the second option is actually easier to spot in a screen full of text. I do recognize the issue with sometimes not being able to find the prompt. That's why I added the big ===>. Color will help too, but only as a plan b. Using color from the get-go to solve layout issues seems like a bad design principle. Speaking of color, I'm all for using color for easier readability, but there are some issues to take into consideration:

Love the [+] show Musicbrainz info. We could also use this to display corrections in tags. Often, this is none-essential information that clutters up the interface.

Also love the [amsutgeib+] [?]. Great solution for the beginner versus experienced user dilemma.

The colors should also be fix, because there are only 8*2; if a user direly needs to change e.g yellow to green, he can always patch the source.

Now we’re down to path on/off, which can be set to on and voilà, no additional complexity. :)

Don't really understand the 8*2 and what you mean with the path-thing though.

Profpatsch commented 8 years ago

color is very personal. What one person might think is perfect, will be very annoying to another. Don't really understand the 8*2

Ah, I see. In modern terminals (read: 1970) there are 8 colors (white, cyan, magenta, blue, yellow, green, red, black) and each in two variations (dark and bright), leading to 16 colors in total. It’s essentially a color palette. So as a user you can still pick your favourite variants of colors (in your terminal config).

So as a programmer you basically only have to think about how humans perceive certain hues, e.g. red as a warning, yellow as attention seeking, green/cyan as accents. Or something along these lines.

and what you mean with the path-thing though.

I was referring to the options:

ui:
   color: yes
   URL: green, no
   path: yellow, yes

If color is fix, the URL is in [+] and the path is always displayed, the ui config looks like this:

:)

sampsyo commented 8 years ago

Is there a way to read the size of a terminal interface?

Yes! In fact, we already use this to decide when to break the track title difference display. https://github.com/sampsyo/beets/blob/master/beets/ui/__init__.py#L539

I removed the URL completely as well as the album tags at the beginning, because honestly I don't use them and they seemed like dead weight.

Well, we need to be careful here. For example, the URL was added in response to specific user requests—you can search in the issues and commit history for the origin story. I would argue for, by default, keeping all the same information visible unless it's obviously useless; then, we can address separately the question of (optionally?) hiding some of it. (That would be your following point: this stuff should be configurable at a fine grain.)

Kraymer commented 8 years ago

Good job with the mockups!

my 2 cents :

So my version would be like

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]    
   ✓ (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
              (artist, media, album) 
              (Digital Media, 2010, XW, Double Standard Records)    
   ➙ [amsutgeib?]:    more candidates    
   1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
              (artist, media, album) 
              (Digital Media, 2010, XW, Double Standard Records)
   2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
              (media, artist, album) 
              (10" Vinyl, 2010, US, Double Standard Records)
   3. (36.2%) Austin Catron - You Gotta 
              (tracks, artist, album) 
              (2006, US)
   4. (34.7%) Elton John - You Gotta Love Someone 
              (tracks, artist, album) 
              (1990)
   5. (27.3%) Peaches - Lose You 
              (tracks, artist, album, ...) 
              (12" Vinyl, 2009, GB, XL Recordings)    
   ➙ [#sutgeib?]:     #2  

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     
ekjaker commented 8 years ago

@Profpatsch. OK, I think I get it. thanks for the explanation. Just two minor remarks:

So as a programmer you basically only have to think about how humans perceive certain hues, e.g. red as a warning, yellow as attention seeking, green/cyan as accents. Or something along these lines.

Problem with this is that the way it is now might be perfectly logical, it is intuitively counterproductive. Red is the alert color (or in beets the default text_error color), which means we humans tend to give this our immediate attention. Only in beets it means the release with the lowest rating is going to get the most attention, while the better ones will get yellow, so lower attention, hence intuitively counterproductive. I understand now (again, thx for the explanation) users can change this in their terminal, but this will mess up the logic for other apps used in the same terminal.

If color is fix, the URL is in [+] and the path is always displayed, the ui config looks like this:

:)

Always cool to have less config. Especially a blank one :) Only thing is that I was using path and URL only as an example. There are other fields as well that might benefit an on/off switch, such as the the initial album tags, tag corrections, or possible future ones. Ofcourse these might be covered within the [+] or other more info options.

And this brings me to the final @sampsyo remark. I guess the thing that needs to be decided is how to deal with the more or less information issue. To summarize the options, I think this is what's been put on the table for now:

  1. a general compactmode for advanced users, with less options
  2. defining more fields to enable/disable, even full/compact/disable and set specific colors. Might also lead to the compactmode as a group of settings.
  3. an interactive interface with a [+] for the URL and a [?] to display the action options
  4. just leave everything in it, but reorganize to make it more clear

I guess the way to get actual results fastest would be to start with 4, and then decide on 1, 2 or 3 (with 1 maybe being a global thing of 2). Personally I really like the granular configuration option, but the elegance of 2 really kicks ass too.

As for 4: here's a mockup, with the action options pushed to the right (as @Profpatsch preferred) and the URL added. I put the URL between brackets to keep the design consistent with the two above lines (warnings and release), and I moved it to after the release because the URL tends to be the longest line and this way it doesn't mess up the overview to much. Or in other words: it looks less cluttered, prettier. ;-)

New layout (compact): including URL, actions to the right
/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
                  (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)

                  ===> [amsutgeib]:    more candidates

       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)

                  ===> [#sutgeib]:     #2 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]

       => (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
                  (http://musicbrainz.org/release/06bfde9f-378a-421e-8cd9-6791288c5696)

                  ===> [amsutgeib]:    more candidates

       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)

                  ===> [#sutgeib]:     #1 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     

       => (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
                  (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)

                  ===> [amsutgeib]:    applied

       => This album is already in the library!
            Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
            New: 3 items, MP3, 244kbps, 12:18, 21.2 MB

                  ===> [skr]:          keep both

edit: @Kraymer. Missed your post wile typing mine. Like your mockup with the far fewer linebreaks. Makes it way more compact, but, in my eyes, also a little less clear.

ekjaker commented 8 years ago

To compare, below the same mockup, but with proposals by @Kraymer incorporated.

New layout (compact): including URL, actions to the right and fewer linebreaks

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
       ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
                  (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)
               ➙ [amsutgeib]:    more candidates
       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)
               ➙ [#sutgeib]:     #2 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
       ✓  (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
                  (http://musicbrainz.org/release/06bfde9f-378a-421e-8cd9-6791288c5696)
               ➙ [amsutgeib]:    more candidates
       1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
       2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
                  (media, artist, album) 
                  (10" Vinyl, 2010, US, Double Standard Records)
       3. (36.2%) Austin Catron - You Gotta 
                  (tracks, artist, album) 
                  (2006, US)
       4. (34.7%) Elton John - You Gotta Love Someone 
                  (tracks, artist, album) 
                  (1990)
       5. (27.3%) Peaches - Lose You 
                  (tracks, artist, album, ...) 
                  (12" Vinyl, 2009, GB, XL Recordings)
               ➙ [#sutgeib]:     #1 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     
       ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
                  (artist, media, album) 
                  (Digital Media, 2010, XW, Double Standard Records)
                  (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)
               ➙ [amsutgeib]:    applied
       ✓   This album is already in the library!
            Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
            New: 3 items, MP3, 244kbps, 12:18, 21.2 MB
               ➙ [skr]:          keep both
Profpatsch commented 8 years ago

@Kraymer has a good point, maybe an indentation of 3 or 4 spaces instead of 7 might make more sense (it keeps the lines shorter).

Although I’m of the firm opinion that there should be one linebreak after each user input, otherwise one loses one’s reference point.

ekjaker commented 8 years ago

new mockup as @Profpatsch proposed based on @Kraymer suggestions: 4 spaces instead of 7, linebreak after each userinput and aligned information with duplicates (as requested earlier).

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
    ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
               (artist, media, album) 
               (Digital Media, 2010, XW, Double Standard Records)
               (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)
            ➙ [amsutgeib]:    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
               (artist, media, album) 
               (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
               (media, artist, album) 
               (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
               (tracks, artist, album) 
               (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
               (tracks, artist, album) 
               (1990)
    5. (27.3%) Peaches - Lose You 
               (tracks, artist, album, ...) 
               (12" Vinyl, 2009, GB, XL Recordings)
            ➙ [#sutgeib]:     #2 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
    ✓  (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
               (media, artist, album) 
               (10" Vinyl, 2010, US, Double Standard Records)
               (http://musicbrainz.org/release/06bfde9f-378a-421e-8cd9-6791288c5696)
            ➙ [amsutgeib]:    more candidates
    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
               (artist, media, album) 
               (Digital Media, 2010, XW, Double Standard Records)
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
               (media, artist, album) 
               (10" Vinyl, 2010, US, Double Standard Records)
    3. (36.2%) Austin Catron - You Gotta 
               (tracks, artist, album) 
               (2006, US)
    4. (34.7%) Elton John - You Gotta Love Someone 
               (tracks, artist, album) 
               (1990)
    5. (27.3%) Peaches - Lose You 
               (tracks, artist, album, ...) 
               (12" Vinyl, 2009, GB, XL Recordings)
            ➙ [#sutgeib]:     #1 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     
    ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
               (artist, media, album) 
               (Digital Media, 2010, XW, Double Standard Records)
               (http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4)
            ➙ [amsutgeib]:    applied

    ✓   This album is already in the library!
         Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
         New: 3 items, MP3,  244kbps, 12:18, 21.2 MB
            ➙ [skr]:          keep both
sampsyo commented 8 years ago

Awesome! Thank you for continuing to iterate. Here are just a couple more thoughts:

Kraymer commented 8 years ago

2 questions: why all these parentheses? is it written somewhere in the docs what this line "artist, media, album " means? or can you just explain it to me

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     
  ✓ 89.9% Nicolas Jaar - Love You Gotta Lose Again EP
          artist, media, album 
          Digital Media, 2010, XW, Double Standard Records
          http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4
➙ [amsutgeib]:    applied
sampsyo commented 8 years ago

Those are the distance components. They were added some time ago by @mrmachine to give an idea about why some a match is "good" or "bad". The list artist, media, album means that those fields differ between your tags and MusicBrainz.

ekjaker commented 8 years ago

@sampsyo:

@Kraymer:

new proposal: no parentheses for extra info, prompt without indentation
/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
    ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
               artist, media, album 
               Digital Media, 2010, XW, Double Standard Records
               http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4
➙ [amsutgeib]:    more candidates

    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
               artist, media, album 
               Digital Media, 2010, XW, Double Standard Records
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
               media, artist, album
              10" Vinyl, 2010, US, Double Standard Records
    3. (36.2%) Austin Catron - You Gotta 
               tracks, artist, album
               2006, US
    4. (34.7%) Elton John - You Gotta Love Someone 
               tracks, artist, album 
               1990
    5. (27.3%) Peaches - Lose You 
               tracks, artist, album, ... 
               12" Vinyl, 2009, GB, XL Recordings
➙ [#sutgeib]:     #2 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]
    ✓  (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP
               media, artist, album 
               10" Vinyl, 2010, US, Double Standard Records
               http://musicbrainz.org/release/06bfde9f-378a-421e-8cd9-6791288c5696
➙ [amsutgeib]:    more candidates
    1. (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP 
               artist, media, album 
               Digital Media, 2010, XW, Double Standard Records
    2. (86.3%) Nicolas Jaar - Love You Gotta Lose Again EP 
               media, artist, album 
               10" Vinyl, 2010, US, Double Standard Records
    3. (36.2%) Austin Catron - You Gotta 
               tracks, artist, album
               2006, US
    4. (34.7%) Elton John - You Gotta Love Someone 
               tracks, artist, album 
               1990
    5. (27.3%) Peaches - Lose You 
               tracks, artist, album, ... 
               12" Vinyl, 2009, GB, XL Recordings
➙ [#sutgeib]:     #1 

/[Double Standard Records 04] Nicolas Jaar - Love You Gotta Lose Again [V0 WEB]     
    ✓  (89.9%) Nicolas Jaar - Love You Gotta Lose Again EP
               artist, media, album 
               Digital Media, 2010, XW, Double Standard Records
               http://musicbrainz.org/release/8e4ae230-51e1-436e-9f83-f5b7740f03d4 
➙ [amsutgeib]:    applied

    ✓   This album is already in the library!
         Old: 3 items, FLAC, 773kbps, 12:18, 61.6 MB
         New: 3 items, MP3,  244kbps, 12:18, 21.2 MB
            ➙ [skr]:          keep both

Personally, I like this one less. The parentheses, although left there by accident, did seem to serve a fuction of separating the release name from the additional information. Now it feels like we're going back to blocks of text, making it difficult to find separate parts in it. I also tried removing the parenthesis from the match percentage, but that immediately dropped legibility tremendously, so I kept those. It looks like at least that part really benefits from using them. But of course, other characters might work as well.

ekjaker commented 8 years ago

@sampsyo

I've been going through my testfolder, tagging everything till I found one with changes in the tags that actually needed input. although most of the releases did have changes in the tags, they were all highly recommended and therefor went through without the need for input. What I'm trying to say is that in such cases, as it is a match that got automatically accepted, it doesn't really help with the decision process to display them, as there is no decision to take. On the other hand, as there is no decision to take, it doesn't interfere with it either. So I guess it doesn't really make a difference.

The one release I did find with changed tags and the need for input is this one. Fortunately it is one with only 2 tracks with changed tags. You can find 2 mockups below, building on previous ones. The first without a [+]option, the second with. Basically what both do is indent the tracks to align them with the rest of the layout, using the * to make them stand out.

no parentheses for extra info, prompt without indentation, tracks with changed tags added.
\[2012] Lion (V0) (4 items)
    ✓  (86.2%) Harmonic 313 - Lion
               source, year, media
               Discogs, File, 2012, UK, Warp Records
               https://www.discogs.com/Harmonic-313-Lion/release/4090135
             * Lion (feat. Rikodan) -> Lion (Feat. Rikodan)
             * Lion (feat. Fox)     -> Lion (Feat. Fox)
➙ [amsutgeib]:    applied
no parentheses for extra info, prompt without indentation,compact mode with [+]-option
\[2012] Lion (V0) (4 items)
    ✓  (86.2%) Harmonic 313 - Lion
               source, year, media
               Discogs, File, 2012, UK, Warp Records
➙ [amsutgeib+]:   more info

\[2012] Lion (V0) (4 items)
    ✓  (86.2%) Harmonic 313 - Lion
               source, year, media
               Discogs, File, 2012, UK, Warp Records
               https://www.discogs.com/Harmonic-313-Lion/release/4090135
             * Lion (feat. Rikodan) -> Lion (Feat. Rikodan)
             * Lion (feat. Fox)     -> Lion (Feat. Fox)
➙ [amsutgeib]:    applied
Profpatsch commented 8 years ago

The parentheses, although left there by accident, did seem to serve a fuction of separating the release name from the additional information.

I agree. The title has to stand out some way, be it with a bold font or because it looks different from the rest.

tagging everything till I found one with changes in the tags that actually needed input.

You can use the -t (timid) flag for that.

Profpatsch commented 8 years ago

The first without a [+]option, the second with.

Don’t you need the change information in any case in order to decide whether to apply or not?

Actually my idea for [+] was that it could be used to display musicbrainz information about a track/release (the link and information that isn’t displayed as of yet, but helps with the decision).

ekjaker commented 8 years ago

Just a small remark on indentation. If the line is always going to be short, short enough to always fit on the screen even in the smallest implementation, there is actually no reason not to use indentation so long as it benefits the whole layout. We are only moving the whitespace in front of the text instead of behind it, making it useful as a structuring element.

ekjaker commented 8 years ago

@Profpatsch:

tagging everything till I found one with changes in the tags that actually needed input. You can use the -t (timid) flag for that.

What I was trying to say was that most releases don't even need the tag corrections, as they get accepted anyway.

Don’t you need the change information in any case in order to decide whether to apply or not?

Well, actually no, as most get accepted anyways, even with tag changes. So if I get at 90%, I don't always need that info to make that change.

Actually my idea for [+] was that it could be used to display musicbrainz information about a track (the link and information that isn’t displayed as of yet, but helps with the decision).

I'm sorry, I kinda highjacked your [+]to use it for the tag corrections as well. Hope you don't mind. Without [+]: very minimal output, with: [+]: Musicbrainz, tag corrections, (maybe other fields?)

Kraymer commented 8 years ago

A more adventurous design, fullscreen mode à la nanoeditor :

So it's an extrem approach, where the output is cleared (but saved in logs) as soon as the release is processed. Having release title and prompt always at same position on screen helps readability.

The prompt character could be changing when waiting for an input :

beet 001

beet 002

The list artist, media, album means that those fields differ between your tags and MusicBrainz.

@sampsyo thks for the explanation. Intuitively, I thought it was the matches with MB, hence I added a different symbol in the mockup ^^

mrmachine commented 8 years ago

It's great to see such a detailed and rapidly unfolding discussion on the beets UI. I'm a bit late to the party, but I do have a couple of things to add. Hopefully this counts as constructive criticism, and not just criticism :)

Issues

1. I think all of the mockups so far have way WAY too much white space (indentation and blank lines).

I'm also one of those people who uses a small terminal. I think a lot of people do use terminals around ~80 wide (or if wider, not much wider) because they can fit more of them on screen, and because the vast majority of command line tools are heavily geared towards small terminals. Having a large terminal just nets you vast amounts of wasted white space in most cases.

There are also a tonne of albums and tracks with really long titles. More indentation means a higher chance of having to wrap lines more frequently, and that there will be less space available on the all the wrapped lines. To keep wrapped lines associated with the line above, they might be slightly indented further still (which exacerbates the problem) or prefixed with a symbol.

At the very least, we need to see in the mockups how it looks with very long titles at 80 characters wide, and I would suggest a maximum tab width of 2 characters, and if the line starts with a symbol (e.g. a bullet point or tick) then it should be just the symbol plus a space, with subsequent lines having two spaces.

2. I disagree that the red colouring for low percentage matches is counter-intuitive.

Anything that is a low percentage matches should be red (an alarm colour) to ensure that you really look closely at them before thinking about applying them. If there's a lot of red showing up, it's a stronger indication that you don't want to accept those changes.

3. I think that we should keep the parenthesis around the match distance and label information.

This is supplementary information. Whether it appears on the same line as the album title or on its own, it's still supplementary information and this helps to visually distinguish it from the primary information which is the album and track titles.

4. I'm not sold on the idea of clearing the screen before every album.

If we want to ensure the interface appears in a consistent location at all times, we should do so with curses (?) so that when the app is quit, the users previous history is kept intact. With this we would also need to implement scrolling, in case a match contained more data than fits on one screen.

With both options we also lose the ability to scroll back through the history of previous matches, which can be useful. I think it would be sufficient to use blank lines and symbols to clearly delineate new albums.

And what about when the app is running non-interactively? It should definitely continue to work as it does now in this case, which means supporting two types of behaviour.

5. I don't think that the interface needs to be designed first without colour.

I think that most people will have colour by default and will want colour. So our mockups should target that environment first. If it's a bit harder to use without colour, then it's a bit harder to use without colour, as long as it is still functional without colour.

Using colour will allow us to stick with a much more compact interface, and avoid making unnecessary compromises in the layout to make plain text stand out, when simple colour could do the job just as well or better without layout changes.

6. I think we should keep the full path to the files being matched.

This line is not indented and it doesn't matter so much if it is long or if it wraps. In fact, it might even help delineate the start of a new album as paths don't appear anywhere else.

The relative folder name will (often) just replicate the tagged album name, so without the full path it just looks like redundant duplicated information. With a relative path, it's not possible to just copy the whole thing and doing cd <paste> in a new terminal or Cmd-Shift-G in Finder (OS X).

Also, using just a / at the beginning of a relative path (which might have only one folder in it) is misleading and really isn't a great indicator that this is even a path at all.

7. We could (sparingly) use graphical unicode characters (like Homebrew does).

These should only be used for very important information to avoid becoming overwhelming. For example, to delineate albums, and maybe to indicate the top match when it passes the highest matching criteria, or the interactive prompt where users need to make a choice.

We may be able to get access to more icons (e.g. font-awesome) with something like:

Font-awesome includes icons we might like to use such as an open folder (for the path), multiple check marks (to differentiate the top match from lesser matches, in addition to colour), an external link (for the music brainz URL), audio file (for when we display track file names, when they are not yet tagged), and a multitude of arrows, carets and chevrons to choose from.

8. I'm not sure about the super abbreviated options on the input prompt.

It's easy to remember a couple of the most often used options, but I'd be annoyed if I had to constantly mentally parse a string like amsutgeib, as I'd probably only know 2-3 of the options right away at most.

The problem gets worse if we use this style for multiple different prompts, where the same letter might do something different, or an option you frequently use on one prompt is missing from another prompt.

I would much prefer something like [a]pply, [m]ore, [s]kip, [?]: although it looks like we have more options now than we had and they might not fit on one line anymore?

Even if it wraps, I think I'd rather see all options in one line, with each option being ideally 1 word (maybe 2 words at most) in length with a shortcut key indicated.

This is the primary interface into the program, and I don't want to be constantly hitting ? and filling up the screen with many lines of verbose help text just to get even a hint as to what a shortcut key is likely to do.

I also don't want to ever accidentally hit the wrong shortcut thinking it does one thing and then have it do something else to my library.

ekjaker commented 8 years ago

Up till now I've always made a new mock-up with every new suggestion added to it. I honestly don't know how to that with @mrmachine's suggestions (except maybe point 7) without ending up very close to the situation as it is now.

I think I'm going to take a time-out and watch this discussion a bit from the sidelines. I have a huge backlog in files that need to be tagged. I might just as well get started on it.

mrmachine commented 8 years ago

@ekjaker don't be too discouraged by my comments. I'm just one person with an opinion, and I haven't noticed this thread until now and haven't been active with beets for quite a while now.

If everyone else feels that a change is an improvement, I won't stand in the way, especially given that I do not have an alternative proposal or significant time to spend contributing actual code changes right now.

But it would be good to see at least some mockups with colour and with real data that is wrapped at 80 characters, so we can get a fuller impression of the proposed changes :)

Profpatsch commented 8 years ago

I think a lot of people do use terminals around ~80 wide (or if wider, not much wider) because they can fit more of them on screen, and because the vast majority of command line tools are heavily geared towards small terminals.

Since beets is an interactive command line tool I don’t see the point of explicitly conforming to a 80 character layout. You do know that stems from terminal screens in the 60s and is an arbitrary number, right?

I think that most people will have colour by default and will want colour.

As with >80 characters we can happily assume in 2015 that people have a terminal emulator that supports a 16 color palette.

With a relative path, it's not possible to just copy the whole thing and doing cd in a new terminal or Cmd-Shift-G in Finder (OS X).

That’s a clear candidate for extended information under [+]. But I am not sure about your intention: In the first part you want the lines to be under 80 characters, and now you want every path line to include /home/user/myuser/Documents/Music/untagged/new/?

Good point about / implying absolute paths, ./ probably is the more intuitive solution after all.

mrmachine commented 8 years ago

@Profpatsch

Being interactive or not makes little difference to the requirement to support 80 character terminals.

People run all sorts of interactive and non-interactive programs in their terminals, and people often keep their terminal size small because most command line tools don't need more space and people can run multiple terminals side by side. In fact the beets code base itself is consistently wrapped at 80 characters, and @sampsyo has said he is an 80 column person.

I'm not suggesting that we enforce an 80 character limit on the UI, like PEP8 suggests with hard wrapping long lines. I'm suggesting that we at least consider in the mockups how the proposed UI changes will look for users who do have their terminal sized as small as 80 characters wide.

I am suggesting that this is the minimum terminal width we should support, not the maximum. For users who use a wider terminal, then long lines will not need to be wrapped as frequently.

I don't think including the full path to the directory being matched is contrary to supporting terminal widths as small as 80 characters. Like I said, the path is one of if not the first thing that appears when a new album is being matched. It doesn't need to be indented, so it can use the full width of the terminal and it won't look so weird if it does wrap because it will still be one contiguous block. I'd be happy for it to be de-emphasised by making it a very dark grey (on black) or light grey (on white) colour, so it doesn't dominate the actual metadata that is being presented for review.

mxmerz commented 8 years ago

I took the freedom of coloring and emphasizing @ekjaker's mockup from this comment to get an impression of how it would look in my terminal (I like colors and I would definitely turn them on in a new UI). This is what I ended up with:

beets-mockup1

I have to say, I already like this more than the existing interface! A few thoughts:

Anyway, this as a quick first draft and brain dump – feedback very welcome! Maybe I’ll have time over the weekend to work on this a bit more or even try myself on beet's code directly. (The image above is just the result of some echo commands peppered with ANSI codes in a shell script.)

ekjaker commented 8 years ago

Liking it!

  • Maybe it would help to add an h option to these concise prompts, as a way to get the more > verbose prompt. Would be helpful for inexperienced and forgetful users. Maybe even > [amsutgeib]/[h]elp as prompt?

I agree. A suggestion was made previously to do this with a +, but an hwould work just as well.

  • It might be appropriate to color the artist and album title of the first candidate as well, to underline it being the default selection/best result.

Sounds like a good plan. I would also color the first line, the path, to make it stand out more, as it is the reference to match everything to. I've been playing around in the code, and added a coloring field for this path. After using it a bit on imports, I have to say it helps a lot to keep a visual reference.

  • Showing the selected action after a prompt seems to me like a good way to keep an overview when scrolling through past actions.

Again, I agree. I proposed something similar before, but prefer your more verbose selection feedback in toned down colouring. Nice!

  • The only line that does not fit into 80 columns is the URL line – maybe it is possible to ditch the http:// or even http://musicbrainz.org part of it?

Honestly, I can' really say anything useful on this as I never use it. (I even removed it completely on my local fork). But I'm sure others do use it often, so maybe they can give some feedback? As for the 80 columns, except maybe for the path and the URL, everything else should fit nicely. Unfortunately, this will probably not be the case when working with filename corrections. Good news is, the code as it is now already has stuff in it to help with wrapping lines, so I think it should be doable to keep the 80 columns limit and the indentation without shifting the whole layout.

Anyway, this as a quick first draft and brain dump – feedback very welcome! Maybe I’ll have time over the weekend to work on this a bit more or even try myself on beet's code directly. (The image above is just the result of some echo commands peppered with ANSI codes in a shell script.)

Really nice mockup! I hope to find some time this weekend as well to play around some more in the code to see what works and what not.

Profpatsch commented 8 years ago

It looks faaaaabulous with colors.

A suggestion was made previously to do this with a +, but an hwould work just as well.

I think ? would be the universally unambiguous symbol for help.

maybe it is possible to ditch the http:// or even http://musicbrainz.org part of it?

That would destroy the ability to click on the link in the terminal. I think pushing it into the + extended menu makes a lot of sense.

mxmerz commented 8 years ago

Thank you very much for the feedback! I couldn’t help myself and played around with it a little bit more, concentrating on the first prompt. I changed it quite a bit, the overall goal was to crank up the information density while still keeping it readable and simple.

beets-mockup2

Yeah. I’m not sure if I totally overdid it and this looks crazy, I think by now I spent too much time with it to see the flaws :wink: Feedback, again, very welcome.

Profpatsch commented 8 years ago

Wow, a complete revamp. Interesting.

My main criticism about this is the that it has a lot more noise, e.g. “Match with … similarity“ is completely redundant after the first time.

The unchanged information is mostly not interesting, but it’s very good to have if you explicitly want to see it (the ominous +-menu)

I like the idea of having the kind of change on the line of the change instead of a list separately. We should incorporate that. I also like the new prompt, with the hilighting.

mrmachine commented 8 years ago

@mxmerz overall I like this new mockup! Looks like this much detail would only be visible once you actually selected a candidate, though. Is that the case? And we would therefore also expect to see track changes here?

I don't mind the redundant "Match with N similarity" heading. There's always a line taken up by the box anyway, and I am also a fan of the the other labels which some might say are always redundant. Even if it's repeated all the time, and you can infer the type of value from looking at the value, I think it just looks much nicer and is mentally quicker and easier to put all the pieces together at a glance with the labels.

Also I'm liking the reduced use of indentation, though I was going to reply about the first mockup and suggest that we could use a URL shortener to prevent MB links from wrapping and still make them clickable.

sampsyo commented 8 years ago

Very cool!

The whole concept of separating "Changes" from "Unchanged" is an interesting direction. It's a counterpoint to how we usually do it, where changed & unchanged fields are mixed together but marked individually. A possible drawback here is that it could make it harder to find the release title, for example, if it is sometimes changed and sometimes unchanged.

I also really like one specific detail in these mockups: the light-colored additional context after tentatively typing a selection character. This would take some terminal-manipulation trickery to get right, but it would be worth it to show more context without needing a full help screen.

In the first mockup above, making the index numbers the same color as the similarity was an inspired choice.

I'm not 100% sure about the lines around the box—for me, it's easy enough to see what I'm looking for by the position (especially if we keep the inverted style for the path name as a separator).

On long URLs: this currently looks great based on the typical size of MusicBrainz URLs. We'll probably just have to live with the fact that extremely long URLs, if other sources have them, will wrap.

ekjaker commented 8 years ago

Sold!

No seriously, I really like your mockup, although I wouldn't want to have to be the one to code it. Only maybe a few minor tweaks, but I guess most have already been mentioned.

Kraymer commented 8 years ago

This would take some terminal-manipulation trickery to get right, but it would be worth it to show more context without needing a full help screen.

I have a mixed feelings about this : it looks good for sure but it breaks the base assumption we have of a prompt aka prompt = "optional intro" + user input. Ignore the subtle color contrast and you lose in usability (no way to distinguish typed characters from introduced text).

Could we use a variant of the more widespread completion approach using the readline module where typing m<TAB> would auto-complete to m (show more candidates) (and keeping the subtle colors gradient if possible) ? We introduce a keystroke but it makes the ui less surprising.

Edit: in fact we introduce much more keystrokes in the case user wants to delete his input :( I would just keep the prompt with the explicit [h]elp option, but no additional (show more candidates) msg insertion, seems a not-so-good idea to mess up with the input line.

Kraymer commented 8 years ago

@mxmerz i like your mockup too !

I think though I'd prefer a more compact view of the diffs like :

3 changed, 4 unchanged
≠ Artist...
≠ Album ...
≠ Media ...
  Release ...
  Region ...
  Label ...
  Url ...

using same color for 3 and ≠ symbols ?

mxmerz commented 8 years ago

Hi everybody, first: Thank you very much for the feedback! I got another mockup together over the last two days, but first some thoughts:

@mrmachine: Yes, the idea was that mockup #2 shows beets presenting you the best match. And yes, it should have track changes, they are in the next mockup – I just didn’t have them ready two days ago :wink:

I’m not sold on the URL shortener – I think it introduces more problems and drawbacks than it solves (MusicBrainz ID is not readable anymore, extra network traffic, potential privacy issues,…). I would prefer it to adjust the layout.

@sampsyo: Actually, I didn’t even think about that – I thought the “help” text would only show up after the user already pressed enter to help the user later when scrolling through it again. Interesting idea to show it while typing. I don’t know how it would work when it’s actually implemented though and I share the main concerns of @Kraymer: In the end, the user might turn out to be more confused by where the current cursor position is.

Mockup 3

I ditched the box again for the next mockup. I put it in to help with orientation, but it is a big waste of columns and lines, so I tried to work without it. I also tried to use the suggestion by @Kraymer (Thanks) for the compact diff view and, in the process, also lost the strict separation of changed/unchanged again.

beets-mockup3aa

beets-mockup3b

Didn’t change much, just removed some indentation and added the change markers ≠+-•.

Prompt Options

And finally, despite the potential danger of getting us into a bikeshed argument: Some options for the prompt text and coloring and mockups for different inputs.

prompt-options1

I think I prefer option 5 or 6 for the prompt text and option 1 or 2 for coloring.

As always, abrasive and ruthless criticism welcome.

mrmachine commented 8 years ago

@mxmerz looks really excellent. I agree with keeping the full MusicBrainz link. I only have two small nits to pick:

1) In the first image the supplementary release info (label, year, etc) are separated with pipes. In the next they are also bookended on both sides with pipes. I would prefer this to be consistent and to lose the bookends.

2) I'd like to see how a more descriptive prompt looks with the new design. I personally really just don't like the ultra-condensed [amsutgeib+]. I could only guess the meaning of [a]pply, [s]kip and [+]details without looking at a cheat sheet. I'd be fine if this ultra-condensed prompt is an option, even if it's the default option, but I think I'd still really like to see a more descriptive prompt remain as an option as well. E.g. [a]apply, [m]ore candidates, [s]kip, [u]se as-is, match as [t]racks, [g]roup albums, [e]nter search, enter MusicBrainz [i]d, a[b]ort, [+]more details, [h]elp. I really don't mind if this wraps, but with me having to make a choice at every prompt after reviewing the match data, I really want to know what all the available choices are at all times. It would really annoy me to have to constantly hit [h]elp just to see the options, and then probably lose sight of the actual match data (assuming the help wouldn't display all on a single line).