1. Adam Olsen
  2. exaile


exaile / FUTURE

NOTE: This file is for significant code changes and improvements that have a 
high probability of happening.  General feature requests and bugs should go
on launchpad instead.

add good album-level handling to xl.trax
    - what features are needed here?
    - current modules that need this:
        xl.playlist (for album shuffle)

backwards-incompatible changes to make (0.4?):
        use tuples instead of lists to store multiple values (saves 
                16 bytes or more per use)
        divide tracknumber and discnumber into separate tags 
                instead of using /
            - tracknumber/tracktotal, discnumber/disctotal, as picard uses
        get rid of __basedir and __compilation as they are unnecessary 
                and waste LOTS of space
            - replace __compilation with just an __is_compilation boolean 
                    flag, move heuristics elsewhere
            - basedir can be gotten with gio.File.get_basedir, no need to 
                    store it
        make db into a dir so it can be split into multiple files as needed
        use pickle instead of shelve to persist the database
            - scales better, more compact

        remove internal format in favor of an extension of XSPF
            - more future-proof, extensible, and compatible
            - use XML namespaces to separate exaile-specific tags

        make events capable of sending variable numbers of arguments
        change argument order to be more like gobject signals?
        make all events synchronous - event listeners can add async trivially
                with glib.idle_add or @common.threaded

        make settings have a registered default value, so that defaults
                don't have to be passed to EVERY instance of get_option.
            - maybe make type explicit too.
        store volume and mute separately so they persist properly.

TODO: figure out some way of dealing with Collections that have overlapping
    sets of Tracks - right now if you load both from disk one after the other
    one's data for the intersecting Tracks gets clobbered