History:Simple Advanced Relationships Interface

From MusicBrainz Wiki
Status: This Page is Glorious History!

The content of this page either is bit-rotted, or has lost its reason to exist due to some new features having been implemented in MusicBrainz, or maybe just described something that never made it in (or made it in a different way), or possibly is meant to store information and memories about our Glorious Past. We still keep this page to honor the brave editors who, during the prehistoric times (prehistoric for you, newcomer!), struggled hard to build a better present and dreamed of an even better future. We also keep it for archival purposes because possibly it still contains crazy thoughts and ideas that may be reused someday. If you're not into looking at either the past or the future, you should just disregard entirely this page content and look for an up to date documentation page elsewhere.

I have started to creates some HTML mockups, that you can look at here: http://de.geocities.com/akademiederwirrenideen/musicbrainz/ar.html --DonRedman

This page covers the following sections:

  1. Goals of this proposal
  2. Display of relationships
  3. Creation of relationships
  4. Relationship Types

Goals of this proposal

I will try to describe a UI for Advanced Relationships that is

  1. easy and especially quick to implement,
  2. a good base for any further development,
  3. independent of certain AdvancedRelationshipTypes.

Display of relationships

The UI should not care about the type of relationship. It should display them all the same way.

Rationale: We have the possibility of adding new types of relationships. If we decide that certain types of relationsips should be displayed a certain way, then what do we do with new relationships? So we need a place where all relationships that are relevant to the element in question are displayed.

