While Amarok's current collection handling is pretty powerful, it is not really extensible. An example for the limitations of the current architecture is the DAAP media plugin. It would be a lot better if Amarok could use DAAP shares exactly like its own local collection, so that we could easily create smart and dynamic playlists which play music from a DAAP share. A similar problem exits for media devices: Amarok should be able automatically select and play songs from a friend's ipod or other media device. At the moment, you have to drag the songs into the playlist manually which is very annoying:)
I've created a class diagram in Umbrello which shows my proposed changes. Instead of inserting an image of it here, i am going to put it into SVN. That way you can read the comments I've added to the classes and methods and make changes to it.