Re: Re:Re: Requirements composed

Ed Sweetman <[email protected]> Mon, 27 Oct 2003 13:07:12 -0500
Newsgroups gmane.comp.audio.zinf.devel
Message-ID <[email protected]>
Ralf Engels wrote:
>>Message: 3
>>Date: Sun, 26 Oct 2003 17:16:42 -0500
>>From: Ed Sweetman <[email protected]>
>>To: [email protected]
>>Subject: Re: [Zinf-devel] Requirements composed
>>Reply-To: [email protected]
>>
>>Ralf Engels wrote:
>>
>>>Hi,
>>>I have written all the requirements together and added technical 
>>>requirements where usefull.
>>>Sadly there where much discussions about "how to do it" when the "what 
>>>to do" was not fixed.
>>>So, I would say that we should agree first on the requirement list and 
>>>then someone can propose a design (based on the current design).
>>>
>>>So, here goes the list:
>>>
>>>Requirements for Playlist handling in zinf.
>>>Sub-requirements are denoted with a point e.g. 3.1
>>>Technical requirements are with two point 3.3.3
>>>
>>>
>>>r1. there shall be a list with songs
> 
> ...
> 
>>>
>>>Playlist item requirements
>>>r101. the URI shall be the unique identifier of an item. URI is full 
>>>qualifyer like file://hallo.mp3
> 
> 
>>completely ignores the fact that i can add the same track twice in the 
>>playlist.  How is the URI supposed to be unique for that? Are you going 
>>to make zinf not support multiple iterations of the same track? That's 
>>stupid, not in just my opinion, but just about every player i've used 
>>allows multiple instances of the same track name.
>>
>>Two tracks
>>file:///this/is/another/track.mp3
>>file:///this/is/another/track.mp3
>>
>>How do i tell the playlist to remove the second one if i just do things 
>>like playlist-manager.remove("file:///this/is/another/track.mp3");
>>
>>You cant. URI's are not unique in the same branch.
> 
> 
> Can you spell URI? Unique Resource Identifier. It is unique.
> Of cause the list can include two times the same track but it is THE SAME
> TRACK.
> The same means "they are equal".
URI is universal resource identifier.

 From The Free On-line Dictionary of Computing (27 SEP 03) [foldoc]:

   URI

           {Universal Resource Identifier}



 From Hitchcock's Bible Names Dictionary (late 1800's) [hitchcock]:

   Uri, my light, my fire


 From Virtual Entity of Relevant Acronyms (Version 1.9, June 2002) [vera]:

   URI
        Universal Resource Identifier (WWW, RFC 1630)


that's from the unix dict command. I looked it up before i used it.


But the meaning of the word URI is besides the point.


How is my playlist manager or playlist supposed to know which instance 
of a duplicate track i want to move or remove if i'm just talking to it 
in URI's ...ie.  file:///some/path/song.mp3 ? I'll have two instances of 
it and with no other information, it has no way of figuring out which 
one i meant to manipulate.  And it does make a difference which one 
because say i had the two tracks in separate places of the playlist and 
needed them that way but had to move one of them.  What then? Will the 
player move both? move the one closest to the front or back of the list? 
There is no additional data to help the playlist decide which one i want 
to move.  So unless you're encoding an index in with the URI to 
differentiate duplicate tracks, there is no way to use URI's as unique 
identifiers in a playlist.  And if you'r encoding such indexes, there's 
no point in even bothering with URI's.  As there is no point in 
bothering with constructing everything around URI's in the first place 
since the program doesn't need to be able to read human readable track 
names in order to efficiently make those track names available to the 
user, and in fact as stated above, it's much less efficient and a 
hinderance to the program to do it that way.


> So, please what is so stupid about this, why are the same URIs not unique
> and what is a branch?
> 

in a playlist that has references to other sublists, a branch is a 
sublist, that sublist may also reference another sublist via zinf:// or 
another playlist file, in which case those are branches as well. The 
main list is also just a branch, it just happens to be branch 0.


>>>r102. the meta data of the item shall be determined on demand
>>>r102.1 No data shall be duplicated.
>>
>>should be specified where this occurs.  You're not allowed to pass 
>>pointers back to the Ui so obviously, the Ui is going to have to copy 
>>the data in the playlist manager. I believe the playlist should recieve 
>>pointers since it makes no sense to copy that data but it should be in a 
>>read-only manner.  Likely though, that wont be feasible.
>>
> 
> 
> The message has to be self contained. 
> In the current implementation a playlistitem can be deleted while the
> pointer is still in a message. 
> 
> I am in favour for just sending messages "something has changed" but this is
> a technical requirement and not the scope of this mail.

yea, anything but the playlist manager directly controlling the player's 
playlist is illegal.


> 
>>>r102.1 (logical extension) meta data of items with the same URL shall 
>>>not be doublicated
> 
> ...
> 
>>>
>>>To be clarified
>>>r104. It should be possible to read metadata from various sources
>>>(what sources are meant)
>>
>>files, online databases.
> 
> 
> How can you identify what meta-data to read? Can you please expain to me in
> detail how this should work and what the benefit for the user is?

Well, to certain users who care about metadata (i'm not one of them), 
they may want to query an online database for the metadata that perhaps 
certain files they have lack.  So once the metadata manager scans the 
file for the required metadata, since it wasn't in the database in the 
first place, it queries the online database. It's a sequence of trial 
and errors until it exhausts its options or it finds the data it needs. 
  This of course would be time consuming so it would be a user specified 
option.

> 
> 
>>>r105. Metadata should only be read from an external source on demand
>>>(why, what is an external source?)
>>
>>external is outside the database.

and of course by external, i mean files and online databases.  Zinf's 
own database is considered internal and less of a performance hog.

>>
>>
>>>r106. It should be possible to do searchs on cached metadata
>>>(search for what, what for?)
>>>
>>
>>search for any particular metadata field, for use in the UI.
>>
> 
> 
> This seems to me more a UI requirement and not a playlist specific. Anyway,
> I will add this to the requirements.
The ui needs to be able to do a search for a metadata field, it cant do 
this on it's own.
If you imagine that the metadata manager is inherited by the playlist 
manager, then you can have a generic virtual search method that takes 
all varieties of searches based on some regex syntax decided later and 
based on that can search based on simple playlist attributes or if it 
matches certain types of regex, call metadata manager's search method 
with the string and return it's results.   This way the UI only deals 
with one method to do it's searching, instead of having to have access 
to two classes and decide when to call which class to do which search.

All of those specifics are of course of out scope.

> 
> 
> 




-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/