goals vs requirements

Kristian Kvilekval <[email protected]> Thu, 30 Oct 2003 13:16:05 -0800
Newsgroups gmane.comp.audio.zinf.devel
Message-ID <1067548564.9588.95.camel@krispc>

In the past I have suggested these goals as a way of
guideing development.  I thought I would reiterate them
as we are discussing requirements:  Just for perusing.

1.  Make the player code independent from the UI.

    This would allow the UI and player to be developed seperately 
    and might allow use to substitute the player core as it becomes
    to old to support newer formats.   This would entail
    removing shared datastructures between the UI and the player.
    Using a simple list of URLs seemed like an appropiate datastructure
    at the time.   Loading a new playlist into the player would 
    be as simple as sending it a list of URLs to play (something
    like launching the player from command line).

    As strings are relatively cheap, the player could also send 
    the UI it's active list of URL's (playlist) and an index
    to indicate what it's currently playing.   

    These communications could be accomplished through a private
    channel (a socket, clipboard, or IPC, or even stdin/stdout).
    With stdin/stdout you could imagine the player actually
    running a text mode UI and recieving/reporting commands from/to
    the music browser running in a seperate process.


2.  Build a better/flexible metadata system

    Here the idea was to allow different users to use
    different levels of metadata.  A layered metadata
    model combining different sources of metadata (filenames, tags,
    web databases).     These sources were to be configurable.
    Some people want no metadata, others want alot.
    Another sub-goal was to allow arbitrary
    querying of metadata (i.e. tell me all songs that have 
    the same genre, beat pattern, artist).  
    Another sub-goal was to keep metadata out of player and the
    UI.. each component would simply make request to the metadata
    system to fill in the appropiate metadata.

    The mdb code is an initial stab in this   
    direction.  It still needs to be better integrated
    and  several modules need to be finished off (musicbrainz, plugins).
    
3.  Explore the concept of recursive playlists.

    Recursive playlists are and extension of the basic
    playlist mechanisms (m3u, pls files) to allow subplaylists
    to be played in line.    Using zinf meta URLs, they
    could also be used to generate dynamic lists of songs
    based on the current contents of the users music database (see    
    above).

    No other players really have this so maybe it's not
    the best idea,  but it seems pretty cool.   I think
    the basic system should support flat playlists
    possible adding the recursive playlists later.   


Design decisions:

1.  Make zinf two sub-projects (player vs. musicbrowser)

    This is taking a back burner for now.   No solid reason
    to do this other than the player core is creaking a little bit.
    However,  with new development I think this should be taken
    into consideration.   For this reason new data structures
    are being designed to be "channel friendly" i.e. they
    are trivial to serialize.


2.  MDB integration

    This is my main concern right now.   It should be fast
    even on slow machines (like mine) and not need a lot
    of code (take a look at the interaction between the old
    base/src/musiccatalog and ui/musicbrowser/unix/src/* )
    to maintain a consistent database.     The new model
     simpler and has more functionality.

3.  Flat or recursive (tastes great! Less Filling)

    I think the next version of zinf will probably have 
    flat lists unless someone really starts to develop
    this.  Eventually I would like to see this happen.

-- 
Kristian G. Kvilekval
email:[email protected] office:(805)893-4276 http://www.cs.ucsb.edu/~kris



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?   SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/