=================
 Pixie Todo List
=================

-------------------------------------------------------------------------------
High Priority
-------------------------------------------------------------------------------

Clean up Test Suite
   o	need to flesh out test suite before work on the codebase can be done
   o	see t/README & t/TODO

Refactoring
    o	Code cleanup
    o	use Carp::confess()
    o	s/proto/class/

Fix Locking
    o	see docs/working-notes.txt
    o	need to fix DBI Store's lock_object_for() to do locking in the DB
	where possible.  Also what to do with locks when pixie's go away?
	This is largest source of deadlock at the moment.

Object Graph Table
    o	see docs/working-notes.txt

Deploy from Pixie.pm
    o	Pixie->is_deployed( $dsn );

Finish replacing Pixie::Info with Scalar::Footnote

-------------------------------------------------------------------------------
Medium Priority
-------------------------------------------------------------------------------

Fix Bugs
    o	Recursive Stuctures Bug
    o	check Pixie::Proxy::Overloaded, make sure it's working as expected
    o	what happens when Pixie goes away and is unable to unlock items?

Refactoring
    o	use strict & warnings in all classes
    o	find a way to split up Pixie.pm
		object tree manipulation is a good candidate.
    o	move class methods from Pixie::Name --> Pixie
    o	Subclass Pixie to handle Lock Strategies? (see docs/working-notes.txt)
    o	write a better Pixie::ObjectInfo->address
    o	use same type of accessors all the way through
    o	inherit from Pixie::Object all the way through
    o	split up Pixie::Proxy into subclasses & Pixie::Proxy::Base
    o	split off Pixie::Store::Base, maybe Pixie::StoreFactory ?
    o	standardize Store methods: store_at, get_object_at, delete_at ?
	maybe go with fetch/store/remove_object_at ?
	also: standardize what subclasses should deal with - ie: should
	they need to know about PIXIE::oid?
    o	looks like there's a lot of repeated code in the various Stores
    o	write Pixie::Rootset
    o	deploy() should return a new pixie connected to the store.
    o	timeouts should be part of a locking strategy
    o	use MySQL's InnoDB tables & transactions vs 'GET_LOCK'?
    o	Pixie::ObjHolder should have it's own class (Pixie::ObjectHolder ?)

Is 'px_lock_info' Needed?
    o	can't we do row-level locking?

Optimizations
    o	Use Data::Structure::Util::get_blessed instead of Data::Dumper to
	serialize objects before storing them
    o	Use MEDIUMBLOB px_flat_obj for mysql (for large objects)
    o	prepare most common statements in DBI stores

OID's should be objects
    o	Pixie::OID
    o	this will make them trivial to recognize, and will remove a limiting
	dependency on Data::UUID
    o	of course, they could always be strings like:
		<OID:...>
		<NAME:...>
	heck, they could be both.  blessed scalar refs even.

Refactor API
    o	introduce store(), fetch(), and remove()
    o	deprecate insert(), get(), get_object_named() and delete()

Hide The Current Pixie
    o	hide pixie with Scalar::Footnote

Pod
    o	start calling storage specs 'data source names (DSN)'
	(everybody knows this term)

Polymorphic Dispatch w/ Heritable::Types
    o	Get rid of case statements that work on the reftype of the object, and
	switch to using polymorphic dispatch with Heritable::Types instead.

Garbage Collection
    o	see docs/working-notes.txt

-------------------------------------------------------------------------------
Low Priority
-------------------------------------------------------------------------------

Bind Name to an Existing Object
    o	$px->bind_name( 'my name' => $oid );

Index By Class

Rootset Tracking
    o	what kind of tracking?

Hooks
    o	what kind of hooks?

Check Existing Tables on Deploy
    o	DBI::Default->deploy should check for existing tables.


-------------------------------------------------------------------------------
Nice To Have
-------------------------------------------------------------------------------

Generic Indexing

Formalize Error Handling?
    o	with the Error or Exception module?
    o	write-up some docs on error handling with Pixie.


__
EOF
