Comment 14 for bug 487321

Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

I am not sure Tracker's goal is to store metadata about non-existing items (fx. if I delete an image Tracker also forgets that the image had a width of 500px, but I could be wrong). Indeed I may also download a file to a directory Tracker is not even monitoring.

The origin URL of a file is certainly something that Tracker should be storing - I am not arguing with that. However there is a semantic difference in "I have this file with inode X and it was downloaded from http://bar/foo.txt" and the statement "at 12:34:47 today I started a download of http://bar/foo into ~/foo.txt".

The log statement is valid disregarding the time and what you do to your files afterwards. The metadata property of the downloaded file is not a perpetual truth. That's why I think that this info is *also* data we should log.

Maybe the trick is really to consider a download as two events. The click on the download link and the act of saving/choosing the designated local file. Consider:

First I have my browser on http://wikipedia.org and I click the download link;

  interp.=VISIT_EVENT, origin=http://wikipedia.org, subject_uri=http://bar/foo.txt

Then when the download finishes:

  interp.=DOWNLOAD_EVENT, origin=http://bar/foo.txt, subject_uri=file:///tmp/foo.txt

This makes it a bit harder for apps to fibure out the website you had open when the download link was clicked, but it can be done rigorously with some clever templating in FindEventIds(). In words:

  Select 1 VISIT_EVENT event ordered by recency that has timestamp before download_event.timestamp, that has subject_uri=download_event.origin

Anyway - just think out loud. There may be more elegant ways to do this.