Nepomuk Collection

Matěj Laitl matej at laitl.cz
Fri Nov 9 15:35:28 UTC 2012


On 9. 11. 2012 Phalgun Guduthur wrote:
> Hello all

Hi,

> After a period of inactivity, I want to continue working on the Nepomuk
> plugin for Amarok and implement a few more features before it is shipped.

Good!

> These are the major problems of the plugin currently -
> 
>    - The collection takes some time to load  (10s for 2000 tracks). This is
>    because of the use of MemoryCollection.
>    To write my own QueryMaker, I need considerable amout of time as I'm
>    completely clueless about it. Any help on how to go about this would be
>    great.
>    Stecchino once mentioned to have a look at UPnP collections
>    implementation.

Yes, and also the SqlQueryMaker. The idea is to build the SPARQL query in the 
calls like addMatch(), addFilder() etc, and to run it asynchronously in the 
run method. You'll probably need a cache of "live" NepomukMeta entities (a map 
from Nepomuk URIS to Meta::* instances), something like SqlRegistry, although 
hopefully not that complicated.

>    - After a restart of Amarok, the tracks in the playlist view get fetched
>    from the Local Collection instead of Nepomuk collection. This is because
>    the Nepomuk collection slow loading of tracks.
> 
>    Is there a way to delay the fetching of meta data for tracks in the
>    playlist view until the Nepomuk collection is fully loaded?
>    The function Playlist::Model::metadataChanged(Meta::TrackPtr) must be
>    delayed.

Probably not. There are more flaws in our restore-tracks-from-urls code, so it 
maybe needs to be reworked. On the other hand, after you have your own 
QueryMaker, only thing a Nepomuk::Tracks needs to store will be the Nepomuk 
URI, other fields would be fetched using Nepomuk on demand. (perhaps with 
caching?)

Then you can create Nepomuk::Tracks really quickly in trackForUirUrl() and the 
problem goes away.

>    - Implementing Nepomuk::ResourceWatcher, so that tracks when changed by
>    other applications are reflected immediately in Amarok. This includes
>    addition of new tracks, deletion, change in metadata etc.
>    But this needs the code to be ported to Nepomuk2 ( The newer, sleeker
>    API of Nepomuk ). I'm finding it tough to get Nepomuk2 work on my
> machine.

Yes, please do the porting ASAP, reportedly it is mainly just a namespace 
change. Connecting Nepomuk::ResourceWatcher to Track::metadataChanged() should 
be trivial.

>    - Write back support - let the user edit meta data of his tracks through
>    Amarok. Right now the edit fields are all grayed out.

Yep. I suggest you assign this a lower priority than the NepomukQueryMaker 
though. Not strictly needed for Amarok 2.7, where we can label Nepomuk 
collection as "technology preview" if it lacks iportant features.

>    - Support for creating playlists

Nice, again lower priority than QueryMaker IMO, not needed for Amaork 2.7.

>    - Support for storing scores of tracks - needs ontology support which is
>    a whole different thing.

Score is IMO much less used than rating, first & last play, so low prio from my 
PoV.

> I write this seeking any sort of feedback on the above problems either on
> how to tackle them or their importance.
> 
> What do you think is the most important feature that should be implemented
> before the plugin is shipped?

QueryMaker and related refactor, if you think you can manage it by the end of 
November.

Cheers, high five and good luck,
	Matěj


More information about the Amarok-devel mailing list