I propose an

    where each
  • represents a type of relationship. The relationships would be listed separated by commas. It would say: <example> </example> Note that the relationships are given in link phrases. I think this is extremely important. AR are not a simple thing. How do you want a normal user to understand "Miles Davis performer Milles Davis Sextet"?. Therefore each AdvancedRelationshipType should have two link phrases that describe the relationship in each direction. <example>
    • Link type:
    • : artist-artist
    • Parent path:
    • : ROOT / Same / Band
    • Name:
    • :[ Band ]
    • Link Phrases:
    • Spell out the relationship as if you would use it in a full sentence. Do so in both directions. E.g. '<release> was produced by <artist>' and '<artist> produced <release>'. Please use plural forms where there can be more than one of these relationships.
      • One way:
    • : artist A [ also performed as ] artist B
      • Other Way:
    • : artist B [ has the members ] artist A
    • Description:
    • : You can add extra description here, explaining what is covered by this relationship type and what not. [ . . . ]

    </example>

    The display uses these link phrases. This is much easier to understand for a user.

    Where to put it?

    For the beginning I would suggest a new
    similar to the one for annotations on the artist/release/track pages that says no more than this:
    • "See relationships to this release" or "This release has no relationships yet" and "Create a new relationship".
    This links to a new page like
     albumrelationships.html?albumid=18229
    
    this is similar to
     albumdetail.html?albumid=18229
    

    Rationale: The number of relationships can grow quite high. if we decide to display them all on the artist/release/track page, this can get cluttered very quickly. So I propose that we first make a page that displays all relationships to an artist/release/track. Then we can decide to display selected relationsips on the artist page and esp. on the release page. If you think such a div is too modest, then just add a note "This is a cool new feature!". This will help. Also we need an icon for relationships.

    We can make an exception for tracks, as there is not much information of interest on the track page.

    • The information whether a track has a relationship could be represented in a new coloumn of the release page, which would then display the relationships icon.
    • The relationships to a track would be displayed on the trackdetails page. (Up to now the average user would never go on the trackdetails page. This has to change as the relationship-editor will only log the track if you loaded the track-page (see below).)

    Creation of relationships

    This is the third (and most up to date) Model

    Notes

    • This is the result of an IRC chat that RobertKaye, DaveEvans and DonRedman had on November 9th.
    • Creation of a relationship works following this principle: Users can select elements as 'elements to be related' by clicking on a link next to that element. This element gets then added to a list and the user can choose two elements and create a relationship between them. The actual System is more intelligent but follows this principle. I know that this is one more click than optimal, but at least it is transparent and flexible.
    • We still have to discuss the placement of the "relate this element" links. I do not like the track-links on the release page at all.
    • I am not sure about the naming, that can be changed later. Right now I focus on correct terminology.

    1. Select elements:

    Each element has a link "relate this element" or "create relationship to/from/with this artist/release/track". If you click on this link, the current page will be reloaded with a relationship-box at the top of it.

    relationship-box for one element: If you have choosen one element only, the box says:
      <example>
        create a relationship with:
        * Miles Davis
        You have only selected one element. Please select the other element 
        that you want to relate to Miles Davis by clicking on the 
        "relate this element" link next to it.
       [ Relate to URL | Cancel | Help ]
      </example>
    
    • relate to URL sends you to the create-relationship page with Miles Davis as first element and a Text field to enter a URL as second element (see Nr. 3 below)
    • cancel flushes the list of elements and reloads the current page without the relationship-box.
    • help pops up a help-page (which explains what AR is about, how it works etc.)
    relationship-box for two elements: If you have choosen exactly two elements, the box says:
      <example>
        create a relationship between:
        * Miles Davis
        * John Coltrane
       ["create relationship"]["cancel"]["help"]
      </example>
    
    • create relationship sends you to the create-relationship page with Miles Davis as first element and John Coltrane as second element (see Nr. 3 below)
    • cancel flushes the list of elements and reloads the current page without the relationship-box.
    • help displays the help popup
    relationship-box for more than two elements: If you have choosen more than two elements, the box says:
      <example>
        You have selected more than two elements. The last two elements you selected are:
        * John Coltrane
        * Prince
       ["create relationship between these two"]["see list of selections"]["cancel"]["help"]
      </example>
    
    • create relationship between these two sends you to the create-relationship page with John Coltrane as first element and Prince as second element (see Nr. 3 below)
    • see list of selections sends you to the choose-elements page (se Nr. 2 below).
    • cancel flushes the list of elements and reloads the current page without the relationship-box.
    • help displays a help popup

    2. Choose two elements

    This only happens if you have selected more than two elements and have asked to "see list of selections".

    Choose elements page: This page shows you the full list of selected elements. It lets you choose two elements with the current method of two rows of selection-widgets. It also lets you choose a blank URL element at the bottom. And of yourse you can flush the list.

      <example>
        You have recently selected the following elements. Please choose two
        of them that you want to relate to each other:
        (*) (_) Miles Davis
        (_) (*) John Coltrane
        (_) (_) Prince
        (_) (_) - link to URL -
       ["create relationship"]["clear list"]["help"]
      </example>
    
    • create relationship sends you to the create-relationship page with Miles Davis as first element and John Coltrane as second element (see Nr. 3 below)
    • clear list will send you back to the page you came from, clear the list of selected elements and not display the relationship-box displayed.
    • help displays the help popup

    3. create relationship

    This page displays the two elements you have selected or choosen and proposes the possible relationships you can create in a drop down box:

      <example>
        Please chose the type of relationship
        Miles Davis [ is a fan of [v]] Prince
        Explanation:
          [Fandom means that...        ]
          [It is appropriate if ...    ]
          [but not to ...              ]
        Add Note: [___________________________________-]
       ["add relationship"]["choose other elements"]["cancel"]["help"]
      </example>
    
    • the drop-down box proposes the possible relationships in a directed full sentence. This means that if the two elements had been choosen the other way round it would propose
          Prince [ has the fan [v]] Miles Davis 
     
    • The explanation box must update everytime you choose a new type of relationship and give a full text explanation of the purpose of this type.
    • There is the ususal note field to add an EditNote
    • add relationship will create a moderation that adds this relationship to the db.
    • choose other elements will send you back to the choose elements page (Nr. 2 above)
    • cancel will clear the list of selected elements and send you back to the last artist/release/track page you came from without the relationship-box.
    • help still displays the help page.


    Outdated Models for the creation of relationships

    Creating a new relationship would go like this:

    1. Navigate to first entity (artist/release/track)

    2. Click on 'Create relationship' -> This gets you back to the same page with a big red relationship-box at the top of the page:

    • relationship-box: "relationship started from: 'ArtistName/ReleaseName/TrackName'. Please select more elements." The options are:
      • add URL This will lead you directly to the create-relationship page but with a URL field for the second element.
      • Help This is extremely important. It pops up a page explaining how the system works.
      • Cancel This flushes the list of elements.

    3. Navigate to second entity.

    4. Click on 'Create relationship' (note, that this is the same link as before!)

    4.1 If exactly two items have been selected this way, 'Create relationship' does not redirect you to the same page anymore but to the create-relationship page

    • create relationship page: "Add following relationship 'first entity' "select link type dropdown" 'second entity'?" The options are:
      • Enter relationship The link with selected link type gets entered into mod system
      • Add more elements It goes back to last page and lets user navigate more. The page still displays the relationship-box at the top of the page; this time with the last item selected.
      • Cancel flushes the list of selected elements and goes back to the last page without the relationship-box.

    4.2 If more than two items have been selected, 'create relationship' leads you to a select elements page:

    • select elements page: This page displays a list of all selected elements and a way to select two of them (the simplest are the current two selection widgets). Add a message: "select two elements that you wish to relate to each other and click 'Create relationship'. alternatively you can 'add more elements' or 'Cancel'.
      • Create relationship sends you to the create relationship page.
      • Add more elements sends you back to last page and lets user navigate more. The page still displays the relationship-box with the last item selected.
      • Cancel flushes the list of selected elements and goes back to the last page without the relationship-box.

    Note that I try

    1. to keep the number of different things the system does to a minimum. Basically it only does two things
      • It lets you select elements for relationships
      • It proposes the most probable action according to the number of elements you have chosen.
    1. to keep a consistent terminology thoughout the whole system:
      • 'create relationship' means to select elements for relationships.
      • thus it can only say 'enter relationship' when the elements to relate and the element type have been choosen.
      • It says relationship for relationships, element for elements, it could even say edit for moderations and thus completely refrain from using BadTerminology (at least not starting new one).

    The whole system is very much adapted to people who use one browser-window only and to people who use multiple windows. In the second case you will have both elements loaded on a page each, click 'create relationship' on one page, click 'create relationship' on the other page and be presented the create relationship page. Dead easy.



    First draft

    The current mechanism is tough for unexperienced users, but it is there. So I will try to suggest some improvements, that will make it easier to use for the average user.

    • Use the text descriptions like mentioned above. The the whole process of creating a relationship is quite straightforward then:
      1. Navigate to the two elements you want to relate to each other.
      2. Click on "create relationship"
      3. Select the two elements you want to relate to each other.
      4. Select the type of relation
      5. If you are confused by the proposed types of relationships, switch the order of the elements (Note: There should be a button that does this on the newlink-selecttype.html page (see below).)

    Help needed: Robert, I need an explanation, of how the current system works. Especially can you please answer the following questions:

    • How does the thing know which pages I have recently visited? Does it do this by tracking my session-ID? In this case just tell the user:
    • "To create a new link, select the two things you want to link together (one in the left column and one in the right), then click "Next". If the elements you want to link are not displayed here, then go back and navigate to these pages. The link editor keeps track of the last 10 pages you visited." Also right now it does not track track-pages (uh!). And it needs a field where the user can enter an arbitrary url.
    • Why are there two columns? I suppose it is just because there is no widget that lets you select exactly two elements, so you use two widgets that let you select exactly one element. In any case the order (whether you select artist--release or release--artist should not matter at that point. This only matters later if you select the actual type of relationship.

    Er, I'm not entirely clear on how it works yet. I really haven't read the source yet -- once I get  a chance to do that I will add more detail to these comments. 
    
    • The server doesn't keep track of the pages you just visited -- right now its invoked by hitting the 'Link' link on the artist/release page == that adds the item to the list of possible things to link. I'll have to think about the impact of tracking every users last 10 pages -- that might be a lot of extra load on the server. I'll have to think about it.
    • I had to stop and think about what the two columns meant when I first got to the page. I'm not set on that system -- anything that will make it more intuitive is fine by me.

    Let me stew on your suggestions and get back to you in a little bit. Ruaok


    I assume it is ok that the server keeps track of the elements where you clicked "link", if the system explains this to you.  Is there a specific reason why this feature is called 'link'? I would rather call it relationship. But then I am no native speaker...  --DonRedman 
    

    We can call the links anything we like -- remember that nothing is set in stone. I personally would prefer to see a system where you don't have to go to an artist, click on the 'link' link and then go to the next artist, click link there and then start setting up the link. Your approach of keeping track of the users last 10 pages is very user interface effiecent, but might be tough to implement cheaply. 
    

    What if we implement this plan:

    1. Navigate to first entity (artist, release, track)
    2. Click on 'Add relationship' -> Go back to same page with 'relationship started/added' message at the top of the page.
    3. Navigate to second entity
    4. Click on 'Create relationship'
      1. If two items have been selected, the create relationship page asks: Add following relationship 'first entity' ["select link type dropdown"] 'second entity'? Yes, Add more, cancel?
      2. If yes, the link with selected link type gets entered into mod system
      3. If add more, it goes back to last page and lets user navigate more. The next time the user clicks a 'create relationship' link, they start over again on the create relationship page.
      4. Cancel, drops the selected relationships and goes back to last page.
      5. If more than two items have been selected, then display a listbox with all the selected entities and a blank listbox below it. When the user selects a (first) entity in the top listbox, the bottom listbox contents change (via JS/or page reload) to show the possible entities the first entity could be linked to. The user can then select the target entity and the link type and click OK to submit the link into the moderation system.

    I think this approach is a lot more user friendly than two columns of radio buttons...

    -- Ruaok


    Relationship Types

    The average user should not be allowed to create a new type of relationship. I suggest that only select editors (or only AutoEditors) should be allowed to create or delete new types and only after discussion on the mailinglist. It is ok to let this open for everybody in the test period however.