Tales of software craftsmanship

Tales of software craftsmanship

Hacking Amarok’s playlist into submission


My name is Teo Mrnjavac and some of you might know me from my previous work on Amarok as a Summer of KDE student last year. Back then I implemented an interface for defining layouts by drag’n’dropping, which has been used for extracting tags, organizing the collection, ย defining playlist item layouts and also in Kopete for configuring contact list items as I’ve heard.

This year my Google Summer of Code proposal has been accepted and with the help of my mentor Nikolaj Hald Nielsen I’m embarking on a mission to make Amarok’s playlist the awesomest playlist ever.

The full title of the project as submitted is “Finish the playlist: multilevel playlist sorting with configuration interface”, which means that I’ll mostly be working on implementing multilevel sorting, plus some other related fixes.

The current implementation of the playlist view in Amarok has become much more configurable recently, allowing the user to customize the format of each item by dragging around tokens that represent the fields of the track’s metadata. However, there’s still no way to sort these items according to the content of the fields, forcing the user to move around the items manually to achieve the desired effect. This can be tedious and impractical even on small playlists.
A playlist is a list, and a user expects a list to be sortable. In this case, simple single level sorting just wouldn’t suffice: Amarok’s playlist is much more than a bunch of lines of text.
To reach feature-completeness with the Amarok 1.4 playlist, and to conquer an important milestone on Amarok’s road to eternal awesomeness, a nifty interface is needed to sort the tracks.
So during this GSoC season I plan to deliver multilevel sorting for the playlist, an interface to configure it and configurable grouping.

If all this was TL;DR (it would probably be for me), here’s a nice mockup of a possible multilevel sorting interface that shows off my mad Kolourpaint skills. Notice the thin multilevel sorting bar under the playlist search bar. It’s simple as that, the user would click the “+” to add the next sorting level through a menu.

At the end of my GSoC work the playlist would be considered feature complete.

Last year I was a very lazy blogger and now I would like to change that so I guess you can expect regular progress reports. I have been informed that failure to comply with the blogging requirements about my work this year will result in me feeling the Amarok community manager’s Long Pointy Stick Of Doooooooooooooooooooom (TM).



  • Reply tbocek |

    I like the way this addition is looking – as minimal as possible while still being discoverable. How would I change a level from ascending to descending – I’m assuming the arrows next to each element toggle that? And how would I remove a sorting element?

  • Reply gskbyte |

    I think this will be the killer feature of Amarok 2.1. I’d just like to have the ability of editing custom playlists (you load it, drag some songs, and then save it), it is very useful for “favourite-songs-playlists”.

    PD: I’m really happy because you are the first KDE developer who uses the Oxygen blog theme I did (and could improve), thank you!

  • Reply Keith Z-G |

    Cool, although……. any plans to re-implement the ability to drag and drop items from the playlist onto Konqueror/Dolphin? The inability to take things from the playlist and just throw them into a folder or an mp3 player is really the only thing stopping me from using Amarok 2 these days.

  • Reply Supreme1012 |

    I would love this feature and thank you for implementing it! I dont know how you feel about it, but personally I would break anyone’s long pointy stick of doom if they put it anywhere near me! but continue to blog! I read these blog posts every night as a way to stay in touch with KDE development.

  • Reply pilat |

    Please consider one thing, which might be very useful. I mean to add a special “Year OR Album” option into each selector, which means “Sort by year, but if it’s not defined, than sort by album”.

    I would prefer to have Albums to be listed chronological orders (not in alphabet), but it may happen that some files don’t have appropriate tag defined. In this case it’s useful to sort by album (especially, when albums are “numbered”, e.g. “#1 – My first album”; “#2 – …”).

    Also, I’m interesting if there is someone, who takes care about “Collections” appearance in the playlist?..

  • Reply Luis |

    I’m not trying to sound rude, but please, stop taking vertical space in Amarok. Please (the new line for configuring the info displayed on the playlist), it’s a feature users will use two or three times, or when they are bored, but it won’t be used nearly as much to deserve such a place on the main interface.

    Also, the drag and drop dialogue for configuring headers and the info, is pretty messed up, and very unintuitive (though, the idea itself is good).

    Anyway, kudos for you and the rest of the team.

  • Reply B. McFallen |

    Cheers mate! I wish you all the luck in this, as I’m about to start using Amarok (switching over to a good O.S. finally, and letting Vista die XD) and this would be a great feature. I’ve all ways wanted more control over the sorting of my music, and WMP and iTunes just does not cut it! Once again, good luck, and I’ll test it out for ya!


  • Reply Stefan Arold |

    Hi Teo,

    a sorting possibility for the playlist is the most important feature I still miss in Amarok 2. I’m not alone a lot of my friends which used to use Amarok 1.4 miss this in version 2. This is an easy thing to find a title, artist or album in short time, especially if you have a huge collection.
    Also it gives you the ability to sort your music by your own preferences. For me I like to sort my whole collection for example by title (from A to Z). I will wait for this feature and hope you can realize it within Amarok 2.1. You have done until now a great job. Thumbs up and many thanks.


  • Reply Teo |

    @tbocek the design is not yet finalized but the plan is to do something like clicking on the element or on the arrow to invert the order
    @gskbyte thank you for creating this awesome theme ๐Ÿ˜‰
    @Ian we’ll see… let me do the sorting first ๐Ÿ˜›
    @pilat I figure that would be pretty much doable with multilevel sorting as it’s planned. btw in the Amarok team I’m one of those who don’t fear feature creep that much so if it can be done without cluttering insanely the interface I’ll probably do it.
    @Luis that’s why the bar will be as thin as possible

Post a comment