TODO list for Perl module Nebulous

- make nebclient lib thread safe
- handle/check for storage volumes being offline
- move storage 'classes' into the database, cache at startup?
- use specific storage volume requests instead of ignoring them
- admin interface to control volumes (enable/disable, add/remove)
- add zeroconf support
- add support for SQL and/or Apache logging
- make copy replicate source attributes, implement as replicate/reparent?
- implement proper storage object rename support (same volume move w/o copy)
- redo database schema with foreign keys
- validation of URIs
- test that client->delete_instance removes the storage object too
- review caching of database statement handles
- code tiding/consistency
- file creation retrying
- server config file
- make Apache::DBI behave
- split SOAP out of Client.pm
- Perl client error string support with DBI like 'AutoRaise' exceptions
- CLI utilities
- write neb-fsck utility
- write Linux::statfs module so that statfs.f_bavail can be obtained (not available via df)
- change neb-ls to have a limit number of keys shown (-n) param and default to
  something reasonable (say 20)
- add multiple regex and/or glob support to neb-ls, eg. neb-ls -r 'foo.*' -r 'bar$'
- store the key name as an xattr on the actual on disk file
- add an neb-locate --reverse option to map uri/paths into keys

distant future
--
- cache some database tables (updated at some interval) 
- volume size/% in-use discovery
- server side per client lock tracking
- per client authentication
- client side lookup table of filehandles/locks
- Perl only?, scoped lock release/filehandle destruction
- restructure database so that storage objects are more like inodes
- add support for directories
- FUSE interface
- hot-spot analysis
