Amarok recently received support for the music sharing protocol known as DAAP, as part of our Google Summer of Code entry, thanks to developer Ian Monroe. Every week or two my sister and I prod each other about what new music we have managed to stumble across, but previewing it, and then copying it to our machines can be a small chore. Sharing our collections over the local network allows us to manage our own collections independently of each other. It’s as simple as connecting to the share and browsing the collection.
Since we like a fair amount of the same genres of music, it can be difficult to locate tracks which I don’t have in my collection already. I decided that it would be cool if Amarok would show me only the files which I did not have already in my local library, and it has become really quite useful.
Notice how many of the albums I already have are filtered out by the daap client. Neat! Whilst it isn’t working to my complete satisfaction (it does an exact match on tags in the database, and can be a little slow for large daap shares), I think it’s a cool feature that will be really neat to have. The next feature will be a “Copy to collection” option.
The other thing I really like about DAAP is that it isn’t limited to the local network. I can connect to a server on the other side of the world and stream music like it were a pick-your-own radio station.
For Amarok 2.0, one of the issues which came up at the multimedia meeting, was the abstraction of database backends to a proper object oriented architecture. This also included the possibility of using plugins, or using the inbuilt Qt SQL classes. I’ve noticed that they support a wide range of databases, which would be handy.
When this discussion came up originally, some concerns were voiced about the efficiency and flexibility of the classes, but primarily for the 3.3 release - that they were inefficient and difficult to work with.
Since we need to optimise our database queries, because they can be quite database intensive, it would be interesting to know if anybody has had any sort of experience with these classes in the reworked Qt4. Is the convenience of generic Qt sql classes outweighed by the flexibility and robustness?