$Id$

* run 'make todo' to get a list of todo comments from source

* when releasing do:
  * make check
  * cd po;intltool-update -M
  * make dist


* new tests
  * load songs and lookup the parts
    (e.g. bt_machine_get_pattern_by_id)
  * add test for trigger params

* new stats
  * http://www.chris-lott.org/resources/cmetrics/cyclo-2.0.tar.gz
    mcstrip tools.c | cyclo -c | sort -k2 -n

* quality checks
  for file in src/lib/core/*.c; do gtkdoc-depscan -v --book gstreamer-0.10:0.10.8 $file; done
  
* check translation markup
  podebug --rewrite=xxx buzztard.pot aa.po
  LC_ALL=aa ./buzztard-edit
  - this creates a translation with all strings wrapped by 'xxx' (Help -> xxxHelpxxx)
  - it is easy to see what is not marked for translation  

* sparse
  make CC=cgcc

* user docs
 * try getting e.g. the shortcuts table from our wiki
   http://freshmeat.net/projects/wt2db/
   http://wiki.blender.org/index.php/Meta/DocBook_to_Wiki


* gobject private members
  * we need guidelines for use of ->priv,
    when make members private, when public
  * we need some convention how to shorten all the
    object->priv->member statements
    * do once object_p=object->priv;
    * #define G_SELF self->priv

* song-io refactoring
  * problem
    * plugins support format variants:
      * native : "audio/x-bzt", "audio/x-bzt-xml"
      * bsl    : "audio/x-bmw", "audio/x-bmx"
    * when saving, we'd don't want to reparse the file-name to know what format
      has been selected.
    * simplify code in wave.c
  * done
    * BtSongIOFormatInfo
    * use sub-classes:
      BtSongIONative -> BtSongIONativeXML, BtSongIONativeBZT
  * todo
    * use sub-classes:
      BtSongIOBuzz   -> BtSongIONativeBMW, BtSongIONativeBMX
      (does it make sense here?)

* controller api
  * allow to modify interpolation control sequence inplace (scale time or value range)
    - we need a gst_interpolation_control_foreach(cs, callback, user_data)
    - the callback will be called for each controlpoint and can change the
      timestamp and/or value
    - need a way to do it without exposing GstControlPoint internals
      - void callback(GstClockTime *timestamp, GValue *value, gpointer user_data);

* migrate from libhal to libgudev
  udevadm info --export-db | grep -i input
  udevadm info --export-db | grep -i midi
  udevadm monitor --property 
  + attach detach devices to see if there is some property that uniquely identifies audio and midi ones

* undo/redo/journaling
  - links
    http://www.buzztard.org/index.php/Undo,_redo
    http://www.buzztard.org/index.php/Song_autosaving
  - we do that on the ui level (also the hournalling and the replay of it)
  - singleton journal object
    - each undo/redo capabale object registeres with its name there
    - on replay we can take the prefix og the entry and dispatch
    - on journalling we can probably add the prefix
    - it is a stack of journal entries
    
