Tales of software craftsmanship

Tales of software craftsmanship

GSoC update – The playlist sorting breadcrumb

The last time I wrote about multilevel playlist sorting in Amarok a few weeks ago, the backend work was mostly completed but the (temporary) GUI was fugly, just a bunch of comboboxes.

Not any more.

For Amarok 2.2, among other things, we are working on improving the consistency of the user experience by adding horizontal symmetry, so both the browsers pane (default left) and the playlist (default right) will look and feel similar. Those two areas already had very similar filter bars, and since a few days ago they also both have breadcrumbs.

Until recently, breadcrumb bars have been used almost exclusively in file managers, but there’s no reason why they couldn’t be used to express any sort of sequence of objects in a hierarchy. In Amarok 2.2, we are introducing this common and well understood GUI metaphor and using it to express new and complex operations. More than a month ago, Amarok developer Nikolaj Hald Nielsen implemented the breadcrumb concept in the browsers pane, where it’s used to easily navigate through the ever increasing list of Amarok’s music sources. We like to say that with Amarok 2 the world is your playlist, and the browsers breadcrumb bar is an ingenious way to bring the world’s music to the user’s playlist through our Internet services framework.

A few days ago I pushed to Amarok’s git repository a first version of a new breadcrumb interface, this one is used in the playlist. Every item in the breadcrumb represents a sorting level, or category. It doesn’t implement any kind of navigation (like usual breadcrumb bars), but so far we have found that it works remarkably well for expressing sorting schemes, which are nothing more than selections of nested objects of some kind. To express “sort by artist, and if the tracks have the same artist then by album, and if the tracks belong to the same album then by track number”, the user just has to “navigate” to “Artist > Album > Track number” in the breadcrumb bar, and the playlist view changes accordingly in real time. But what’s even better, and unlike usual “spreadsheet” sorting interfaces, this sorting method is technically a state and not an action, which means that the original track order is preserved and can easily be restored by clearing the contents of the breadcrumb bar.

The new Amarok playlist sorting interface

A few features are still missing before I can call this GSoC project “done” and I’m currently working on them, mostly sort order inversion and sort scheme bookmarking.


  • Reply Amarok user |

    Hey Téo!

    Sorting as a state an ingenious idea! I am off to compile now. 🙂


  • Reply anon |

    Looking great and intuitive this way. Just one thought I had when looking at the screenshot: How about putting “Sort by” next to the first icon of the breadcrumb just so that the purpose of this particular breadcrumb is abundantly clear even to newbies?

  • Reply Larso |

    Looks great, but I didn’t see how it’d be possible to select whether it’ll sort in ascending or descending order.

  • Reply Nikolaj Hald Nielsen |


    That part is still being worked on, along with some other neat tweaks, such as setting a level to “random” so you can basically shuffle a certain level (say, sort by artist, but shuffle the track sin each artist) or, of course, just set random as the only level and (non destructively, as you can always go back but clearing the breadcrumb) shuffle the entire playlist

  • Reply Amarok user |

    I tested it and it works great! One thing I would like to see added is an ability to reinstate the “state”, meaning to apply sorting again after manually shuffling items in a sorted list. Right now the only way to do this is to do a new breadcrum selection from scratch.


  • Reply Nikolaj Hald Nielsen |

    @Amarok User

    And you will get it! 🙂 We plan to implement a “bookmark” system exactly like the new one in the browser breadcrumb where you can setup the playlist exactly the way you like it (layout, sorting mode, filter, and possibly even “group by” settings), and then save a bookmark and later have an easy way to re-apply this state.

Post a comment