--------------------------------------------------------------------
TODO      DOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTO      TODO


If you are interested in contributing, subscribe to the OS/Perl
mailing list.  Send email to majordomo@parallax.co.uk with the
following in the body of your message:
  "subscribe perl-objectstore you@your.company.com"


Optimize for flexibility, then memory performance, then speed.

1. Flexibility
Flexibility is the most important because ObjectStore should be easy
to use and everyone complains that it can't do SQL.  We'll show 'em!

2. Memory Performance
Memory performance is also very important due to the potential size of
databases.  Small memory efficiency improvements in a 5TB database
have an impact.

3. Speed
Speed is pretty good already, compared to a relational database!  Not
that there isn't always room for improvement...


+ IDEAS +

ospeek
  style - raw, vanilla, etc...
  -depth switch?
Peeker
  fix comma - $o->comma, then check in $o->nl
  fix for "$at = " prefix ?

Restart read transactions without jumping up the stack!
  begin('update!',...)

Table3
  add_index should create a scratch cursor to speed fetch

ObjStore::FatTree
  hash based index

do autoclassloading upon open; maybe not, you don't know what to load

database access control API
  segment access control...?
  change_schema_key:
    delete database INC, checksum %INC, light up security flag
    open: require each %INC, verify checksums (unless some flags is set)

posh
  factor more!
  autodetect @INC modifications and print help message
  persist command history!
  tkposh ?

renovate thread specific stuff in ObjStore.xs

Threads!

use Error

_Per_segment_data is not free'd when no longer needed


+ VAGUE POSSIBILITIES +

pathexam
  invisibly auto-traverse references?

refactor XSHARED stuff

get_database
  factor
  os_server::get_databases() doesn't deal with bless

Split GENERIC into ODI & Splash parts!

use a hashing algorithm to speed up splash hashes!

factor error messages like diagnostics.pm

prune debugging stuff

Improve transaction memory management.  Go back to using doubly-linked
lists to destroy the bridge as soon as possible.

iterating over AVHV keys is broken - cursor is stored in the ossv_bridge
  unmagic the keys hash - make non-lazy?

propagate READONLY to the perl side?

posh
  improve pre/post eval logic
  $at->open('mvcc') ?
  Devel::Symdump->methods when peeking if blessed?
  Multiple sessions per user?  Who cares?
  Call system() when in ufs?  How about rawfs?

cache last lookup to avoid gv_fetchmethod(NOREFS)?

script to insure consistent podding? (get Pod::Parser?)

finish migration to OSPV_Cursor2

assignment to $SIG{SEGV} should not reset SEGV handler

transaction hooks?

depreciate os_object_cursor?

ObjStore::File!

automatically spooge $ObjStore::RUN_TIME if @ISA changes

install HTML versions of the pod files & gif image

notifications
  batch notify
  notify should in/out the string length - #SE057480_O#

Make XS code more efficient.  (How?)

Evolve the schema to eliminate this annoyance:  The object at 0xdff30194(</elvis/export2/os/tmp/perltest | 2 | 194>)(type "OSPV_hvdict"), contains a pointer at 0xdff301a0(OSPV_hvdict::OSPV_Generic::OSPV_Container::OSSVPV.classname) with the illegal value 0xe0582d28. The declared type "char" is incompatible with the type of the object at address </elvis/export2/os/tmp/perltest | 4 | 2d28>(OSPV_avarray::OSPV_Generic::OSPV_Container::OSSVPV::os_virtual_behavior|vtbl{os_virtual_behavior*}).  The type of this object is: OSPV_avarray.


+ BIGGISH PROJECTS +

Support for multiple application schemas (expected 1Q98)

Add support for parts of the TimeSeries Object Manager?


+ CORE-PERL WISH LIST +

The TIE interfaces are not as detailed as the built-ins.  I should be
able to hide whatever necessary complexity in the module that
implements the 'tie' so the user doesn't have to know anything
special.  How about lvalues?  How about proper support for nested
structures?
